功能描述
在人为操作或应用程序错误时,使用FLASHBACK TABLE语句恢复表到一个早期状态。
表可以闪回到过去的时间点,这依赖于系统中撤销数据的数据量。此外,GaussDB 100数据库不能恢复到通过任何DDL操作改变了表结构的早期状态。
注意事项
执行该语句的用户需要有FLASHBACK权限;如果是其他用户下的表,需要FLASH ANY TABLE权限。
FLASHBACK TABLE语句的用法主要分成两大类:从撤销数据中闪回和从回收站中闪回。
撤销数据中记录了新增、更新的数据对象。TO SCN expr和TO TIMESTAMP expr是从撤销数据中闪回。
回收站记录了DROP的对象数据。TO BEFORE DROP语句就是从回收站中闪回。
GaussDB 100默认不强制转换日期类型,需要通过函数显式转化。
数据库重启回滚期间不支持该操作。
语法格式
FLASHBACK TABLE [ schema_name. ]table_name TO { SCN expr | TIMESTAMP expr | BEFORE { DROP [ RENAME TO table_name ] | TRUNCATE FORCE } }
参数说明
schema_name
指定模式包含的表。如果缺省,则为当前模式。
table_name
指定一个或多个表名称。
闪回表受以下限制:
升级、移动、截取表(truncate)。
增加表约束、增加表;删除或修改列;更改列的加密密钥。
增加、删除、合并、分离、联合、截取分区或子分区(除了增加范围分区)。
对于这些对象类型闪回表操作是无效的:物化视图、系统表、外部表、独立分区表和子分区表。
以下DDL操作改变了表的结构,所以不能接着使用TO SCN或TO TIMESTAMP闪回到操作之前的时间点:
TO SCN
指定你要返回表的时间点对应的系统改变号(SCN)。expr必须计算一个数字,代表有效的SCN。
expr
一个有效的scn号。
TO TIMESTAMP
指定你要返回表的时间点对应的时间戳。expr 必须计算一个过去有效的时间戳(使用TO_TIMESTAMP函数将字符串转换为时间类型)。表将被闪回到指定时间戳大约3秒内的时间点。
说明:回退时间应该小于建表时间,否则会报错。
TO BEFORE DROP
使用这个子句检索回收站中已删除的表,及其可能依赖的对象。该表必须是驻留在本地管理表空间,而不是其他系统表空间。
你可以指定原始用户指定的表的名称,或对象删除时数据库分配的系统生成名称。
指定你想要检索的表的系统生成名称。
执行FLASHBACK TABLE ... TO BEFORE DROP语句,直到你要检索表。
如果指定了用户指定的名称,且如果回收站中包含多个该名称的对象,然后数据库检索回收站中最近移动的对象。如果想要检索更早版本的表,你可以这样做:
回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,那么数据库检索指定的对象。使用“select * from SYS_RECYCLEBIN;”语句查看回收站中的内容。
RENAME TO
为从回收站正在检索的表,指定一个新的名称。
TRUNCATE FORCE
闪回到TRUNCATE之前。