Data Guard 之 表误操作恢复

    有这样种情况,由于误操作了一个业务表(drop/truncate,etc..),但被及时发现,此时,我们可以在短时间内恢复这个表的操作有这么几种:
1) Flashback table(当设置闪回数据库的时候,用闪回日志,未设置闪回数据库的时候,使用的是undo数据,undo对truncate操作无效)
2) DG下的automatic recover(当然,需要standby端设置delay,利用延迟应用日志时间差,来迅速将standby recoer到事发时间点之前,然后利用逻辑exp&imp来实现表级恢复)

DG体系下,方法2不失为一种高效简洁的办法,下面,看如下一个试验:
1. 在standby端,设置日志的延迟应用时间:


SQL> alter database recover managed standby database DELAY 60 disconnect from session;

数据库已更改。
2.primay端,模拟表误删除:

SQL> conn mecoyoo/mecoyoo@test
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as MECOYOO

SQL> create table test_auto as select * from dba_objects;

Table created

SQL> select count(*) from test_auto;

COUNT(*)
———-
    104018

SQL> select to_char(sysdate,’yyyymmdd hh24:mi:ss’) from dual;

TO_CHAR(SYSDATE,’YYYYMMDDHH24:
——————————
20080225 17:25:53                               ————记录该时间点就是日志恢复的终止时间点

SQL> drop table test_auto;

Table dropped

SQL> alter system switch logfile;

System altered
2.在standby端,执行RECOVER AUTOMATIC
SQL> alter database recover managed standby database cancel;

数据库已更改。
SQL> ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE until time ‘2008-02-25 17
:25:53′;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select count(*) from mecoyoo.test_auto;

COUNT(*)
———-
    104018
3.逻辑Exp/imp
D:\Documents and Settings\Administrator>exp mecoyoo/mecoyoo@test_standby
tables=(test_auto) file=auto.dmp

Export: Release 10.2.0.1.0 - Production on 星期一 2月 25 17:34:22 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的表通过常规路径…
. . 正在导出表                       TEST_AUTO导出了      104018 行
成功终止导出, 没有出现警告。

D:\Documents and Settings\Administrator>imp mecoyoo/mecoyoo@test tables=(
test_auto) file=auto.dmp ignore=y

Import: Release 10.2.0.1.0 - Production on 星期一 2月 25 17:34:56 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 MECOYOO 的对象导入到 MECOYOO
. 正在将 MECOYOO 的对象导入到 MECOYOO
. . 正在导入表                     “TEST_AUTO”导入了      104018 行
成功终止导入, 没有出现警告。

4.登陆primay库,验证表test_auto是否已经恢复
SQL> conn mecoyoo/mecoyoo@test
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as MECOYOO

SQL> select count(*) from test_auto;

COUNT(*)
———-
    104018
5.恢复standby起初应用日志设置。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 134217728 bytes
Fixed Size                  1247708 bytes
Variable Size              71304740 bytes
Database Buffers           58720256 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。

数据库已更改。

SQL> alter database recover managed standby database DELAY 60 disconnect from session;

数据库已更改。

至此,表恢复完毕。

bookmark

相关文章 随机文章

Leave a comment

Your comment