Linux运维之Oracle异机恢复(实例名相同)

本文详细介绍了在Linux系统中进行Oracle数据库异机恢复的过程,包括从源数据库拷贝最新文件、恢复参数文件和控制文件、注册数据文件备份和归档备份,以及最后的数据库恢复操作。关键步骤涉及rman连接、备份复制、spfile和控制文件的恢复,以及数据库的打开和重置日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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.
恢复完成,登陆验证数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值