加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle闪回-闪回错误的DML操作

发布时间:2020-12-12 14:24:55 所属栏目:百科 来源:网络整理
导读:闪回错误的DML操作: 利用还原段(回滚段)中的数据进行恢复。 详情: 1、查看undo_retention参数值:保存时长 SQL show parameter undo_retention; NAME TYPE VALUE ------------------------------------ ----------- ------------- undo_retention integer
闪回错误的DML操作: 利用还原段(回滚段)中的数据进行恢复。 详情: 1、查看undo_retention参数值:保存时长 SQL> show parameter undo_retention; NAME TYPE VALUE ------------------------------------ ----------- ------------- undo_retention integer 900 2、修改时长为2小时 60*60*2=7200s SQL> alter system set undo_retention=7200; 系统已更改。 注:闪回时长、磁盘空间、效率等多个因素互相影响。 3、修改数据:scott用户, SQL> update emp_dump set sal=8888; 4、使用带有versions子句的oracle查询语句获取信息 VERSIONS_XID 为事务号 SQL> select versions_xid,empno,ename,sal from emp_dump 2 versions between scn minvalue and maxvalue ; VERSIONS_XID EMPNO ENAME SAL ---------------- ----- ---------- --------- 7566 JONES 2975.00 7698 BLAKE 2850.00 7782 CLARK 2450.00 7788 SCOTT 3000.00 7839 KING 5000.00 7902 FORD 3000.00 6 rows selected 5、提示事务: SQL> commit; 提交完成。 6、查看 数据已经修改,事务号有数据。 SQL> select versions_xid,sal from emp_dump 2 versions between scn minvalue and maxvalue ; VERSIONS_XID EMPNO ENAME SAL ---------------- ----- ---------- --------- 0A000C0062030000 7902 FORD 8888.00 0A000C0062030000 7839 KING 8888.00 0A000C0062030000 7788 SCOTT 8888.00 0A000C0062030000 7566 JONES 8888.00 0A000C0062030000 7698 BLAKE 8888.00 0A000C0062030000 7782 CLARK 8888.00 7566 JONES 2975.00 7698 BLAKE 2850.00 7782 CLARK 2450.00 7788 SCOTT 3000.00 7839 KING 5000.00 7902 FORD 3000.00 12 rows selected 7、使用数据字典flashback_transaction_query查看恢复原来值的语句: SQL> select operation,undo_sql from flashback_transaction_query 2 where xid=hextoraw('0A000C0062030000'); xid为:6中VERSIONS_XID 8、 恢复前查询提交事务对应的SCN号: SQL> select operation,start_scn from flashback_transaction_query 2 where xid =hextoraw('0A000C0062030000'); OPERATION START_SCN ---------- ---------- UNKNOWN 2199600592 UNKNOWN 2199600592 UNKNOWN 2199600592 UNKNOWN 2199600592 BEGIN 2199600592 9、使用闪回命令:闪回之前修改的数据 SQL> flashback table scott.emp_dump to scn 2199600592; flashback table scott.emp_dump to scn 2199600592 ORA-08189: 因为未启用行移动功能,不能闪回表 10、命令启动行移动功能 SQL> alter table scott.emp_dump enable row movement; Table altered 11、闪回: SQL> flashback table scott.emp_dump to scn 2199600592; Done 12、闪回时间点: flashback table scott.emp_dump to timestamp to_timestamp('9:30','hh24:mi')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读