Skip to content

Latest commit

 

History

History
95 lines (90 loc) · 4.31 KB

Oracle recovery.md

File metadata and controls

95 lines (90 loc) · 4.31 KB

一 拷贝最新文件到新主机上

1 rman 连接到源数据库

[oracle@m1 ]$ rman target /
  connected to target database: CRM (DBID=1503894931)
RMAN>

2 分别列出备份文件详细信息

RMAN> list backup of spfile;
         Piece Name: /home/oracle/bak_2018051415/full_bk1_07t2snh317.rmn
         Piece Name: /home/oracle/bak_2018051415/full_bk1_0bt2snil111.rmn
         Piece Name: /home/oracle/bak_2018051415/rman_20180514_SPFILE_0dt2snjh_1_1
         
RMAN> list backup of controlfile;
         Piece Name: /home/oracle/bak_2018051415/full_bk1_06t2snh116.rmn
         Piece Name: /home/oracle/bak_2018051415/full_bk1_0at2snih110.rmn
         Piece Name: /home/oracle/bak_2018051415/rman_20180514_CTL_0ct2snjf_1_1
         
RMAN> list backup of database;
         Piece Name: /home/oracle/bak_2018051415/full_bk1_05t2snh115.rmn
         Piece Name: /home/oracle/bak_2018051415/full_bk1_04t2snh114.rmn
         Piece Name: /home/oracle/bak_2018051415/full_bk1_09t2snih19.rmn
         Piece Name: /home/oracle/bak_2018051415/full_bk1_08t2snih18.rmn
         
RMAN> list backup of archivelog all;

3 copy 这些备份到新的主机并授权

[root@m1 /]# scp -r /home/oracle/bak_2018051415/ root@192.168.190.134:/home/oracle/
[root@m2 /]# cd home/oracle/
[root@m2 oracle]# chown oracle:oinstall *
[root@m2 oracle]# chmod -R 755 *

二 恢复参数文件及控制文件

1 关闭新数据库

SQL> shutdown immediate;

2 先mv新主机上的spfile*.ora文件到别处

[root@m2 /]# cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs/
[root@m2 dbs]# mv spfileorcl.ora spfileorcl.ora.bak

3 在新主机上发起rman连接,设置dbid 并启动实例到nomount状态

[oracle@m2 ]$ rman target /
RMAN> set DBID=1503894931
  executing command: SET DBID
RMAN> startup nomount
  startup failed: ORA-01078: failure in processing system parameters

注意:在rman下即使没有参数文件,默认也会启动一个DUMMY实例,以便能够恢复参数文件。

4 恢复 spfile 文件

[oracle@m2 ]$ rman target /
RMAN> restore spfile to '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora' from '/home/oracle/bak_2018051415/rman_20180514_SPFILE_0dt2snjh_1_1';
  Finished restore at 10-DEC-12 

5 启动数据库到 nomount 状态

RMAN> startup force nomount;

6 恢复控制文件,先mv新主机的control01.ctl文件到别处

[root@m2 /]# cd /u01/app/oracle/oradata/orcl/
[root@m2 orcl]# mv control01.ctl control01.ctl.bak

7 恢复控制文件

RMAN> restore controlfile to '/u01/app/oracle/oradata/orcl/control01.ctl' from '/home/oracle/bak_2018051415/rman_20180514_CTL_0ct2snjf_1_1';
Finished restore at 10-DEC-12

8 拷贝 control01.ctl 覆盖 control02.ctl

[root@m2 /]# cd /u01/app/oracle/fast_recovery_area/orcl/
[root@m2 orcl]# mv control02.ctl control02.ctl.bak
[root@m2 orcl]# cd /u01/app/oracle/oradata/orcl/
[root@m2 orcl]# cp control01.ctl /u01/app/oracle/fast_recovery_area/orcl/
给control02.ctl授权
[root@m2 orcl]#  chown oracle:oinstall *
[root@m2 orcl]#  chmod -R 755 *

9 启动数据库到加载状态

RMAN> alter database mount;

三 在新数据库中注册数据文件备份和归档备份

RMAN> catalog start with '/home/oracle/bak_2018051415/';
...
Do you really want to catalog the above files (enter YES or NO)? yes
...
List of Cataloged Files
... 

四 恢复数据库

1 restore database

RMAN> restore database;
...
Finished restore at 10-DEC-12

2 recover database

RMAN> recover database;
...
Finished recover at 10-DEC-12
报错
RMAN-03002: failure of recover command at 05/14/2018 16:21:36
ORA-19698: /u01/app/oracle/oradata/orcl/redo01.log is from different database: id=1503895833, db_name=ORCL
解决办法:
[root@m1 /]# cd /u01/app/oracle/oradata/orcl/
[root@m1 orcl]#scp redo0* root@192.168.190.134:/home/oracle/
[root@m2 /]# cd home/oracle/
[root@m2 oracle]# chown oracle:oinstall redo0*
[root@m2 oracle]# chmod -R 755 redo0*
重新执行 recover database

3 alter database open resetlogs 打开数据库

SQL> alter database open resetlogs;
Database altered.
恢复完成,登陆验证数据