説明
このステートメントは、リストアポイント(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を作成した後、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