Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトフラッシュバック・データベースを使用する


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【関連リンク】
フラッシュバック・データベースでリストアポイントを使用する
フラッシュバック・データベースで保証付きリストアポイントを使用する

フラッシュバックデータベースは、データベースを過去のある時点まで素早く巻き戻すことができます。
これにより、操作ミスなどの論理的な障害を復旧させることができます。

【実行した環境】
DB: Oracle 11.1.0.6.0
OS: Oracle Enterprise Linux V5

【実施手順】
1.フラッシュバック・データベースの設定
 (1)フラッシュリカバリ領域の最大サイズ指定
 (2)フラッシュリカバリ領域の場所指定
 (3)フラッシュバック可能時間の設定
 (4)特定表領域をフラッシュバック対象からの除外
2.フラッシュバック・データベースの有効化
 (1)フラッシュバック・データベースの有効化
3.フラッシュバック・データベースの実行
 (1)フラッシュバック・データベースの実行

【詳細手順】

1.フラッシュバック・データベースの設定
(1)フラッシュリカバリ領域の最大サイズ指定
「DB_RECOVERY_FILE_DEST_SIZE」パラメータを設定します。

デフォルト値はありません。ここでは5Gに設定します。
SQL> alter system set db_recovery_file_dest_size=5G scope=both;

システムが変更されました。

SQL> show parameter db_recovery_file_dest_size

NAME                                 TYPE
------------------------------------ --------------------------------- 
VALUE
------------------------------ 
db_recovery_file_dest_size           big integer
5G

(2)フラッシュリカバリ領域の場所指定
「DB_RECOVERY_FILE_DEST」パラメータを設定します。

デフォルト値はありません。ここでは/u01/app/oracle/flashback_area/orcl11g1に設定します。
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/flashback_area/orcl11g1' scope=both;

システムが変更されました。

SQL> show parameter db_recovery_file_dest

NAME                                 TYPE
------------------------------------ --------------------------------- 
VALUE
------------------------------ 
db_recovery_file_dest                string
/u01/app/oracle/flashback_area
/orcl11g1
db_recovery_file_dest_size           big integer
5G

(3)フラッシュバック可能時間の設定
必要に応じて「db_flashback_retention_target」パラメータを設定します。
ただし,(1)で設定したフラッシュリカバリ領域が小さい場合、本パラメータで設定した期間分のフラッシュバックが行えない場合がありますので、注意が必要です。

デフォルトは1440分ですが、ここでは720分に変更します。
SQL> alter system set db_flashback_retention_target=720 scope=both;

システムが変更されました。

SQL> show parameter db_flashback_retention_target

NAME                                 TYPE
------------------------------------ --------------------------------- 
VALUE
------------------------------ 
db_flashback_retention_target        integer
720

(4)特定表領域をフラッシュバック対象からの除外
フラッシュバック・データベースを行うためには、フラッシュバック・ログを保管するディスクが必要となります。
必要に応じてフラッシュバック・データベースの対象から特定表領域を除外することでフラッシュリカバリ領域の節約を行うことができます。

ここではUSERS表領域をフラッシュバックデータベースの対象外とします。
SQL> alter tablespace users flashback off;

表領域が変更されました。

SQL> select FLASHBACK_ON from v$tablespace where name='USERS';

FLASHBACK
--------- 
NO

2.フラッシュバック・データベースの有効化
(1)フラッシュバック・データベースの有効化

データベースを停止します。
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

データベースをマウントします。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  267825152 bytes
Fixed Size                  1299316 bytes
Variable Size             104860812 bytes
Database Buffers          159383552 bytes
Redo Buffers                2281472 bytes
データベースがマウントされました。

アーカイブログモードで運用されていない場合はアーカイブログモードに変更します。
SQL> archive log list;
データベース・ログ・モード     非アーカイブ・モード
自動アーカイブ                 使用禁止
アーカイブ先                    /u01/app/oracle/admin/orcl11g1/arch
最も古いオンライン・ログ順序   230
現行のログ順序               231
SQL> alter database archivelog;

データベースが変更されました。

SQL> archive log list;
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 有効
アーカイブ先                    /u01/app/oracle/admin/orcl11g1/arch
最も古いオンライン・ログ順序   230
アーカイブする次のログ順序    231
現行のログ順序               231

フラッシュバックデータベースを有効にします。
SQL> alter database flashback on;

データベースが変更されました。

データベースをオープンします。
SQL> alter database open;

データベースが変更されました。

3.フラッシュバック・データベースの実行
(1)フラッシュバック・データベースの実行
フラッシュバック・データベースを実行し、データベースをある特定の時間まで巻き戻しします。

ここではテストとして、test1.test1テーブルを使用します。
元々はCOL1=1のデータのみが存在しますが、COL1=2のデータを追加します。
また、時系列が分かり易いように、SQL*Plusでset time onを実行し、時刻を表示しています。
01:46:01 SQL> select col1 from test1.test1;

      COL1
---------- 
         1

01:46:05 SQL>
01:46:05 SQL> insert into test1.test1(COL1) values(2);

1行が作成されました。

01:46:10 SQL> commit;

コミットが完了しました。


01:46:10 SQL> select col1 from test1.test1;

      COL1
---------- 
         1
         2
         

フラッシュ・バックデータベースを実行するにはデータベースがマウント状態である必要があります。
オープン状態のまま実行すると「ORA-38757: データベースがマウントされ、FLASHBACKするようにオープンされていません。 」のエラーが発生します。
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  267825152 bytes
Fixed Size                  1299316 bytes
Variable Size             113249420 bytes
Database Buffers          150994944 bytes
Redo Buffers                2281472 bytes
データベースがマウントされました。

フラッシュバック・データベースを時刻指定で実行します。
今回は、データ追加前の「01:46:01」を指定します。
SQL> flashback database to timestamp timestamp'2009-11-05 01:46:01';

フラッシュバックが完了しました。

データベースをRESETLOGS指定でオープンします。
SQL> alter database open resetlogs;

データベースが変更されました。

以下のようにデータベース全体がデータ追加前の「01:46:01」に巻き戻されています。
SQL> select col1 from test1.test1;

      COL1
---------- 
         1


【関連リンク】
Oracle互換のデータベース
Oracle9iがWindowsXP SP2の外部接続
Eclipseで使えるOracleフロントエンド 「jOra」



以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:パーティショニングで仮想列を使用する(列に式を指定)
次ページへ:フラッシュバック・データベースでリストアポイントを使用する

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。