自己的一次基于时间点的不完全恢复

//今天到客户现场,客户说就像测试下oracle数据库是否能够恢复到一次非法操作数据等操作前的全部数据。于是,就考虑到了使用RMAN的非完全恢复。于是做了如下操作:

//查看tt1表下数据

21:57:23 SQL> conn / as sysdba
已连接。
22:07:51 SQL> set time off
SQL> select * from tt1;

         A
----------
         3
         4
         5
         6
         1
         2

已选择6行。

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

//使用rman对数据库做一次全备,为了方便,省去了不少的脚本内容

RMAN> run{backup full database tag='db_full';}

启动 backup 于 30-7月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00003 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSAUX_3ML9SJQX_.DBF
输入数据文件 fno=00006 name=C:\ORCL\N.DBF
输入数据文件 fno=00005 name=C:\ORCL\RMAN_TS.DBF
通道 ORA_DISK_1: 正在启动段 1 于 30-7月 -08
通道 ORA_DISK_2: 启动全部数据文件备份集
通道 ORA_DISK_2: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_USERS_3ML9SWGC_.DBF
输入数据文件 fno=00002 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_UNDOTBS1_3ML9S9JQ_.DBF
输入数据文件 fno=00009 name=C:\ORCL\SCOTT\SCOTT_DATA.DBF
通道 ORA_DISK_2: 正在启动段 1 于 30-7月 -08
通道 ORA_DISK_3: 启动全部数据文件备份集
通道 ORA_DISK_3: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_3ML9RMHJ_.DBF
输入数据文件 fno=00007 name=C:\ORCL\UNDO1.DBF
输入数据文件 fno=00013 name=C:\ORCL\EXEC01.DBF
通道 ORA_DISK_3: 正在启动段 1 于 30-7月 -08
通道 ORA_DISK_2: 已完成段 1 于 30-7月 -08
段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y79DF_.BKP 标记=DB_FULL 注释=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间:00:03:02
通道 ORA_DISK_1: 已完成段 1 于 30-7月 -08
段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y775C_.BKP 标记=DB_FULL 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:03:05
通道 ORA_DISK_3: 已完成段 1 于 30-7月 -08
段句柄=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y7J3K_.BKP 标记=DB_FULL 注释=NONE
通道 ORA_DISK_3: 备份集已完成, 经过时间:00:03:02
完成 backup 于 30-7月 -08

启动 Control File and SPFILE Autobackup 于 30-7月 -08
段 handle=C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2008_07_30\O1_MF_S_661472670_490YF0T3_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 30-7月 -08

RMAN> quit

RMAN-06900: 警告: 无法生成 V$RMAN_STATUS 或 V$RMAN_OUTPUT 行
RMAN-06901: 警告: 禁止更新 V$RMAN_STATUS 和 V$RMAN_OUTPUT 行
来自目标数据库的 ORACLE 错误:


恢复管理器完成。

//这时候再为tt1表插入一条数据7;

SQL> set time on
22:20:50 SQL> insert into tt1 values(7);

已创建 1 行。

22:29:03 SQL> commit;

提交完成。

22:29:05 SQL> select tablespace_name from dba_tables where table_name='TT1';

TABLESPACE_NAME
------------------------------
EXEC

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

//shutdown数据库,然后startup mount状态下

22:31:32 SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
22:40:38 SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area  327155712 bytes
Fixed Size                  1290400 bytes
Variable Size             167776096 bytes
Database Buffers          150994944 bytes
Redo Buffers                7094272 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 13 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 13: 'C:\ORCL\EXEC01.DBF'

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

//开始对数据库做一次不完全恢复,目标是:能出现tt1表中不存在数据7的情况。

C:\Users\niwei>rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期三 7月 30 22:44:29 2008

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

已连接到目标数据库: ORCL (DBID=1166321412, 未打开)

 

RMAN> restore database;

启动 restore 于 30-7月 -08
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
分配的通道: ORA_DISK_2
通道 ORA_DISK_2: sid=156 devtype=DISK
分配的通道: ORA_DISK_3
通道 ORA_DISK_3: sid=155 devtype=DISK

通道 ORA_DISK_2: 正在开始恢复数据文件备份集
通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件
正将数据文件00003恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSAUX_3ML9SJQX_.DBF
正将数据文件00005恢复到C:\ORCL\RMAN_TS.DBF
正将数据文件00006恢复到C:\ORCL\N.DBF
通道 ORA_DISK_2: 正在读取备份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y775C_.BKP
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_UNDOTBS1_3ML9S9JQ_.DBF
正将数据文件00004恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_USERS_3ML9SWGC_.DBF
正将数据文件00009恢复到C:\ORCL\SCOTT\SCOTT_DATA.DBF
通道 ORA_DISK_1: 正在读取备份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y79DF_.BKP
通道 ORA_DISK_3: 正在开始恢复数据文件备份集
通道 ORA_DISK_3: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATAFILE\O1_MF_SYSTEM_3ML9RMHJ_.DBF
正将数据文件00007恢复到C:\ORCL\UNDO1.DBF
正将数据文件00013恢复到C:\ORCL\EXEC01.DBF
通道 ORA_DISK_3: 正在读取备份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y7J3K_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y79DF_.BKP 标记 = DB_FULL
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:42
通道 ORA_DISK_2: 已恢复备份段 1
段句柄 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y775C_.BKP 标记 = DB_FULL
通道 ORA_DISK_2: 恢复完成, 用时: 00:02:47
通道 ORA_DISK_3: 已恢复备份段 1
段句柄 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2008_07_30\O1_MF_NNNDF_DB_FULL_490Y7J3K_.BKP 标记 = DB_FULL
通道 ORA_DISK_3: 恢复完成, 用时: 00:03:15
完成 restore 于 30-7月 -08

RMAN> sql 'alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"';

sql 语句: alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"

RMAN> recover database until time '2008-07-30:22:28:00';

启动 recover 于 30-7月 -08
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
使用通道 ORA_DISK_3


正在开始介质的恢复
介质恢复完成, 用时: 00:00:03

完成 recover 于 30-7月 -08

22:44:15 SQL> alter database open resetlogs;

数据库已更改。

22:52:16 SQL> select * from tt1;

         A
----------
         3
         4
         5
         6
         1
         2

已选择6行。

22:56:00 SQL>

最后发现确实没有了数据为7的记录,所以此次不完全恢复算成功了。

总结:这次是我第一次去给客户现场做服务,问题很简单,但我还是记录下来了,因为在这个过程中,还是有一些收获的:

1.感觉自己的基础理论还可以,但有时候一到实际动手时,感觉有点慌乱。证明自己学习得还是不够。平时还应该多做练习,多动手。

2.对于oracle体系结构通过今天给客户讲解,发现还是凑合的。但是,对于一些结合问题出现的状况,自己还是有些力不从心。证明自己对与oracle的RMAN备份还是有一些理解上不够深刻,还需要多看文档,多做练习。

3.心态上,自己在遇到问题时,容易第一时间去找相关的书籍与资料,感觉自己还是应该多根据出现的问题,通过各个不同的角度去理解,分析。虽然现在达不到高手的水平,但至少要应该培养这样的习惯,这样有利于自己以后的处理问题与解决问题的能力。而且,自己在很多人在场的观看自己处理问题过程时,容易紧张,犯一些比较低级的错误,说明自己还是不够成熟,而且交流上还需要多锻炼。

总之,这次外出服务是我向oracle专业dba的目标迈出的第一步,虽然有很多做的不好的地方,不但给自己敲响了警钟,也给自己添加了信心,与好好往oracleDBA方向前进的动力。这次技术上没有什么,但自己还是感慨颇多的。

 

 

 


 

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

转载于:http://blog.itpub.net/10710960/viewspace-414958/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值