我是靠谱客的博主 轻松白云,最近开发中收集的这篇文章主要介绍利用rman全备恢复删除的数据库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 这次给一个测试库做了一个 RMAN 全备,就把数据库给删除了,一点痕迹都没留。在做恢复的时候走了歪路,把过程记录下来,以示警醒。

 

1、在删除后想利用RMAN全备恢复,但一开始便有问题,备份文件没得DBID,找了大半天也找不着,没办法,,直接利用RMAN备份恢复SPFILE、控制文件和数据文件不行。在这一过程中把目录结构、密码文件都建立起来,还oradim一个实例,进行RMAN还是需要DBID

 

2、只有先建一个空库,然后再从RMAN备份进行恢复。连接进去,产生了新的DBID

C:Documents and Settingsadmin>rman target /

 

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 3 29 21:14:15 2010

 

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

 

连接到目标数据库: ORCL (DBID=1242730612)

 

RMAN> show all;

 

使用目标数据库控制文件替代恢复目录

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

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

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLEPRODUCT10.2.0DB_1DATABASES

NCFORCL.ORA'; # default

 

空库的时候找不到备份集

RMAN> list backup;

 

 

从指定的备份集文件恢复参数文件

RMAN> restore spfile to pfile 'e:backuppfile.ora' from 'E:BackupORCL_FULL_08

L9GA98_1_1.BAK';

 

启动 restore 29-3 -10

使用通道 ORA_DISK_1

 

通道 ORA_DISK_1: 已找到的自动备份: E:BackupORCL_FULL_08L9GA98_1_1.BAK

通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成

完成 restore 29-3 -10

 

 

从指定的备份集文件中恢复控制文件,错误就不管了!

RMAN> restore controlfile to 'e:backupcontrol01.ctl' from 'E:BackupORCL_FULL_08L9GA98_1_1.BAK';

 

启动 restore 29-3 -10

使用通道 ORA_DISK_1

 

通道 ORA_DISK_1: 正在复原控制文件

 MAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: restore 命令 ( 03/29/2010 21:24:47 ) 失败

ORA-19870: 读取备份段 E:BACKUPORCL_FULL_08L9GA98_1_1.BAK 时出错

ORA-19563: control file 标题 (文件 E:BACKUPCONTROL01.CTL) 验证失败

 

RMAN> quit

 

 

RMAN-06900: 警告: 无法生成 V$RMAN_STATUS V$RMAN_OUTPUT

RMAN-06901: 警告: 禁止更新 V$RMAN_STATUS V$RMAN_OUTPUT

来自目标数据库的 ORACLE 错误:

 

 

恢复管理器完成。

 

参数文件及控制文件恢复过来了,现在好办了!

重新用恢复过来的参数文件及控制文件启动实例

C:Documents and Settingsadmin>sqlplus /nolog

 

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 3 29 21:50:00 2010

 

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

 

SQL> conn / as sysdba

已连接。

SQL> create spfile from pfile='e:backuppfile.ora';

 

文件已创建。

 

SQL> startup mount;

ORACLE 例程已经启动。

 

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             226495364 bytes

Database Buffers          377487360 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

 

进入到RMAN看看效果,DBID找回来了。

C:Documents and Settingsadmin>rman target /

 

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 3 29 21:32:31 2010

 

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

 

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

 

同样可以看到备份集,现在应该可以恢复数据库了!

RMAN> list backup;

 

使用目标数据库控制文件替代恢复目录

 

备份集列表

===================

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

1       Full    6.80M      DISK        00:00:02     26-3 -10

        BP 关键字: 1   状态: AVAILABLE  已压缩: NO  标记: TAG20100326T000054

段名:E:BACKUPFULL_02L9G9LN_1_1.BAK

  包括的控制文件: Ckp SCN: 992794       Ckp 时间: 26-3 -10

  包含的 SPFILE: 修改时间: 25-3 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

2       Full    6.80M      DISK        00:00:02     26-3 -10

        BP 关键字: 2   状态: AVAILABLE  已压缩: NO  标记: TAG20100326T000202

段名:E:BACKUPFULL_04L9G9NQ_1_1.BAK

  包括的控制文件: Ckp SCN: 992986       Ckp 时间: 26-3 -10

  包含的 SPFILE: 修改时间: 25-3 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

3       Full    6.80M      DISK        00:00:02     26-3 -10

        BP 关键字: 3   状态: AVAILABLE  已压缩: NO  标记: TAG20100326T000538

段名:E:BACKUPFULL_06L9G9UI_1_1.BAK

  包括的控制文件: Ckp SCN: 993119       Ckp 时间: 26-3 -10

  包含的 SPFILE: 修改时间: 25-3 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

4       Full    610.73M    DISK        00:00:43     26-3 -10

        BP 关键字: 4   状态: AVAILABLE  已压缩: NO  标记: TAG20100326T001034

段名:E:BACKUPORCL_FULL_07L9GA7Q_1_1.BAK

  备份集 4 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  1       Full 994339     26-3 -10 D:ORADATAORCLSYSTEM01.DBF

  2       Full 994339     26-3 -10 D:ORADATAORCLUNDOTBS01.DBF

  3       Full 994339     26-3 -10 D:ORADATAORCLSYSAUX01.DBF

  4       Full 994339     26-3 -10 D:ORADATAORCLUSERS01.DBF

  5       Full 994339     26-3 -10 D:ORADATAORCLMYUSER.DBF

  6       Full 994339     26-3 -10 D:ORADATAORCLPERFSTAT.DBF

 

RMAN> restore database;

 

启动 restore 29-3 -10

启动 implicit crosscheck backup 29-3 -10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 4 对象

完成 implicit crosscheck backup 29-3 -10

 

启动 implicit crosscheck copy 29-3 -10

使用通道 ORA_DISK_1

完成 implicit crosscheck copy 29-3 -10

 

搜索恢复区域中的所有文件

正在编制文件目录...

没有为文件编制目录

 

使用通道 ORA_DISK_1

 

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:ORADATAORCLSYSTEM01.DBF

正将数据文件00002恢复到D:ORADATAORCLUNDOTBS01.DBF

正将数据文件00003恢复到D:ORADATAORCLSYSAUX01.DBF

正将数据文件00004恢复到D:ORADATAORCLUSERS01.DBF

正将数据文件00005恢复到D:ORADATAORCLMYUSER.DBF

正将数据文件00006恢复到D:ORADATAORCLPERFSTAT.DBF

通道 ORA_DISK_1: 正在读取备份段 E:BACKUPORCL_FULL_07L9GA7Q_1_1.BAK

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = E:BACKUPORCL_FULL_07L9GA7Q_1_1.BAK 标记 = TAG20100326T001034

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:45

完成 restore 29-3 -10

 

成功恢复!

RMAN> alter database open resetlogs;

 MAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: alter db 命令 ( 03/29/2010 21:36:30 ) 失败

ORA-01152: 文件 1 没有从过旧的备份中恢复

ORA-01110: 数据文件 1: 'D:ORADATAORCLSYSTEM01.DBF'

 

出现这样的错误,很奇怪!

查看change#没什么不一样,,最终还是打不开!

SQL> select checkpoint_change# from v$database;

 

CHECKPOINT_CHANGE#

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

            993690

 

SQL> select file#,checkpoint_change# from v$datafile;

 

     FILE# CHECKPOINT_CHANGE#

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

         1             994339

         2             994339

         3             994339

         4             994339

         5             994339

         6             994339

 

已选择6行。

 

SQL> select file#,checkpoint_change# from v$datafile_header;

 

     FILE# CHECKPOINT_CHANGE#

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

         1             994339

         2             994339

         3             994339

         4             994339

         5             994339

         6             994339

 

已选择6行。

 

 

SQL> recover database using backup controlfile until cancel;

ORA-00279: 更改 994339 ( 03/26/2010 00:10:35 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:ORADATAFLASH_RECOVERY_AREAORCLARCHIVELOG2010_03_29O1_MF_1_20_%U_.

ORA-00280: 更改 994339 (用于线程 1) 在序列 #20

 

 

指定日志: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误

ORA-01194: 文件 3 需要更多的恢复来保持一致性

ORA-01110: 数据文件 3: 'D:ORADATAORCLSYSAUX01.DBF'

 

 

ORA-01112: 未启动介质恢复

 

 

SQL> alter database open resetlogs;

alter database open resetlogs

*

1 行出现错误:

ORA-01194: 文件 3 需要更多的恢复来保持一致性

ORA-01110: 数据文件 3: 'D:ORADATAORCLSYSAUX01.DBF'

 

 

SQL> recover database using backup controlfile until cancel;

ORA-00279: 更改 994339 ( 03/26/2010 00:10:35 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:ORADATAFLASH_RECOVERY_AREAORCLARCHIVELOG2010_03_29O1_MF_1_20_%U_.

ORA-00280: 更改 994339 (用于线程 1) 在序列 #20

 

 

指定日志: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误

ORA-01194: 文件 3 需要更多的恢复来保持一致性

ORA-01110: 数据文件 3: 'D:ORADATAORCLSYSAUX01.DBF'

 

 

ORA-01112: 未启动介质恢复

 

 

SQL> select file#,checkpoint_change# from v$datafile;

 

     FILE# CHECKPOINT_CHANGE#

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

         1             994339

         2             994339

         3             994339

         4             994339

         5             994339

         6             994339

 

已选择6行。

 

SQL> select file#,checkpoint_change# from v$datafile_header;

 

     FILE# CHECKPOINT_CHANGE#

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

         1             994339

         2             994339

         3             994339

         4             994339

         5             994339

         6             994339

 

已选择6行。

 

 

反正是有问题,,想想可能与新建的空库有关,于是关闭数据库,删除所有数据文件,

 

SQL> shutdown immediate;

ORA-01109: 数据库未打开

 

 

已经卸载数据库。

ORACLE 例程已经关闭。

 

C:Documents and Settingsadmin>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期一 3 29 22:01:49 2010

 

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

 

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

 

RMAN> restore database;

 

启动 restore 29-3 -10

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

 

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:ORADATAORCLSYSTEM01.DBF

正将数据文件00002恢复到D:ORADATAORCLUNDOTBS01.DBF

正将数据文件00003恢复到D:ORADATAORCLSYSAUX01.DBF

正将数据文件00004恢复到D:ORADATAORCLUSERS01.DBF

正将数据文件00005恢复到D:ORADATAORCLMYUSER.DBF

正将数据文件00006恢复到D:ORADATAORCLPERFSTAT.DBF

通道 ORA_DISK_1: 正在读取备份段 E:BACKUPORCL_FULL_07L9GA7Q_1_1.BAK

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = E:BACKUPORCL_FULL_07L9GA7Q_1_1.BAK 标记 = TAG20100326T001034

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:55

完成 restore 29-3 -10

 

 

重新启动数据库,,OK

SQL> startup mount;

ORACLE 例程已经启动。

 

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             226495364 bytes

Database Buffers          377487360 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

SQL> alter database open resetlogs;

 

数据库已更改。

 

 

总结:

1、走歪路的原因出现在第一步,,应该来说只需要找个一个参数文件将实例启动到NOMOUNT状态即可恢复参数文件及控制文件,后续的工作就简单多了·!

2 、在备份的时候要注意将 DBID 包含在备份文件名中,这样会省去更多的麻烦!

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

转载于:http://blog.itpub.net/9932141/viewspace-630723/

最后

以上就是轻松白云为你收集整理的利用rman全备恢复删除的数据库的全部内容,希望文章能够帮你解决利用rman全备恢复删除的数据库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部