説明
このステートメントは、復元ポイント(Restore Point)を作成するために使用します。この機能を使用すると、現在の時点のデータスナップショットを保持し、後でそのデータスナップショットを基準にクエリを実行できます。現在、データをこの復元ポイントまでロールバックすることはサポートされていません。
復元ポイントを作成した後、V$RESTORE_POINT ビューでその復元ポイントの SNAPSHOT 値を確認できます。その後、SELECT * FROM table_name AS OF SNAPSHOT snapshot; を使用して、データスナップショット内の値を照会できます。
注意
- V4.x系ではCREATE RESTORE POINTステートメントは現在サポートされていません。
- システムテナントでは、復元ポイントの作成および削除はサポートされていません。
使用制限と注意事項
Restore Point機能の使用制限は以下のとおりです:
物理バックアップはサポートされていません。
プライマリ/スタンバイデータベースはサポートされていません。
各テナントで
10個のRestore Pointが制限されます。Restore Pointを作成した後、そのCreate 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