ITPub博客

首页 > 数据库 > Oracle > Backup And Recovery User's Guide-使用闪回表来回退一个表-执行闪回表操作

Backup And Recovery User's Guide-使用闪回表来回退一个表-执行闪回表操作

原创 Oracle 作者:LuiseDalian 时间:2014-02-27 19:02:47 0 删除 编辑

执行闪回表操作

场景:假设想闪回scott.emp1表,因为用户错误地更新了数据。

--1.  连接SQL*Plus到目标数据库并识别当前的SCN.

--    不能回滚FLASHBACK TABLE的操作,但可以执行另一个FLASHBACK语句,指定时间刚好在当前时间之前。

SELECT CURRENT_SCN FROM V$DATABASE;

--2. 识别你想还原表到的时间、SCN、还原点. 如果已经创建了还原点,则可以查看可用的还原点

SELECT NAME, SCN, TIME FROM V$RESTORE_POINT;

--3. 确定有足够的undo数据存在,来回退表到特定的目标时间.如果undo_retention初始化参数被设置了,并且undo保留期保证被开启

--   可以通过下面的查询来确定有多少undo数据被保留了

SELECT NAME, VALUE/60 MINUTES_RETAINED FROM V$PARAMETER WHERE  NAME = 'undo_retention';

--4. 对于打算使用FLASHBACK TABLE回退的所有的对象开启行移动

ALTER TABLE table ENABLE ROW MOVEMENT;

--5. 确定你打算闪回的表是否对其它表有依赖,如果依赖存在,则要决定是否也闪回这些表.

SELECT t2.owner, t2.table_name

FROM   all_constraints t1, all_constraints t2

WHERE  t1.r_owner = t2.owner AND t1.r_constraint_name = t2.constraint_name

AND t1.owner = schema_name

AND t1.table_name = table_name

AND t1.constraint_type='R';

--6. 对要闪回的对象执行FLASHBACK TABLE操作

--6.1 闪回到还原点

FLASHBACK TABLE hr.temp_employees TO RESTORE POINT temp_employees_update;

--6.2 闪回到指定的SCN

FLASHBACK TABLE hr.temp_employees TO SCN 123456;

--6.3 闪回到指定的时间戳.注意时间戳到SCN的映射不问题精确的.使用时间戳来执行FLASHBACK TABLE语句,闪回到的时间最多会有3秒钟的差异.

--    如果需要精确的时间点,则使用SCN而不是时间。

FLASHBACK TABLE hr.temp_employees TO TIMESTAMP TO_TIMESTAMP('2007-10-17 09:30:00', 'YYYY-MM-DD HH:MI:SS');

--7. 查询表检查数据

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1095800/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6043801