| Oracle Database バックアップおよびリカバリ基礎 10gリリース2(10.2) B19193-02 |
|
この章では、Oracle Flashback Databaseおよびリストア・ポイントの概要と、これらをデータ保護計画に組み込んだ場合の、設定、継続的な監視、およびこれらの機能に関連したメンテナンスについて説明します。
この章では、次の項目について説明します。
Oracle Flashback Database、通常のリストア・ポイントおよび保証付きリストア・ポイントを使用したリカバリの使用例の詳細は、第7章「フラッシュバックおよびデータベースのPoint-in-Timeリカバリの実行」を参照してください。
注意:
Oracle Flashback Databaseおよびリストア・ポイントは互いに関連するOracleのデータ保護機能で、不要なデータベースの変更を元に戻す場合に、Point-in-Timeリカバリより効率的な代替機能を提供します。この章では、最初にOracle Flashback Databaseの概要を説明し、次にリストア・ポイントの概要を説明します。
Oracle Flashback Databaseを使用すると、特定の時間枠内での不要なデータベースの変更による影響を無効にして、データベース全体を過去のある時点に戻すことができます。結果は、データベースのPoint-in-Timeリカバリと同じです。
リストア・ポイントは、Oracle Flashback Databaseおよび他のリカバリ操作に関連する機能を提供します。特に、保証付きリストア・ポイントでは、Oracle Flashback Databaseに対する補完機能が提供されるため、ユーザーがSCNを選択し、Oracle Flashback DatabaseをそのSCNに対して使用できるという要件が満たされます。ただし、保証付きリストア・ポイントと現在のSCNの間に存在するSCNに対しては必ずしも使用できるわけではありません。
リストア・ポイントおよびOracle Flashback Databaseは、それぞれ独立して使用することも、一緒に使用することもできます。いずれの場合でも、Recovery ManagerのFLASHBACK DATABASEコマンド、またはSQL*PlusのFLASHBACK DATABASE文を使用して、データベースを指定したSCNまで実際に戻します。次に例を示します。
FLASHBACK DATABASE TO RESTORE POINT 'before_upgrade'; FLASHBACK DATABASE TO SCN 202381;
Oracle Flashback Databaseのその他の一般機能の概要を説明した後で、保証付きリストア・ポイントの機能、2つの機能の相互作用、およびいずれかの機能または両方の機能を使用するように選択した場合のトレードオフについて説明します。
この項では次の項目を取り上げます。
Oracle Flashback Databaseには、Recovery Manager(FLASHBACK DATABASEコマンドを使用)とSQL*Plus(FLASHBACK DATABASE文を使用)の両方からアクセスできます。Oracle Flashback Databaseを使用すると、論理的なデータ破損またはユーザー・エラーからデータベース全体を迅速にリカバリできます。
機能は従来のPoint-in-Timeリカバリと同様で、データベースを過去の状態に戻すことができます。ただし、Oracle Flashback Databaseは、データ・ファイルをバックアップからリストアする必要がなく、アーカイブREDOログから適用する必要がある変更が少ないため、Point-in-Timeリカバリより非常に高速です。
Oracle Flashback Databaseを使用すると、データ・ファイルが正常であるかぎり、データベースに対する多くの不要な変更を元に戻すことができます。これには、データベースを以前のインカネーションの状態に戻すこと、つまりOPEN RESETLOGSの影響を取り消すことが含まれます。
|
注意:
不要なデータベースの変更を元に戻す際の |
Oracle Flashback Databaseは独自のロギング・メカニズムを使用して、フラッシュ・リカバリ領域に格納されるフラッシュバック・ログを作成します。Oracle Flashback Databaseは、フラッシュバック・ログが使用可能な場合にのみ使用できます。そのため、この機能を使用するには、フラッシュバック・ログを作成するように事前にデータベースを設定しておく必要があります。
Oracle Flashback Databaseを有効にするには、フラッシュ・リカバリ領域を設定し、フラッシュバックの保存ターゲットを設定して、Oracle Flashback Databaseで過去のどの時点のデータベースをリストアするかを指定します。
この時点以降、定期的に、すべてのデータ・ファイルで変更された各ブロックのイメージがフラッシュバック・ログにコピーされます。これらのブロック・イメージを後で再利用して、ログが記録された時点のデータ・ファイルの内容を再構築できます。
Oracle Flashback Databaseを使用してデータベースを過去の目標時点の状態にリストアする場合、その時点以降に変更された各ブロックは、目標時点の直前のフラッシュバック・ログにあるブロックのコピーからリストアされます。その後で、REDOログが使用され、ブロックがフラッシュバック・ログにコピーされた時点以降の変更が再適用されます。
FLASHBACK DATABASEコマンドをサポートするための十分なフラッシュバック・ログ・データが現在存在するSCNの範囲をデータベースのフラッシュバックの期間と呼びます。フラッシュ・リカバリ領域で空き領域が少なくなると、構成済の保存方針に必要なファイルのための領域を確保するために、フラッシュバック・ログが削除される場合があります。その結果として、データベースのフラッシュバックの期間がフラッシュバックの保存ターゲットより短くなる可能性があります。これは、フラッシュ・リカバリ領域のサイズ、保持する必要がある他のバックアップ、および必要とされるフラッシュバック・ロギングのデータ量によって決まります。
|
注意: フラッシュバックの保存ターゲットは、Oracle Flashback Databaseを使用できるという絶対の保証ではありません。 フラッシュ・リカバリ領域に、保存方針を満たすために保持する必要があるフラッシュバック・ログとファイル(アーカイブREDOログやその他のバックアップなど)の両方を格納できる十分な領域がない場合、その他のファイル用にフラッシュ・リカバリ領域に空き領域を確保するため、最も古いSCNからフラッシュバック・ログが削除される場合があります。 データベースのフラッシュバックの期間は、使用可能なフラッシュバック・ログにある最も古いSCNより前には拡張できません。フラッシュバック・ログは、フラッシュ・リカバリ領域以外にはバックアップできません。このため、データベースのフラッシュバックの期間を満たすために十分なログをより確実に保持するには、フラッシュ・リカバリ領域で使用できる空き領域を最大化します。詳細は、「フラッシュバック・ログを格納するためのフラッシュ・リカバリ領域のサイズ設定」を参照してください。 また、表領域の削除やデータ・ファイルの縮小など、データベースに対して実行できる操作の多くは、Oracle Flashback Databaseを使用して無効にすることができません。このような操作の後では、データベースのフラッシュバックの期間は、その操作の直後の時点から開始されます。
データベースのフラッシュバックの期間が十分に長くないために Oracle Flashback Databaseを使用して特定の時点に戻すことが可能であることを保証したり、フラッシュバックの期間のサイズを保証する唯一の方法は、保証付きリストア・ポイントを使用することです。保証付きリストア・ポイントおよびOracle Flashback Databaseの詳細は、「保証付きリストア・ポイント」を参照してください。 |
通常のリストア・ポイントを作成すると、リストア・ポイント名が特定の時点またはSCNに割り当てられます。これは、ブックマークまたは別名のようなもので、SCNを指定する場合の省略表現として、RESTORE POINT句を認識するコマンドで使用できます。
取り消す必要が可能性としてあるような操作を実行する前に、通常のリストア・ポイントを作成できます。リストア・ポイントの名前とSCNは、制御ファイルに記録されます。このため、後でOracle Flashback Database、Oracle Flashback TableまたはPoint-in-Timeリカバリを使用する必要がある場合は、時刻書式やSCNのかわりにリストア・ポイントの名前を使用して目標時点を参照できます。後で取り消すような操作を実行する前に通常のリストア・ポイントを定義すると、事前にSCNを手書きで記録したり、問題が発生した後でOracle Flashback Queryなどの機能を使用して正しいSCNを調査する必要がなくなります。
通常のリストア・ポイントは、非常に軽量なものです。制御ファイルには、データベースのパフォーマンスに影響を与えることなく、数千もの通常のリストア・ポイントの記録を保持できます。通常のリストア・ポイントは手動で削除しない場合、最終的には制御ファイルで期限切れになるため、継続的なメンテナンスは必要ありません。
次のコマンドでは、リストア・ポイントを使用してターゲットSCNを指定できます。
通常のリストア・ポイントと同様に、保証付きリストア・ポイントはリカバリ操作時にSCNの別名として使用できます。ただし、これはOracle Flashback Database機能の使用に関連する個別の機能も提供します。
特定のSCNで保証付きリストア・ポイントを作成すると、フラッシュバック・ロギングがデータベースで無効な場合でも、Oracle Flashback Database操作を実行して、データベースをそのSCNの時点の状態に戻すことができるという要件が満たされます。フラッシュバック・ロギングが有効な場合、保証付きリストア・ポイントを作成することで、最も古い保証付きリストア・ポイントが作成された時点以降の任意の時点までデータベースをフラッシュバックするのに必要なフラッシュバック・ログが保持されます。
保証付きリストア・ポイントを使用すると、フラッシュ・リカバリ領域に必要なログを格納するための十分なディスク領域があるかぎり、データベース全体を数日前または数週間前の正常な状態に戻すことができます。Oracle Flashback Databaseの場合と同様に、保証付きリストア・ポイントを使用して、ダイレクト・ロード・インサートなどのNOLOGGING操作の影響を無効にすることもできます。
実際には、保証付きリストア・ポイントは、大規模なデータベースの更新、アプリケーションのパッチ・インストールや更新など、危険を伴う操作の前にデータベースを保護するために使用されるストレージ・スナップショットの有効な代替方法として提供されます。スナップショットや複製データベースを作成し、これに対して操作をテストするのではなく、必要なフラッシュバック・ログが保持されていることを確認し、プライマリ・データベースまたはスタンバイ・データベースで保証付きリストア・ポイントを作成してから、危険を伴う操作を実行できます。
Oracle Flashback Databaseおよび保証付きリストア・ポイントのロギングは、変更が適用される前のデータ・ファイル・ブロックのイメージを取得して行われます。このため、このイメージを使用すると、FLASHBACK DATABASEコマンドを実行することで、データベースを以前の状態に戻すことができます。
通常のフラッシュバックのロギングと、保証付きリストア・ポイントのロギングとの主な違いは、ブロックが記録されるタイミングと、フラッシュ・リカバリ領域の領域圧迫に応じてログが削除できるかどうかに関係します。これらの違いは、ログに使用する領域およびデータベース・パフォーマンスに影響します。
データベースのフラッシュバック・ロギングを有効にするかどうか、または保証付きリストア・ポイントを使用するかどうか、あるいはこの両方を行うかどうかは、リカバリ可能性の目的と、これらの機能を個別に使用した場合および同時に使用した場合のパフォーマンスと領域の使用量の予測によって異なります。
保証付きリストア・ポイントを作成した場合は、データベース全体のフラッシュバック・ロギングを有効にしているかどうかに関係なく、フラッシュ・リカバリ領域で使用可能な領域を監視する必要があります。フラッシュ・リカバリ領域内のファイルが保証を満たすために必要である場合、そのファイルは削除対象にはなりません。このため、保証を満たすために必要なフラッシュバック・ログとその他のファイル、およびバックアップの保存方針を満たすために必要なファイルの保持によって、フラッシュ・リカバリ領域が完全に一杯になってしまう可能性があります。
|
注意: 保存方針によって義務付けられている要件や保証付きリストア・ポイントのために、フラッシュ・リカバリ領域に削除対象となるファイルがない場合、データベースはディスクの領域不足が発生した場合と同じように動作します。多くの場合、これによってデータベースが停止します。フラッシュ・リカバリ領域が一杯になった場合の影響については、「フラッシュ・リカバリ領域で領域が使用不可の場合」を参照してください。 |
Oracle Flashback Databaseのロギングが無効な場合に保証付きリストア・ポイントを作成すると、保証付きリストア・ポイントの時点以降にデータ・ファイル・ブロックが最初に変更される際、変更前のブロックのイメージがフラッシュバック・ログに格納されます。このため、フラッシュバック・ログには、保証付きリストア・ポイントが作成された時点で変更されているすべてのデータ・ブロックの内容が格納されます。ただし、その後では、同じブロックに対する変更があっても、そのブロックの最終変更以降に別の保証付きリストア・ポイントが作成されないかぎり、ブロックの内容が再び記録されることはありません。
この方法のロギングでは、次のような重要な因果関係があります。
FLASHBACK DATABASEを使用して、保証付きリストア・ポイントの時点でのデータ・ファイルの内容を再作成するために使用できますが、FLASHBACK DATABASEは、Oracle Flashback Databaseのロギングが有効であるかぎり、保証付きリストア・ポイントと現時点の間の時点に戻すためには使用できません。データベースを中間の時点に戻す必要がある場合、それが可能なのはデータベースのPoint-in-Timeリカバリのみです。
保証付きリストア・ポイントを作成した時点にデータベースを戻す必要がある場合、一般的には、Oracle Flashback Databaseのロギングを無効にして、保証付きリストア・ポイントのみを使用する方がより効率的です。たとえば、本番データベース・サーバーで週末にアプリケーションのアップグレードを実行する予定がある場合は、アップグレード・プロセスの開始時に保証付きリストア・ポイントを作成することで、このプロセスが失敗に終わっても、バックアップからデータベースをリストアするかわりに、FLASHBACK DATABASEを使用して変更を取り消すことができます。
Oracle Flashback Databaseが有効で、1つ以上の保証付きリストア・ポイントが定義されている場合、データベースでは通常のフラッシュバック・ロギングが実行されます。これによって、パフォーマンスのオーバーヘッドが発生したり、データベースの動作パターンによっては、フラッシュ・リカバリ領域で重大な領域圧迫が発生する可能性があります。このような場合でも、Oracle Flashback Databaseの通常のロギングとは異なり、フラッシュ・リカバリ領域には、フラッシュバック・ログが常に保持されます。このログは、FLASHBACK DATABASEを使用して、現在定義されている最も古い保証付きリストア・ポイントまでの任意の時点に戻すために必要です。フラッシュバック・ログは、保証を満たすために必要な場合、領域圧迫に応じて削除されることはありません。
この使用例では、FLASHBACK DATABASEをフラッシュバックの期間内の任意の時点に対して柔軟に使用でき、保証付きリストア・ポイントによる確実性がありますが、保証をサポートするためには、フラッシュ・リカバリ領域で使用される領域を監視する必要があります。詳細は、「保証付きリストア・ポイントの領域使用状況の監視」および「フラッシュ・リカバリ領域におけるフラッシュバック・ログ用の領域管理」を参照してください。
この項では、通常のリストア・ポイントと保証付きリストア・ポイントの管理に使用するコマンドについて説明します。この項では次の項目を取り上げます。
保証付きリストア・ポイントの使用をサポートするには、データベースは次の要件を満たす必要があります。
COMPATIBLE初期化パラメータを10.2以上に設定する必要があります。
FLASHBACK DATABASE操作を使用してデータベースを保証付きリストア・ポイントに戻すには、リストア・ポイントの前後のアーカイブREDOログを使用する必要があります。
通常のリストア・ポイントまたは保証付きリストア・ポイントを作成するには、SQL*Plusで、リストア・ポイントの名前を指定し、保証付きリストア・ポイントであるか通常のリストア・ポイント(デフォルト)であるかを指定してCREATE RESTORE POINT文を使用します。
リストア・ポイントの作成時に、データベースがオープンまたはマウントされている可能性があります。データベースがマウントされている場合、(フィジカル・スタンバイ・データベースでないかぎり)正しく停止されている必要があります。
通常のリストア・ポイントの作成方法の例を次に示します。
SQL> CREATE RESTORE POINT before_upgrade; Restore point created.
保証付きリストア・ポイントの作成方法の例を次に示します。
SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE; Restore point created.
現在定義されているリストア・ポイントのリストを表示するには、V$RESTORE_POINT制御ファイル・ビューに次の問合せを発行します。
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE FROM V$RESTORE_POINT;
各リストア・ポイントの名前、リストア・ポイントが作成されたSCN、壁時計時刻およびデータベースのインカネーション番号、各リストア・ポイントが保証付きリストア・ポイントであるかどうか、およびそのリストア・ポイントへのOracle Flashback Database操作に必要な情報を保存するために使用されるフラッシュ・リカバリ領域の量を表示できます。
また、次の問合せを使用して、保証付きリストア・ポイントのみを表示することもできます。
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE FROM V$RESTORE_POINT WHERE GUARANTEE_FLASHBACK_DATABASE='YES';
通常のリストア・ポイントの場合、STORAGE_SIZEが0(ゼロ)になります。保証付きリストア・ポイントの場合、STORAGE_SIZEは、フラッシュ・リカバリ領域のディスク領域の容量を示します。この領域は、そのリストア・ポイントに対するFLASHBACK DATABASEを保証するために必要なログの保持に使用されます。
V$RESTORE_POINTの列の詳細は、『Oracle Databaseリファレンス』を参照してください。
既存のリストア・ポイントが不要であることを確認した場合、または既存のリストア・ポイントの名前を使用して新しいリストア・ポイントを作成する場合は、SQL*Plus文DROP RESTORE POINTを使用して、リストア・ポイントを削除できます。次に例を示します。
SQL> DROP RESTORE POINT before_app_upgrade; Restore point dropped.
同じ文を使用して、通常のリストア・ポイントおよび保証付きリストア・ポイントの両方を削除できます。
保証付きリストア・ポイントは、制御ファイルで期限切れになることはありません。これらは、明示的に削除されるまで保持されます。
保証付きリストア・ポイントがデータベースに定義されている場合は、保証を満たすために必要なファイルのために、フラッシュ・リカバリ領域で使用されている領域の容量を監視する必要があります。保証付きリストア・ポイントを表示する問合せ(「リストア・ポイントのリスト」を参照)を使用し、STORAGE_SIZE列を参照して、各保証付きリストア・ポイントに関連するファイルに必要な領域を決定します。フラッシュ・リカバリ領域の合計の使用量を確認するには、「V$RECOVERY_FILE_DESTおよびV$FLASH_RECOVERY_AREA_USAGEの使用」で説明した問合せを使用します。
この項では、Oracle Flashback Databaseの計画、これを使用するためのデータベースの構成、および有効なメンテナンス、監視、チューニング手順について説明します。
この項の内容は、次のとおりです。
Oracle Flashback Databaseでは、コマンドの実行時に存在するデータ・ファイルに対する変更が取り消されるため、次の制限事項があります。
FLASHBACK DATABASEは、制御ファイルのリストアまたは再作成の前の時点に戻すために使用することはできません。
可能であれば、Oracle Flashback Databaseでは、NOLOGGING操作と重なる目標時点またはSCNを使用しないでください。また、影響を受けるデータ・ファイルに対してNOLOGGING操作の直後の全体バックアップまたは増分バックアップを実行して、操作後の時点にリカバリできるようにします。Oracle Flashback Databaseを使用して、ダイレクト・パス・インサートなどの操作を実行中の時点にデータベースを戻す予定がある場合、操作をLOGGINGモードで実行することを検討してください。
NOLOGGINGモードをサポートしている操作の詳細は、『Oracle Database SQLリファレンス』のlogging_clauseの説明を参照してください。
Oracle Flashback Databaseを有効にするための要件は、次のとおりです。
ARCHIVELOGモードで実行している必要があります。
Oracle Flashback Databaseのロギングを有効にするには、DB_FLASHBACK_RETENTION_TARGET初期化パラメータを設定し、ALTER DATABASE FLASHBACK ON文を発行します。次の手順を実行します。
SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT;
DB_FLASHBACK_RETENTION_TARGETに、フラッシュバックの期間の長さを分単位で設定します。
SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; # 3 days
デフォルトでは、DB_FLASHBACK_RETENTION_TARGETは1日(1440分)に設定されます。
SQL> ALTER DATABASE FLASHBACK ON;
デフォルトでは、すべての永続表領域用のフラッシュバック・ログが生成されます。必要に応じて、特定の表領域のフラッシュバック・ロギングを無効にして、オーバーヘッドを軽減できます。
SQL> ALTER TABLESPACE tbs_3 FLASHBACK OFF;
表領域のフラッシュバック・ロギングは、次のコマンドを使用して、後で再度有効にできます。
SQL> ALTER TABLESPACE tbs_3 FLASHBACK ON;
表領域に対してOracle Flashback Databaseを無効にする場合は、FLASHBACK DATABASEを実行する前に、データ・ファイルをオフラインにする必要があります。
次のコマンドを使用して、データベース全体のフラッシュバック・ロギングを無効にできます。
SQL> ALTER DATABASE FLASHBACK OFF;
フラッシュバック・ロギングは、スタンバイ・データベースでも有効にできます。スタンバイ・データベースでOracle Flashback Databaseを有効にすると、そのスタンバイ・データベースでOracle Flashback Databaseを実行できます。Data Guard環境では、スタンバイ・データベースでOracle Flashback Databaseを有効にすると様々な用途に使用できます。詳細は、『Oracle Data Guard概要および管理』を参照してください。
Oracle Flashback Databaseを使用する場合、フラッシュバック・ログと、フラッシュ・リカバリ領域に格納される他のファイルを保持するために、フラッシュ・リカバリ領域にさらに領域を追加する必要があります。
DB_FLASHBACK_RETENTION_TARGET初期化パラメータの設定は、間接的にデータベースが保持するフラッシュバック・ログ・データの量を決定します。一定期間にデータベースによって生成されるフラッシュバック・ログのサイズは、大幅に変化する可能性がありますが、それは特定のデータベース・ワークロードによって異なります。一定期間におけるデータベースの更新によって影響されるブロック数が多いほど、その期間に生成されるフラッシュバック・ログ・データによって使用されるディスク領域は大きくなります。
V$FLASHBACK_DATABASE_LOGビューは、フラッシュ・リカバリ領域に追加するフラッシュバック・ログ用の領域の量を見積もる場合に有効です。Oracle Flashback Databaseのロギングを有効にし、フラッシュバックの保存ターゲットを設定すると、一定期間データベースを通常のワークロードで実行して、フラッシュバック・ログの典型的なサンプルを作成することができます。その後、次の問合せを実行します。
SQL> SELECT ESTIMATED_FLASHBACK_SIZE FROM V$FLASHBACK_DATABASE_LOG;
Oracle Flashback Databaseを有効にした後のデータベース・ワークロードに基づいて、現行のフラッシュバックの保存ターゲットに対応するために必要なディスク領域の見積りが計算されて戻されます。予測されるデータベースのフラッシュバック・ログを保持するには、$FLASHBACK_DATABASE_LOG.ESTIMATED_FLASHBACK_SIZEに指定されたディスク領域のサイズをフラッシュ・リカバリ領域のサイズに追加します。
フラッシュ・リカバリ領域内の使用領域は、保存方針に従って保持する必要があるバックアップとアーカイブ・ログ、および削除の対象となるその他のファイル(フラッシュバック・ログ、すでにテープにバックアップしたがディスクにキャッシュされているバックアップなど)の間で、常に調整されます。他のバックアップの保存要件は満たしていても、フラッシュ・リカバリ領域にフラッシュバック・ログを格納するための十分な領域が割り当てられていない場合は、領域を確保するために、リカバリ領域からフラッシュバック・ログが削除される場合があります。
フラッシュ・リカバリ領域のフラッシュバック・ログは直接管理することはできませんが、フラッシュバックの保存ターゲットを設定するか、保証付きリストア・ポイントを使用すると管理できます。ただし、データベースのフラッシュバック・ログの保持に使用可能な領域を最大化するために、フラッシュ・リカバリ領域を全体として領域管理できます。このようにして、フラッシュバックの保存ターゲットが確保される可能性を高くします。
フラッシュバック・ログ用に領域を確保するには、BACKUP RECOVERY AREA、BACKUP BACKUPSETなどを使用して、フラッシュ・リカバリ領域のその他の内容をテープにバックアップします。ファイルのテープへのバックアップを完了した後で、DELETEコマンドを使用し、フラッシュ・リカバリ領域からそのファイルを明示的に削除します。この方法でも、バックアップの保存方針およびフラッシュバックの保存ターゲットを満たす十分な領域が作成されない場合は、フラッシュ・リカバリ領域にさらに領域を割り当てます。
次の規則によって、フラッシュ・リカバリ領域におけるフラッシュバック・ログの作成、保持、上書きおよび削除が管理されます。
FLASHBACK DATABASEを使用するために、そのREDOログ・ファイルを使用する必要があるフラッシュバック・ログも削除されます。
フラッシュバック・ロギングが有効な場合は、V$FLASHBACK_DATABASE_LOG.OLDEST_FLASHBACK_SCNおよびV$FLASHBACK_DATABASE_LOG.OLDEST_FLASHBACK_TIMEを問い合せて、データベースのフラッシュバックの期間で最も古いSCNを確認できます。次に例を示します。
SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;
この問合せの結果で、このデータベースのフラッシュバックの期間ではフラッシュバックの保存ターゲットが満たされないことが恒常的に示される場合は、より多くのフラッシュバック・ログを格納するために、フラッシュ・リカバリ領域を増やす必要がある可能性があります。
Oracle Flashback Databaseを使用してフラッシュバック可能な最新のSCNは、データベースの現在のSCNです。次の問合せを実行すると、現在のSCNが戻されます。
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
フラッシュバック・ログをメンテナンスすると、Oracleデータベース・インスタンスで発生するオーバーヘッドが比較的制限されます。プロセスおよびI/Oのオーバーヘッドを制限するために、変更されたブロックが、メモリーからフラッシュバック・ログに比較的低い頻度で定期的に書き込まれます。
Oracle Flashback Databaseを有効にした大規模な本番データベースのパフォーマンスを向上させるには、次のガイドラインに従うことをお薦めします。
LOG_BUFFERを8MB以上に設定します。これによって、データベースのフラッシュバック・ログの書込み用に、最大のメモリー(通常16MB)が割り当てられます。
Oracle Flashback Databaseのロギングを有効にした場合のオーバーヘッドは、データベース・ワークロードの読取りと書込みの割合によって異なります。ワークロードが書込み集中型の場合、Oracle Flashback Databaseのロギングを有効にするとオーバーヘッドが増加します。(問合せを実行してもデータは変更されないため、Oracle Flashback Databaseのロギング・アクティビティには影響しません。)
フラッシュバック・ロギングによるシステムの使用状況を監視する最も有効な方法は、Oracle Statspackを使用してパフォーマンス統計情報を収集する方法です。たとえば、最初の待機イベントとして「flashback buf free by RVWR」が表示された場合は、フラッシュバック・ログを高速で書き込むことができないことを示しています。このような場合は、「Oracle Flashback Databaseのパフォーマンス・チューニング」で説明したいずれかの方法で、フラッシュ・リカバリ領域に使用されているファイル・システムおよび記憶域をチューニングすることをお薦めします。
V$FLASHBACK_DATABASE_STATビュー(『Oracle Databaseリファレンス』を参照)には、データベースで記録されたフラッシュバック・データのバイト数が表示されます。ビューの各行は、累積の統計情報(通常、1時間の累計)を示します。FLASHBACK_DATAおよびREDO_DATA列には、一定期間中に書き込まれたフラッシュバック・データおよびREDOデータのバイト数がそれぞれ示されます。DB_DATA列には、読取りおよび書込みが行われたデータ・ブロックのバイト数が示されます。FLASHBACK_DATAおよびREDO_DATAは順次書込みに対応し、DB_DATAはランダム読取りおよび書込みに対応することに注意してください。
順次I/OとランダムI/Oには違いがあるため、I/Oオーバーヘッドは、フラッシュバック・ログに対して発行されたI/O操作の回数によって明確に示されます。次のV$SYSSTATの統計情報には、様々な目的のためにインスタンスから発行されたI/O操作の回数が示されます。
V$SYSSTATビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。
フラッシュバックが有効である場合、または保証付きリストア・ポイントが存在する場合は、バックグランド・プロセスRVWRによって、フラッシュバック・データがフラッシュ・リカバリ領域にあるデータベースのフラッシュバック・ログに書き込まれます。RVWRにI/Oエラーが発生した場合、次の動作が予測されます。
SHUTDOWN ABORTを実行するか、またはALTER DATABASE FLASHBACK OFFを発行します。
|
![]() Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|