Oracleデータベースの使い方

Oracleデータベースは、オラクル社が開発・販売しているリレーショナルデータベース管理システムである。

ALERTログ

オラクルのプロセスからシステム・ログ・メッセージとエラー情報が出力されるファイルがALERTログである。

初期化パラメータ background_dump_dest に設定された値が格納場所となる。SQL*Plus から show parameter コマンドを実行することで、初期化パラメータを確認することができる。

$ sqlplus /nolog
SQL> connect / as sysdba
接続されました。
SQL> show parameter background_dump_dest

NAME                 TYPE   VALUE
-------------------- ------ ------------------------------
background_dump_dest string /oracle/product/10.2.0/Db_1/ad
                            min/orcl/bdump
SQL>

初期化パラメータ background_dump_dest が設定されていない場合は、$ORACLE_HOME/rdbms/log が格納場所となる。

ALERTログのファイル名はOSによって異なる。

ALERTログのファイル名
OS ログファイル名
Unix/Linux alert_SID.log
Windows SIDalert.log

ここで、SID はシステム識別子を表す。たとえば、システム識別子がorclの場合、UNIXでのALERTログのファイル名は alert_orcl.log となる。

バックグラウンド・トレース

バックグラウンド・プロセスからエラー情報が出力されるファイルがバックグラウンド・トレースである。

初期化パラメータ background_dump_dest に設定された値が格納場所となる。

バックグラウンド・トレースのファイル名はOSによって異なる。

ALERTログのファイル名
OS ログファイル名
Unix/Linux SID_プロセス名_PID.trc
Windows SIDプロセス名.trc

ユーザー・トレース

サーバー・プロセスからエラー情報とSQL文の統計情報が出力されるファイルがユーザー・トレースである。

初期化パラメータ user_dump_dest に設定された値が格納場所となる。SQL*Plus から show parameter コマンドを実行することで、初期化パラメータを確認することができる。

$ sqlplus /nolog
SQL> connect / as sysdba
接続されました。
SQL> show parameter user_dump_dest

NAME                 TYPE   VALUE
-------------------- ------ ------------------------------
user_dump_dest       string /oracle/product/10.2.0/Db_1/ad
                     min/orcl/udump
SQL>

ユーザー・トレースのファイル名はOSによって異なる。

ALERTログのファイル名
OS ログファイル名
Unix/Linux ORAPID.trc
Windows SID_ora_PID.trc

ALERTログやバックグラウンド・トレースは常に出力されるが、ユーザー・トレースは出力の有無を制御することができる。

並行性制御 (Concurrency Control)

並行性制御は悲観的ロックと楽観的ロックの2つに大別される。

悲観的ロック (Pessimistic Locking)は、トランザクション処理の最初でロックを獲得し、トランザクションがコミットあるいはロールバックされるまでロックを保持する。他のトランザクションからこのデータへのアクセスは、ロックが解放されるまで待たされる。

楽観的ロック (Optimistic Locking)は、データベース読み取り処理の直前にロックを獲得し、操作終了後、直ちにロックを解放する。データの更新時には、データベース更新処理の直前にロックを獲得し、トランザクション終了まで保持される。

トランザクション分離レベル

データベースにおけるトランザクション分離レベル(トランザクション隔離レベル)は、次の4つに分けられる。

分離レベル
分離レベル Dirty Read Non Repeatable Read Phantom Read
READ UNCOMMITTED 発生する 発生する 発生する
READ COMMITTED 発生しない 発生する 発生する
REPEATABLE READ 発生しない 発生しない 発生する
SERIALIZABLE 発生しない 発生しない 発生しない

大抵のデータベースでは、デフォルトの分離レベルはREAD COMMITTEDである。

Dirty Readでは、あるトランザクションが更新したコミットされていないレコードを他のトランザクションが読める。つまり、トランザクションが分離されていない。

Non Repeatable Readでは、あるトランザクションが同じレコードを何度も読み込む場合、そのレコードを他のトランザクションが更新を行ってコミットすると、読み取りタイミングによってレコードの値が異なる。

Phantom Readでは、あるトランザクションがデータを何度も読み込む場合、他のトランザクションがデータを挿入すると、読み取りタイミングによって結果が異なる。