ITPub博客

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

Backup And Recovery User's Guide-使用闪回数据库来回退数据库-执行闪回数据库操作

原创 Oracle 作者:LuiseDalian 时间:2014-02-28 21:05:39 0 删除 编辑

执行闪回数据库操作

这部分呈献了执行数据库闪的基本技术,通过时间表达式指定了希望的目标时间点、保证的或普通的还原点的名称、SCN。

场景:回退数据库到当前数据库incarnation中的时间点。回退数据库到刚好在最近的OPEN RESETLOGS之前的时间点。

 

默认在FLASHBACK DATABASE命令中使用的SCN是指数据库的incarnation的直接祖先路径中的SCN。

在数据库使用RESETLOGS选项打开之后,它并没有被抛弃,这个incarnation在这个路径中。

练习:执行闪回数据库操作

--1. 连接SQL*Plus到目标数据库,为FLASHBACK DATABASE确定希望的SCN、还原点、时间点

--1.1 确定在闪回数据库窗口中最早的SCN

SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;

--1.2 闪回数据库可以达到的最近的SCN是数据库的当前的SCN

SELECT CURRENT_SCN FROM   V$DATABASE;

--1.3 查询可用的保证的还原点

--注意:如果闪回窗口不能向回延伸到期望的目标时间点,并且在目标时间点没有保证的还原点,则可以使用数据库基于时间点的恢复来达到相同的结果

SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE

FROM   V$RESTORE_POINT

WHERE  GUARANTEE_FLASHBACK_DATABASE='YES';

 

NAME                   SCN TIME                  DATABASE_INCARNATION# GUA

--------------- ---------- --------------------- --------------------- ---

BEFORE_CHANGES     5753126 04-MAR-05 12.39.45 AM                     2 YES

--2. 一致地关闭数据库,确保不被任何实例打开,然后MOUNT数据库

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

--3. 重复步骤1中的查询。当数据库被关闭的时候,一些闪回日志被产生。

--   如果因为快速恢复区空间的压力,一些闪回日志被删除,则你的目标SCN有可能达不到

--   注意:如果当目标SCN超出了闪回窗口时运行FLASHBACK DATABASE,则FLASHBACK DATABASE会因为ORA-38729错误而失败,

此时数据库不会改变。

--4. 开启RMAN连接到目标数据库

--5. 运行SHOW命令来查看被配置的通道。在闪回操作过程中,RMAN可能需要从备份还原归档重做日志。

--   查看通道是否被配置

SHOW ALL;

RMAN configuration parameters for database with db_unique_name PROD1 are:

.

.

.

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS  "SBT_LIBRARY=/usr/local/oracle/backup/lib/libobk.so";

-- 如果需要的设备和通道已经被配置了,则不需要其它的操作;否则 使用CONFIGURE命令配置自动通道或在RUN块中包含ALLOCATE CHANNEL命令

--6. 运行RMAN的FLASHBACK DATABASE命令

--6.1 指定SCN

FLASHBACK DATABASE TO SCN 46963;

--6.2 指定还原点

FLASHBACK DATABASE TO RESTORE POINT BEFORE_CHANGES;

--6.3 指定时间

FLASHBACK DATABASE TO TIME  "TO_DATE('09/20/05','MM/DD/YY')";

--如果FLASHBACK DATABASE命令完成了,则数据库保持MOUNT状态并且被恢复到指定的时间点

--7. 在SQL*Plus中以read-only方式打开数据库,运行查询来验证数据库的内容

ALTER DATABASE OPEN READ ONLY;

-- 如果满足于结果,则执行完步骤8后结束,否则跳转到第9步。

--8. 如果满足结果,则执行下面互相排它的操作:

--a. 通过带RESETLOGS选项打开数据库,使数据库可以更新;如果数据库当前是只读打开,则执行下面的命令:

SHUTDOWN IMMEDIATE

STARTUP MOUNT

ALTER DATABASE OPEN RESETLOGS;

--注意:在执行了OPEN RESETLOGS选项之后,则在闪回数据库目标SCN之后的数据库改变都被抛弃.

--      不过可以使用"回退数据库到被抛弃的incarnation分支中的SCN"技术来回退数据库到保留在闪回窗口的SCN范围。

--b. 使用Oracle数据泵导出来进行对象的逻辑备份,然后使用RMAN来恢复数据库到当前的时间点。

--    这个步骤通过重新应用在redo日志中的所有改变来撤销闪回数据库的影响,使数据库回到最近的SCN

--    在以读写方式重新打开数据库后,可以使用数据库泵导入工具导入被导出的对象

RECOVER DATABASE;

--9. 如果你发现使用了错误的还原点、SCN或时间点,则MOUNT数据库,而后执行下面互斥的操作:

--9.1 如果你选择的目标时间点不够向前,则使用另一个闪回数据库命令,在时间更向前回退数据库

FLASHBACK DATABASE TO SCN 42963;  --比当前的SCN要早

--9.2 如果选择的目标SCN太往前了,则使用RECOVER DATABASE UNTIL TO 来使数据库向前前进到希望的SCN

RECOVER DATABASE UNTIL SCN 56963;  --比当前的SCN要晚

--9.3 如果想完全撤销FLASHBACK DATABASE命令的影响,则可以进行完全恢复.重新应用对数据库的所有改变,使数据库到达最近的SCN

RECOVER DATABASE;

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

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

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6043802