一.实验目的
掌握Oracle闪回技术的应用
二.实验内容
教材181页实训题(4)-(10)。第(5)题的时间设置为第二个事务提交的时间。第(6)题的时间范围为第一个事务提交的时刻到第四个事务提交的时刻。
三.实验过程
教材181页实训题(4)-(10)。第(5)题的时间设置为第二个事务提交的时间。第(6)题的时间范围为第一个事务提交的时刻到第四个事务提交的时刻。
(4)在数据库中执行下列操作
//设置时间格式
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
//开始时间
SET TIME ON;
//找了很多方法,需要先把数据库打开
alter database open;
//建表
CREATE TABLE exercise (sno NUMBER PRIMARY KEY,sname CHAR(20));
//修改表
INSERT INTO exercise VALUES(200,’lisi’);
COMMIT;
INSERT INTO exercise VALUES(100,‘zhangsan’);
COMMIT;
INSERT INTO exercise VALUES(300,‘WANGWU’);
COMMIT;
UPDATE exercise SET sname = ‘newname’WHERE sno = 100;
COMMIT;
DELETE FROM exercise WHERE sno = 200;
COMMIT;
(5)利用闪回技术查询16:40:10时exercise中的数据(时间和书上的不一致)
SELECT * FROM exercise AS OF TIMESTAMP TO_TIMESTAMP('2019-6-3 8:30:08','YYYY-MM-DD HH24:MI:SS') ;
(6)利用闪回版本查询,查询16:35:10-16:42:10之间sno=100的记录版本信息
SELECT versions_xid XID,versions_startscn STARTSCN,
versions_endscn ENDSCN,versions_operation OPERATION, sname FROM exercise
VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2019-6-3 8:27:29','YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2019-6-3 8:30:24','YYYY-MM-DD HH24:MI:SS') where
sno=100;
(7)利用闪回表技术,将exercise表恢复到删除操作进行之前的状态(sys不支持执行闪回表操作,我这里切换到了sccott用户执行)
alter table exercise enable row movement;
Flashback table exercise to TIMESTAMP TO_TIMESTAMP('2019-6-3 09:20:29','YYYY-MM-DD HH24:MI:SS') ;
(8)执行“DROP TABLE exercise”语句,然后利用闪回删除技术恢复exercise表
Flashback table exercise to before drop rename to exercise ;
(9)将数据库中的闪回日志保留时间设置为3天(4320分钟,此处需要切换回sysdba)
Alter system set db_flashback_retention_target = 4320;
(10)利用闪回数据库技术,将数据库恢复到创建表之前的状态
Flashback table exercise to TIMESTAMP TO_TIMESTAMP('2019-6-3 09:19:33','YYYY-MM-DD HH24:MI:SS') ;
四.实验总结
切换到scott用户即可