目 录
DM闪回查询 1
一、闪回查询子句 1
1.1 开启闪回查询功能 1
1.2 创建表并插入数据 2
1.2.1 查询当前时间 2
1.2.2 插入行数据,结果集如下 2
1.2.3 闪回查询 3
1.3 删除数据并闪回查询 3
1.3.1 删除一条数据 3
1.3.2 闪回数据查询 4
1.4 闪回查询指定事务好TRXID 4
1.4.1 查询数据,记录当前系统时间 4
1.4.2 更新数据,查询更新后的数据库集 4
1.4.3 查询事务号 5
1.4.4 闪回事务号查询 5
DM闪回查询
一、闪回查询子句
闪回查询子句的语法,是在数据查询语句的基础上,在FROM子句后增加了闪回查询子句。用户通过闪回查询子句,可以得到指定表过去某时刻的结果集。支持time_exp(时刻)和trxid(事务号)的闪回查询。
1.1 开启闪回查询功能
DM开启闪回查询功能,需要在INI参数文件中设置参数ENABLE_FLASHBACK置为1。ENABLE_FLASHBACK参数:是否启用闪回查询0:不启用;1:启用
修改方法如下所示:
select para_name, PARA_VALUE from v$dm_ini where para_name=’ENABLE_FLASHBACK’;
SP_SET_PARA_VALUE(1,’ENABLE_FLASHBACK’,1)
1.2 创建表并插入数据
创建books表并插入数据,查询数据。
create table books(book_id varchar2(4),book_name varchar2(50),price varchar2(5),qty varchar2(4),pub varchar2(50));
insert into books values(‘0001’,’中国文学’,’39’,’12’,’人民文学’);
insert into books values(‘0002’,’外国文学’,’27’,’10’,’人民文学’);
insert into books values(‘0003’,’英语阅读’,’33’,’22’,’清华大学’);
insert into books values(‘0004’,’建筑艺术’,’45.5’,’17’,’清华大学’);
1.2.1 查询当前时间
查询系统当前时间。
select sysdate from dual;
1.2.2 插入行数据,结果集如下
插入一条数据,查询数据。
insert into books values(‘0005’,’计算机入门’,’18.5’,’6’,’电子工业’);
commit;
select from books;
1.2.3 闪回查询
使用闪回查询取得2021-07-29 19:13:34 时刻的数据。此时刻在插入数据的操作之前,此时的结果集不应该有2021-07-29 19:14:20 时刻插入的数据。
SELECT FROM BOOKS WHEN TIMESTAMP ‘2021-07-29 19:13:34’;
1.3 删除数据并闪回查询
1.3.1 删除一条数据
查询表数据,记录当前时间,删除一条数据。
select from books;
select sysdate from dual;
delete from SYSDBA.BOOKS where book_id=’0005’
Commit
删除一条数据后提交,显示数据已经删除成功。结果集如下图所示。
1.3.2 闪回数据查询
闪回到2021-07-29 19:28:28时刻,可以看到删除前的数据,即book_id为5的数据。
SELECT FROM BOOKS WHEN TIMESTAMP ‘2021-07-29 19:28:28’;
1.4 闪回查询指定事务好TRXID
1.4.1 查询数据,记录当前系统时间
select from books;
select sysdate from dual;
1.4.2 更新数据,查询更新后的数据库集
对BOOKS表更新两条数据,然后查询数据。
UPDATE BOOKS SET BOOK_NAME=’美国文学’ WHERE BOOK_ID=’0001’;
COMMIT;
UPDATE BOOKS SET BOOK_NAME=’文艺艺术’ WHERE BOOK_ID=’0004’;
COMMIT;
select from books;
1.4.3 查询事务号
查询数据库记录修改的事务号。
SELECT VERSIONS_ENDTRXID, FROM BOOKS VERSIONS BETWEEN TIMESTAMP ‘2021-07-29 20:24:54’ AND SYSDATE;
1.4.4 闪回事务号查询
根据事务号,闪回事务查询。
SELECT FROM BOOKS WHEN TRXID 40418;
当用户操作不慎导致错误的删改数据时,希望有一种简单快捷的方式可以恢复数据。闪回技术,就是为了用户可以迅速处理这种数据逻辑损坏的情况而产生的。
闪回技术主要是通过回滚段存储的UNDO记录来完成历史记录的还原。设置ENABLE_FLASHBACK为1后,开启闪回功能。DM会保留回滚段一段时间,回滚段保留的时间代表着可以闪回的时间长度,由UNDO_RETENTION参数指定。UNDO_RETENTION参数在INI文件中进行配置,该参数是系统和会话级,单位为秒,有效值范围(0~ 86400),DM默认值90秒,可以根据实际需求修改。
开启闪回功能后,DM会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的UNDO记录,就可以还原出特定事务号的记录。即指定时刻的记录状态。从而完成闪回查询。
版权声明:本文为博主原创文章,未经博主允许不得转载。
https://edu.dameng.com,https://eco.dameng.com/
- 上一篇:DM 重做日志文件管理
- 下一篇:DMDSC更换DCR和VOTE磁盘