方法一
alter system set 'enable_flashback'=1 both;
该方法设置参数时,参数名必须加单引号。
方法二
SP_SET_PARA_VALUE (1, 'ENABLE_FLASHBACK', 1);
//scope 为 1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器。
//scope 为 2 表示只修改 dm.ini 文件,服务器重启后生效。
//value: 设置的值。
由于回滚段默认每秒种都会自动清理,所以需要延长回滚记录的保留时间,单位是秒。回滚段参数太大容易引发回滚段膨胀,这里设置为 1200s。示例语句如下所示:
ALTER SYSTEM SET 'undo_retention'=1200 BOTH;
查询参数:
SELECT name,
TYPE,
VALUE,
sys_value,
file_value
FROM v$parameter
WHERE name = 'UNDO_RETENTION';
按时间闪回查询
通过指定一个时间(timestamp 类型),通常可以用一个日期时间字符串表达。测试在 disql 工具中进行,使用 dmhr 模式下的 city 表。示例语句如下所示:
查询当前 city_id = 'CD' 时 city 表中的信息
SELECT * FROM dmhr.city WHERE city_id = 'CD';
闪回查询 2020-11-03 09:56:06前的 city 表中的信息
SELECT * FROM dmhr.city WHEN TIMESTAMP '2020-11-03 09:56:06' WHERE city_id='CD';
按事务id查询
SELECT versions_endtrxid,* FROM dmhr.job VERSIONS BETWEEN TIMESTAMP '2020-11-03 10:30:00' AND SYSDATE WHERE JOB_ID = 22;
其中versions_endtrxid字段为NULL 表示该行的版本仍然是当前版本。执行两次更新数据后,再次查询
SELECT versions_endtrxid, * FROM dmhr.job VERSIONS BETWEEN TIMESTAMP '2020-11-03 10:30:00' AND SYSDATE WHERE JOB_ID = 22;
可根据 versions_endtrxid查询
闪回事务查询提供系统视图 V$FLASHBACK_TRX_INFO,查看在事务级对数据库所做的更改。根据该视图信息,可以确定如何还原指定事务或指定时间段内的修改。
查询指定时间之后的事务信息,示例语句如下所示:
SELECT commit_trxid, operation,table_name,undo_sql FROM V$FLASHBACK_TRX_INFO;
文章
阅读量
获赞