フラッシュバッククエリーに関する検証 その2

投稿日: 2002年1月16日

~フラッシュバッククエリーに関する検証 その2 ~
ペンネーム ちゃむ

前回はdbms_flashback権限を与えるところを説明したが、この機能は、UNDO_で
始まる初期化パラメータの設定がおおいに関係する。ここでは、以下の内容を簡
単におさえておこう。

AUTO に設定すると自動UNDO管理機能モードになります。つまりフラッシュバック
クエリーが使用できるという事だ。MANUAL(デフォルト)だと、従来どおりのロー
ルバックセグメントの管理(手動UNDO管理モード)になる。

UNDO表領域名を指定する。UNDO_MANAGEMENT=MANUALのときにこのパラメータを指
定するとエラーが発生するので注意

UNDO情報を保存する期間を秒単位で指定する。これを大きくすれば大きくするほ
ど、UNDO_TABLESPACEで指定されたテーブルスペースに大きいサイズが必要になる
はずである。

この値をTRUEにすると自動UNDO管理モードで手動UNDO管理モードの操作が行な
える。この「手動UNDO管理モードの操作」とは具体的にいうと、SET TRANSACTION
USE ROLLBACK SEGMENTやALTER ROLLBACK SEGMENT ONLINEなどのロールバックセ
グメントを明示的に指定して操作するコマンドである。
FALSE(デフォルト)の場合に、ALTER ROLLBACK SEGMENT ONLINEなどを行なうと
次のようなエラーが出力される。

ORA-30019 Automatic Undoモードのロールバック・セグメント操作は無効です

上記の初期化パラメータに関しては、何も設定しないと手動UNDO管理モードの設定
になる。以下のUNDO_MANAGEMENT、UNDO_TABLESPACEを見ればわかるが、
以下のV$PARAMETERのISDEFAULTでこの環境の初期化パラメータがデフォルト値がど
うか確認できる。UNDO_MANAGEMENT=AUTOのときに、ISDEFAULT=FALSEということは、
MANUALがデフォルトということである。

SQL> SELECT NAME,VALUE,ISDEFAULT FROM V$PARAMETER WHERE NAME LIKE 'UNDO%'

NAME                 VALUE                ISDEFAULT
-------------------- -------------------- ---------
undo_management      AUTO                 FALSE
undo_tablespace      UNDOTBS              FALSE
undo_suppress_errors FALSE                TRUE
undo_retention       900                  TRUE

ここで、フラッシュバッククエリーに関して掘り下げたいところだが、
Oracle9iから初期化パラメータ関連のファイルが増えている。ここで、
「初期化パラメータの値を変更したのに値が反映されていない!!」などと
混乱しない様に以下の内容をおえておこう。

<初期化パラメータの追加>

Oracle9iではこれまでのinit.oraに加え、spfile(Server Parameter File)
ファイルが追加された。これは、インスタンス起動中にALTER SYSTEMで動的に変更
たパラメータの変更が記録され、その後、データベースを再起動してもこの変更が有
効になる。従来であれば、とにかくinit.oraに依存して初期化パラメータの
値が設定されていたが、spfile.oraの設定の方が優先されることに注意しよう。
spfile.oraはバイナリファイルなので、直接エディタなどで編集してはならない。

spfileはas sysdbaでコネクトして以下のコマンドで作成される。

SQL> create spfile=’spfileora901.ora’ from pfile=’initora901.ora’;
File created.

作成した後は、ALTER SYSTEMのコマンドの内容が、spfileora901.oraに反映される。

<初期化パラメータの優先順位>

1.spfile.ora が存在すればこの内容が初期化パラメータにとして設定される。
2.spfile.ora が存在すればこの内容が初期化パラメータにとして設定される。
3.1.2.が存在しなければ従来どおりinit.oraの内容が初期化パラメータ
   にとして設定される。

UNIXでは、dbassistantなどでインストールするとおそらく、$ORACLE_HOME/dbsの下に、
spfile.ora、spfile.ora、init.oraが格納されているはずである。混乱して
しまうならspfile.ora、spfile.oraを削除して、init.oraだけ残せば従来どおり
の一つのパラメータファイルとなりわかりやすくはなる。

っと初期化パラメータだけで説明が終わってしまったが、次回こそフラッシュバッククエ
リーを使ってみる。

以上 青空と太陽が君を呼んでいる 茅ケ崎にて