首批通过分布式安全可靠测评,为关键业务系统打造
CREATE RESTORE POINT
更新时间:2023-07-18 17:25:59
描述
该语句用来创建还原点(Restore Point)。使用该功能可以保留当前时刻的数据快照,并在之后指定在这个数据快照上进行查询。目前还不支持将数据回滚到该还原点。
创建还原点后,可以在 V$RESTORE_POINT 视图中查询到该还原点的 SNAPSHOT 值,然后通过 SELECT * FROM table_name AS OF SNAPSHOT snapshot; 查询数据快照中的值。
注意
sys 租户不支持创建还原点。
语法
CREATE RESTORE POINT restore_point;
参数解释
| 参数 | 描述 |
|---|---|
| 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';
示例
创建一个表
test1,并插入一行数据。obclient> CREATE TABLE test1 (c1 INT,c2 INT); Query OK, 0 rows affected obclient> INSERT INTO test1(c1,c2) values (1,1); Query OK, 1 row affected创建一个还原点
rp1。obclient> CREATE RESTORE POINT rp1; Query OK, 0 rows affected向表
test1中再插入一些数据并提交。obclient> INSERT INTO test1(c1,c2) values (2, 2),(3,3); Query OK, 2 rows affected Records: 2 Duplicates: 0 Warnings: 0 obclient> commit; Query OK, 0 rows affected查询表
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