CREATE RESTORE POINT
目的
CREATE
RESTORE
POINT
文を使用すると、リストア・ポイント(タイムスタンプまたはデータベースのSCNに関連付けられた名前)を作成できます。リストア・ポイントを使用すると、リストア・ポイントで指定された時点に表またはデータベースをフラッシュバックできるため、SCNまたはタイムスタンプかを判断する必要がありません。リストア・ポイントは、バックアップやデータベースの複製など、様々なRMAN操作でも有効です。RMANを使用して、アーカイブ・バックアップの実装プロセスにリストア・ポイントを作成できます。
関連項目:
-
リストア・ポイントおよび保証付きリストア・ポイントの作成と使用、データベースの複製およびアーカイブ・バックアップの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
-
リストア・ポイントの使用方法および削除方法については、「FLASHBACK DATABASE」、「FLASHBACK TABLE」および「DROP RESTORE POINT」を参照してください。
前提条件
通常のリストア・ポイントを作成するには、SELECT
ANY
DICTIONARY
、FLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
、SYSDG
システム権限が必要です。
保証付きリストア・ポイントを作成するには、次の条件のうち1つを満たしている必要があります。
-
AS SYSDBA
、AS SYSBACKUP
またはAS SYSDG
を接続する必要があります。 -
SYSDBA
権限が付与されており、マルチテナント・データベースを使用している必要があります。 -
ユーザー
SYS
として実行しており、マルチテナント・データベースを使用している必要があります。
リストア・ポイントを表示または使用するには、SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
、またはSYSDG
のいずれかのシステム権限か、SELECT_CATALOG_ROLE
ロールが必要です。
リストア・ポイントは、プライマリ・データベースまたはスタンバイ・データベースに作成できます。データベースは、オープンされている状態でも、マウントされているがオープンされていない状態でもかまいません。データベースがマウントされている場合、それがフィジカル・スタンバイ・データベースでなければ、整合性を保持して停止されてからマウントされている必要があります。
保証付きリストア・ポイントを作成する場合は、その前に、高速リカバリ領域を作成しておく必要があります。保証付きリストア・ポイントを作成する前に、フラッシュバック・データベースを使用可能にする必要はありません。保証付きリストア・ポイントを作成する場合、データベースはARCHIVELOG
モードになっていることが必要です。
通常のリストア・ポイントを作成する前にフラッシュバック・データベースを有効にする必要はありません。通常のリストア・ポイントにはFLASHBACK DATABASE
以外のアプリケーションがあるためです。ただし、通常のリストア・ポイントに対してFLASHBACK DATABASE
を実行する場合は、通常のリストア・ポイントを作成する前にフラッシュバック・データベースを有効にしておく必要があります。
マルチテナント・コンテナ・データベース(CDB)に接続しているときに、次のようにリストア・ポイントを作成、使用または表示できます。
-
通常のCDBリストア・ポイントを作成するには、現在のコンテナがルートである必要があります。また、
SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
システム権限(共通に付与されている権限か、ルートでローカルに付与されている権限のいずれか)または共通に付与されているSYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要です。 -
保証されたCDBリストア・ポイントを作成する場合は、現在のコンテナがルートである必要があります。また、共通に付与されている
SYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要です。 -
CDBリストア・ポイントを表示するには、現在のコンテナがルートである必要があり、
SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
システム権限またはSELECT_CATALOG_ROLE
ロール(共通に付与されているか権限/ロールか、ルートでローカルに付与されている権限/ロールのいずれか)、または共通に付与されているSYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要であるか、あるいは現在のコンテナがPDBである必要があり、SELECT
ANY
DICTIONARY
、FLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限のいずれか)が必要です。 -
CDBリストア・ポイントを使用するには、
SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
システム権限またはSELECT_CATALOG_ROLE
ロール(共通に付与されている権限/ロールか、ルートでローカルに付与されている権限/ロールのいずれか)または共通に付与されているSYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要です。 -
通常のPDBリストア・ポイントを作成するには、現在のコンテナがルートである必要があり、
SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
システム権限(共通に付与されているか権限か、ルートでローカルに付与されている権限のいずれか)、または共通に付与されているSYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要であるか、または現在のコンテナがリストア・ポイントを作成するPDBである必要があり、SELECT
ANY
DICTIONARY
、FLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限)が必要です。 -
保証されたPDBリストア・ポイントを作成するには、現在のコンテナがルートである必要があり、共通に付与されている
SYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要であるか、または現在のコンテナがリストア・ポイントを作成するPDBである必要があり、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限)が必要です。 -
PDBリストア・ポイントを表示するには、現在のコンテナがルートである必要があり、
SELECT
ANY
DICTIONARY
またはFLASHBACK
ANY
TABLE
システム権限またはSELECT_CATALOG_ROLE
ロール(共通に付与されているか権限/ロールか、ルートでローカルに付与されている権限/ロールのいずれか)、または共通に付与されているSYSDBA
、SYSBACKUP
またはSYSDG
システム権限が必要であるか、または現在のコンテナがリストア・ポイントのPDBである必要があり、SELECT
ANY
DICTIONARY
、FLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限のいずれか)が必要です。 -
PDBリストア・ポイントを使用するには、現在のコンテナがリストア・ポイントのPDBである必要があります。また、
SELECT
ANY
DICTIONARY
、FLASHBACK
ANY
TABLE
、SYSDBA
、SYSBACKUP
またはSYSDG
システム権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限)が必要です。
構文
create_restore_point::=
セマンティクス
CLEAN
CLEAN
は、PDBリストア・ポイントを作成する際にのみ指定できます。PDBは共有UNDOを使用する必要があり、未処理のトランザクションがない状態でクローズする必要があります。共有UNDOを使用してPDBをフラッシュバックしてPDBリストア・ポイントをクリーンにする場合、バックアップをリストアしたりクローン・インスタンスを作成する必要はありません。このため、共有UNDOを使用してPDBをSCNまたは他のタイプのリストア・ポイントにフラッシュバックするよりも高速です。
restore_point
リストア・ポイントの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。
マルチテナント環境では、CDBとPDBはリストア・ポイント用の独自のネームスペースを持ちます。このため、CDBおよび各PDBは同じ名前のリストア・ポイントを持つことがあります。PDB内でまたはPDB操作でリストア・ポイント名を指定すると、最初に名前が当該PDBのPDBリストア・ポイントとして解釈されます。指定された名前のPDBリストア・ポイントが見つからない場合、CDBリストア・ポイントとして解釈されます。
データベースには、2048個以上の通常のリストア・ポイントを保持できます。マルチテナント環境では、CDBはCDB全体で少なくとも2048の通常のリストア・ポイント(PDBリストア・ポイントを含む)を保持できます。通常のリストア・ポイントは、少なくとも初期化パラメータCONTROL_FILE_RECORD_KEEP_TIME
で指定された日数はデータベース内に保持されます。そのパラメータのデフォルト値は7日です。保証付きのリストア・ポイントは、ユーザーが明示的に削除するまでデータベース内に保持されます。
PRESERVE
もGUARANTEE FLASHBACK DATABASE
も指定しない場合、結果のリストア・ポイントによって、DB_FLASHBACK_RETENTION_TARGET
初期化パラメータで設定された期間内のリストア・ポイントにデータベースをフラッシュバックできます。そのようなリストア・ポイントは、データベースによって自動的に管理されます。リストア・ポイントの数が、前述のrestore_point
で定められた最大数に達すると、最も古いリストア・ポイントが自動的に削除されます。一定の状況では長期バックアップのリストアに使用するために、リストア・ポイントはRMANリカバリ・カタログに保持されます。DROP
RESTORE
POINT
文を使用して、リストア・ポイントを明示的に削除することもできます。
FOR PLUGGABLE DATABASE
この句を使用すると、ルートに接続されている場合にPDBリストア・ポイントを作成できます。pdb_name
には、PDBの名前を指定します。
リストア・ポイントを作成するPDBに接続されている場合、この句を指定する必要はありません。ただし、この句を指定する場合は、接続しているPDBの名前を指定する必要があります。
AS OF句
この句を使用すると、過去の指定した日時またはSCNでリストア・ポイントを作成できます。TIMESTAMP
を指定する場合、expr
は過去の日時となる有効な日時式である必要があります。SCNを指定する場合、expr
は過去のデータベースの有効なSCNである必要があります。どちらの場合にも、expr
はデータベースの現行のインカネーションの日時またはSCNを参照する必要があります。
PRESERVE
PRESERVE
を指定すると、リストア・ポイントを明示的に削除する必要があることを指定できます。このようなリストア・ポイントは、フラッシュバック・データベースを保持するのに有効です。
GUARANTEE FLASHBACK DATABASE
保証付きリストア・ポイントの場合、初期化パラメータDB_FLASHBACK_RETENTION_TARGET
の設定とは無関係に、データベースをリストア・ポイントに確定的にフラッシュバックできます。フラッシュバック機能が保証されるかどうかは、高速リカバリ領域に十分な使用可能スペースがあるかどうかによって決まります。
保証付きリストア・ポイントで保証されるのは、データベースを保証付きリストア・ポイントにフラッシュバックするのに十分なフラッシュバック・ログが、データベースに保持されるということのみです。すべての表を同じリストア・ポイントにフラッシュバックするのに十分なUNDOがデータベースに保持されるかどうかは保証されません。
保証付きリストア・ポイントは、常に保存されます。DROP
RESTORE
POINT
文を使用してユーザーが明示的に削除する必要があります。このリストア・ポイントは、期限切れになることはありません。保証付きリストア・ポイントは、高速リカバリ領域内の領域を大量に使用する場合があります。このため、保証付きリストア・ポイントは十分に検討したうえで作成することをお薦めします。
例
リストア・ポイントの作成および使用方法: 例
次の例は、通常のリストア・ポイントを作成し、表を更新した後、変更した表をリストア・ポイントにフラッシュバックします。この例は、ユーザーhr
がそれぞれの文を使用する適切なシステム権限を持っていることを前提としています。
CREATE RESTORE POINT good_data; SELECT salary FROM employees WHERE employee_id = 108; SALARY ---------- 12000 UPDATE employees SET salary = salary*10 WHERE employee_id = 108; SELECT salary FROM employees WHERE employee_id = 108; SALARY ---------- 120000 COMMIT; FLASHBACK TABLE employees TO RESTORE POINT good_data; SELECT salary FROM employees WHERE employee_id = 108; SALARY ---------- 12000