ORACLEデータベースの使い方


このページでは、ORACLEデータベース、SQLの基礎知識からチューニングに関する情報など、実際に使えるサンプルを多数紹介しています。

ORACLEデータベースの使い方

ORACLEデータベースの基礎知識
【初心者向け】SQLとは?基礎から分かりやすく解説
バックグラウンドプロセスとは
データベースバッファキャッシュと共有プール
SGAとPGA

ORACLEの起動・停止
インスタンスの起動と停止コマンド
リスナーの起動と停止
OEMの起動と停止コマンド

SQLの基本構文
SELECT文の書き方:サンプル多数あり
INSERT文の書き方:サンプル多数あり
UPDATE文の書き方:サンプル多数あり
DELETE文の書き方:サンプル多数あり
LIKE条件の書き方:サンプル多数あり
CASE式の書き方:サンプル多数あり
DECODE関数の書き方:サンプル多数あり
IN条件の書き方
BETWEEN条件の書き方
WITH句の書き方や使い方
【SQL整形】ルールや方法まとめ:サンプル多数あり
やりがちな外部結合のミスや誤り

データベース
データベースを作成・削除するSQL
グローバルデータベース名を確認・変更するSQL

ユーザー
ユーザー(スキーマ)を作成・変更・削除するSQL
ユーザー(スキーマ)を丸ごとコピーする方法
ユーザー(スキーマ)の一覧を確認するSQL

オブジェクト・システム権限
権限とは?システム・オブジェクト権限について
システム権限を付与・取消するSQL
オブジェクト権限を付与・取消するSQL
ユーザに付与されている権限を確認するSQL
システム権限の一覧
オブジェクト権限を確認するSQL

ロール
ロールを作成・変更・削除するSQL
ロールを付与・取消するSQL
ロールの一覧を確認するSQL
ロールに付与されている権限を確認するSQL
ユーザに付与されているロールを確認するSQL

プロファイル
プロファイルを作成・変更・削除するSQL
プロファイルの一覧を確認するSQL

表領域
表領域を作成・変更・サイズ拡張・削除する方法
表領域の一覧や使用率を確認するSQL
一時表領域を作成・変更・サイズ拡張・解放・削除する方法

テーブル
テーブルを作成・変更・削除するSQL
テーブルの一覧やサイズを確認するSQL
テーブルの定義、列名一覧、名前(コメント)、DDLの確認方法
テーブルの列(カラム)を追加・変更・削除するSQL
計算せずにレコード件数、最大値、最小値、NULL値の個数を確認する方法
パーティションテーブルの一覧・件数・設定内容を確認するSQL
一時テーブルを作成するSQL

インデックス
インデックス(索引)を作成・変更・削除するSQL
インデックスの一覧を確認するSQL
ビットマップ・ファンクション・逆キー・パーティションインデックスの作成
グローバル索引とローカル索引の違いについて

ビュー
ビューを作成・更新・削除するSQL
マテリアライズドビューを作成・リフレッシュ・削除するSQL
ビューやマテリアライズドビューの一覧や定義を確認するSQL
マテリアライズドビューのリフレッシュ時にSELECTするとどうなるか。

シーケンス
シーケンスを作成・変更・削除するSQL
シーケンスの一覧を確認するSQL

トリガー
トリガーを作成・変更・削除するSQL
トリガーの一覧や定義を確認するSQL

プロシージャー・ファンクション・パッケージ
 →PL/SQLの使い方

シノニム
シノニムを作成・変更・削除するSQL
シノニムの一覧を確認するSQL

データベースリンク
データベースリンクを作成・変更・削除するSQL
データベースリンクの一覧を確認するSQL

ディレクトリ
ディレクトリオブジェクトを作成・変更・削除するSQL
ディレクトリオブジェクトの一覧を確認するSQL

ORACLE関数
文字列関数
集計関数
算術関数
日付関数
変換関数
数学関数

データの取得
SELECT文の書き方:サンプル多数あり
SELECTした列名を別名(エイリアス)に変更する方法
asでテーブル名やカラム名を別名に変更する方法
任意の文字数と一致・以上・以下のデータを抽出する方法
列の値・文字列の文字数を確認する方法
文字列を結合・連結する方法
列の値やNULL値を置き換える方法
空白やスペース、0、特定の文字を削除する方法
トリムで空白(スペース)を削除する方法
SUBSTR関数で文字列の一部を切り取り・抽出するSQL
文字列を小文字・大文字に変換する方法
SQLで変更されたレコードの差分・差異を取得
SELECT文でバインド変数を使って検索する方法
並び順を指定し、レコードを昇順・降順に並び替える方法
NULL値のソートの順を指定する方法

データの追加
INSERTで日付を登録する方法:サンプル多数あり
INSERT-SELECTの使い方:サンプル多数あり
INSERT文でNULLを置き換えて登録する方法
INSERTで列の値を空白埋めや0埋めする方法
レコードが存在しない場合だけINSERTする方法
INSERT文で重複を無視・チェック・回避する方法
INSERT文を自動作成する方法
DELETE-INSERTとUPDATEの違いや注意点
INSERTしたレコードが0件でもエラーにならない
INSERTでレコードが追加されないときの原因と対処
同じ値や同じデータのINSERTはできる?
INSERTでソート(sort)・並び替えは無効
INSERTで「値の個数が多すぎます」の対処法
INSERTで「値の個数が不足しています」の対処法
INSERT,UPDATE,DELETE文の取り消し

データの更新
文字列を一括置換する方法
UPDATEでNULL値に更新する方法
UPDATEでNULL値を空文字にする方法
UPDATEでNULLだったら更新しない方法
UPDATEで同じテーブルの値・別のテーブルの値で更新する方法
UPDATEでCASE式を使って更新する方法
UPDATEでテーブル名に別名(エイリアス)をつける
UPDATE文で更新対象なし0件でもエラーにならない
UPDATEで「nullには更新できません」の対処法

データの削除
DELETE文でNULLレコードを削除する方法
DELETEである表に存在しないデータを削除する方法
DELETE文でサブクエリ(副問合せ)を使う方法
DELETEとTRUNCATE・DROPテーブルの違い
DELETEで対象なし0件でもエラーにならない

データベース管理
ORACLEバージョンを確認するSQL
ORACLEクライアントのバージョンを確認する方法
オブジェクト(表や索引)の一覧やDDL文の確認方法
行ロック待ちセッションやロックされたテーブルの確認
起動中のプロセスやセッションの確認と強制終了(キル)する方法
エクスポート・インポートする方法

ツール
SQL実行ツールosqleditのオススメ設定
WindowsバッチでsqlplusからSQLを実行する方法
Windowsバッチでsqlplusの取得結果をCSVファイルに出力する方法
性能分析ツールStatspackのインストール方法
スナップショットの取得と設定変更

SQLが遅くなる原因
SQLが突然遅くなる原因と対応方法
SQLのレスポンスが遅い原因3つ
SQLで集約関数LISTAGGを使うと遅い!?
JOINを使って表結合するとSQLが遅い!?

パフォーマンスの調査
遅いSQL(処理時間が長い)と実行回数の多いSQLの確認方法
DISK読取回数の多いSQL(I/O負荷の高い)の確認する方法
SQLの実行計画を取得する方法
表や索引の統計情報を取得する方法
表の統計情報取得日を確認するSQL
PGA使用量を確認するSQL
ハードパースされた回数を確認する方法
本番環境に影響を与えずに索引を検証する方法

チューニングの基礎知識
テーブルやインデックスの統計情報とは
「統計情報が古い」とはどういうことか
オプティマイザと実行計画について
SQLの実行計画の見方
SQLのヒントとは
SQLヒントの書き方:サンプル多数あり
SQLに実装すべき3つのSQLヒント
実際に現場で使ったSQLのヒント句
SQLに複数のヒントの書き方
SQLにヒント句を追加するリスクやデメリット
インデックスの項目の順番の正しい付け方
索引(インデックス)を作成するリスクやデメリット
ハードパースとは
パフォーマンスを左右する待機イベント
SQLプロファイルとは
インデックスが使用されないケース
SQLがパラレル実行されない原因
1つのSQLにテーブルは何個まで書いて良い?
ブロックサイズによるI/O性能の違い
非標準ブロックサイズの表領域を作る方法
SQLチューニングアドバイザの結果は信頼できるのか?
SQLの実行計画をDB側・DBA側で固定すべきか
KEEPバッファにインデックス(INDEX)を置くべきかどうか
バッチ処理でSQLは遅くないけど、処理に時間がかかる原因
DBサーバのメモリを増やした方がいい理由

チューニング
SQLチューニングのコツ
SQLをパラレル実行する方法
インデックスによるチューニング(カバーリングインデックス)
SQLを変更せずにソートをチューニングする方法
ハードパースを削減する方法
レスポンスを遅くするソート処理が発生する原因
ソート処理が遅いときのチューニング方法
副問合せを使うSQLをチューニングする方法
GROUP BYが遅いときのチューニング方法
EXISTSを使って遅い場合のチューニング方法
WITHを使って遅い場合のチューニング方法
IN句の置き換えによるチューニング方法
IN句をEXISTS句に置き換えするチューニング方法
OR句の置き換えによるチューニング方法
アクセスの無駄をなくしてSQLを高速化する方法
毎回同じ値を返すファンクションをチューニングする方法
ワークテーブルを使ってSQLチューニングする方法
バッチ処理SQLチューニング方法3つ
インデックスを高速に作成・再構築する方法
表の断片化を解消する3つの方法

SELECT文のチューニング
SELECT文のチューニング方法まとめ
SELECT文が遅いときのインデックス作成によるチューニング方法
ビュー(VIEW)が遅い原因とSQLチューニング方法
マテリアライズドビューが遅い原因とSQLチューニング
テーブルアクセスフルスキャンを無くしてチューニングする方法
関数や式を使ったSQLをチューニングする方法
繰り返し実行するマスタ系の参照SQLをチューニングする方法
ExadataでSQLをチューニングする方法

INSERT文のチューニング
INSERT文のチューニング方法まとめ
たまに遅い&大量のINSERT処理のチューニング方法
主キーにシーケンスを使っている表へのINSERTのチューニング方法

UPDATE文のチューニング
UPDATE文が遅いときのチューニング方法

DELETE文のチューニング
DELETE文が遅いときのチューニング方法
テーブルのデータを全件高速に削除する方法

エラー
アーカイブログが一杯でDISK容量パンクの対処法
ORA-4031は共有プールの断片化が原因の可能性あり
バッチ処理が一時表領域不足で異常終了したときのレアな原因と対処法
LISTENERのポート番号を変更して上手くいかないときの対処法
OracleEnterpriseManagerSQLリアルタイム監視でエラー「java.sql.SQLException:クローズされた接続です」の原因
VPDのファンクションによるトラブル&対処法
データベース暗号化(TDE)に伴う性能劣化

学習方法
【独学可能】SQLの勉強方法とおすすめの本:分かりやすく解説
自宅で勉強用にORACLEデータベースを無償でダウンロードし構築する方法
おすすめのORACLE参考書まとめ
初心者にオススメのチューニングの参考書
DBのチューニング勉強方法
OracleMasterSilverに一ヵ月で合格した勉強方法
OracleMasterGold12cに一ヵ月で合格した勉強方法
OracleMasterExpertパフォチューに一ヵ月で合格した勉強方法