説明
このステートメントは、リストアポイント(Restore Point)を作成するために使用します。この機能を使用すると、現在時刻のデータスナップショットを保持し、後でそのデータスナップショットに基づいてクエリを実行できます。現在、データをこのリストアポイントまでロールバックすることはサポートされていません。
リストアポイントを作成した後、V$RESTORE_POINT ビューでそのリストアポイントの SNAPSHOT 値を確認できます。その後、SELECT * FROM table_name AS OF SNAPSHOT snapshot; を使用して、データスナップショット内の値をクエリできます。
注意
- V4.x系ではCREATE RESTORE POINTステートメントは現在サポートされていません。
- システムテナントはリストアポイントの作成および削除をサポートしていません。
使用上の制限と注意事項
Restore Point機能の使用上の制限は以下のとおりです:
物理バックアップはサポートされていません。
プライマリ/スタンバイデータベースはサポートされていません。
各テナントは
10個のRestore Pointに制限されます。リストアポイントを作成した後、リストアポイント作成前に存在したテーブルに対してDDLステートメントを実行すると、システムはエラーを返します。
Restore Point機能はGTSに依存してグローバルな一貫性のあるスナップショットを維持するため、Restore Pointを使用する際はGTSを有効にする必要があります。
GTSを有効にするSQLコマンドは以下のとおりです。
obclient> SET GLOBAL ob_timestamp_service='GTS';
構文
CREATE RESTORE POINT restore_point;
パラメータの説明
パラメータ |
説明 |
|---|---|
| restore_point | 復元ポイント名を指定します。 |
例
テーブル
test1を作成します。obclient> CREATE TABLE test1 (c1 INT,c2 INT);1行のデータを挿入します。
obclient> INSERT INTO test1(c1,c2) values (1,1);リストアポイント
rp1を作成します。obclient> CREATE RESTORE POINT rp1;テーブル
test1にさらにデータを挿入し、コミットします。obclient> INSERT INTO test1(c1,c2) values (2, 2),(3,3); obclient> commit;テーブル
test1の現在のバージョンのデータをクエリします。obclient> SELECT * FROM test1; +------+------+ | c1 | c2 | +------+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | +------+------+ 3 rows in set作成したリストアポイント
rp1の情報を確認し、バージョン番号に基づいて履歴バージョンのデータを確認します。obclient> SELECT * FROM V$RESTORE_POINT;実行結果は次のとおりです:
+-----------+------------------+----------------------------+------+ | TENANT_ID | SNAPSHOT | TIME | NAME | +-----------+------------------+----------------------------+------+ | 1001 | 1630407064663511 | 2021-08-31 18:51:04.665692 | rp1 | +-----------+------------------+----------------------------+------+ 1 row in set obclient> SELECT * FROM test1 AS OF SNAPSHOT 1630407064663511; +------+------+ | c1 | c2 | +------+------+ | 1 | 1 | +------+------+ 1 row in set