連載
» 2008年11月27日 00時00分 公開

フラッシュバックリカバリの基礎知識Oracleトラブル対策の基礎知識(4)(2/3 ページ)

[森坂康人,株式会社コーソル]

フラッシュリカバリ領域を利用するための設定

 フラッシュリカバリ領域を利用するためには以下の設定が必要です。

(1)初期化パラメータの設定

 以下の2つの初期化パラメータの設定が必須です。

a:DB_RECOVERY_FILE_DEST_SIZE
フラッシュリカバリ領域の最大サイズを指定します。
デフォルトでは0に設定されているため、フラッシュリカバリ領域を利用するためには必ず任意のサイズに設定しなければなりません。

b:DB_RECOVERY_FILE_DEST
フラッシュリカバリ領域の位置を指定します。
デフォルトはnullとなっていますので、フラッシュリカバリ領域を利用するためには必ず任意のディレクトリを指定しなければなりません。

 以下に、spfile使用時、

DB_RECOVERY_FILE_DEST → '/home/oracle/flash'
DB_RECOVERY_FILE_DEST_SIZE →4G

とした場合の具体的なパラメータ変更例を記載します。

 DB_RECOVERY_FILE_DESTは、DB_RECOVERY_FILE_DEST_SIZEを依存パラメータにしているため、先に設定しようとするとORA-02097、ORA-19802エラーが発生します。そのため、必ず先にDB_RECOVERY_FILE_DEST_SIZEを設定してから、DB_RECOVERY_FILE_DESTを設定してください。

 spfileでなくpfile使用時は、init>ORACLE_SID<.oraへ書き込み、インスタンスを再起動してください。

SQL>alter system set DB_RECOVERY_FILE_DEST='/home/oracle/flash' scope=both;
alter system set DB_RECOVERY_FILE_DEST='/home/oracle/flash' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE


SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE=4G scope=both;
System altered.
SQL>alter system set DB_RECOVERY_FILE_DEST='/home/oracle/flash' scope=both;
System altered.
SQL>show parameter DB_RECOVERY_FILE_DEST
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /home/oracle/flash db_recovery_file_dest_size big integer 4G

 なお、アーカイブログファイルの出力先として、既存の管理方法で指定するパラメータであるLOG_ARCHIVE_DEST_nと、DB_RECOVERY_FILE_DESTに異なるディレクトリを同時に設定した場合は、LOG_ARCHIVE_DEST_nの値が優先されてしまうため、注意が必要です。この場合はLOG_ARCHIVE_DEST_nをコメントアウトして対処します。

(2)アーカイブモードとフラッシュバックデータベースモードの有効化

 この作業は、フラッシュバックデータベース機能を有効にするために行うものなので、フラッシュリカバリ領域にフラッシュリカバリログを出力する場合には必要な作業ですが、アーカイブログファイルまたはバックアップファイル(もしくは両方)の出力先としてのみ使用する場合は必須ではありません。

 以下に、作業例を記載します。

 この作業はデータベースをマウントした状態で行う必要があります。また、アーカイブログモードで運用されていることが前提となります。非アーカイブログモードで有効にしようとした場合は、ORA-38706、ORA-38707エラーが発生するため、必ずアーカイブログモードにしてからフラッシュバックデータベースモードを有効にしてください。V$DATABASEビューのFLASHBACK_ON列が「YES」になっていることで確認できます。

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>startup mount ORACLE instance started.
Total System Global Area 239075328 bytes Fixed Size 2019864 bytes Variable Size 184552936 bytes Database Buffers 50331648 bytes Redo Buffers 2170880 bytes Database mounted.
SQL>archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 37 Current log sequence 41
SQL>alter database flashback on; alter database flashback on * ERROR at line 1:   ---この状態ではエラーが出る ORA-38706: Cannot turn on FLASHBACK DATABASE logging. ORA-38707: Media recovery is not enabled.

SQL>alter database archivelog; ---アーカイブログモードにする
Database altered.
SQL>archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 37 Next log sequence to archive 41 Current log sequence 41
SQL>alter database flashback on;
Database altered.
SQL>alter database open;
Database altered.
SQL>SELECT FLASHBACK_ON FROM V$DATABASE;
FLASHBACK_ON ------------------ YES
1 row selected.

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。