be异机恢复oracle,oracle-RMAN异机恢复

Step1:设置环境变量

[oracle@ehrprod ~]$ export ORACLE_SID=szuat01

Step 2:恢复参数文件

[oracle@ehrprod ~]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Thu Mar 10 15:01:36 2011

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

connected to target database (not started)

RMAN> set dbid 2805194251;

executing command: SET DBID

RMAN> restore spfile to pfile '/u01/oracle/product/10.2.0.1/dbs/initszuat01.ora' from '/backup/szuat01/rman/backupset/SZUAT01_df0_20110303_95_1_744768707';

Starting restore at 10-MAR-11

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=36 devtype=DISK

channel ORA_DISK_1: autobackup found: /backup/szuat01/rman/backupset/SZUAT01_df0_20110303_95_1_744768707

channel ORA_DISK_1: SPFILE restore from autobackup complete

Finished restore at 10-MAR-11

Step3:根据initSID.ora文件创建目录,同时也可以根据需要修改initSID.ora里面的参数

Step 4:用参数文件启动DB到nomount

RMAN> startup force nomount pfile='/u01/oracle/product/10.2.0.1/dbs/initszuat01.ora';

Oracle instance started

Total System Global Area2147483648 bytes

Fixed Size1268508 bytes

Variable Size570426596 bytes

Database Buffers1560281088 bytes

Redo Buffers15507456 bytes

Step 5:恢复控制文件:

RMAN> restore controlfile from '/backup/szuat01/rman/backupset/SZUAT01_df0_20110303_95_1_744768707';

Starting restore at 10-MAR-11

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/u01/oracle/szuat01/control01.ctl

output filename=/u01/oracle/szuat01/control02.ctl

output filename=/u02/oracle/szuat01/control03.ctl

Finished restore at 10-MAR-11

Step 6:恢复Datafile文件。

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

RMAN> run{

2> set newname for datafile 1 to '/u01/oracle/oradata/testdb/system01.dbf';

3> set newname for datafile 2 to '/u01/oracle/oradata/testdb/undotbs01.dbf';

4> set newname for datafile 3 to '/u01/oracle/oradata/testdb/sysaux01.dbf';

5> set newname for datafile 4 to '/u01/oracle/oradata/testdb/users01.dbf';

6> set newname for datafile 5 to '/u01/oracle/oradata/testdb/####.dbf';

7> set newname for datafile 6 to '/u01/oracle/oradata/testdb/###.dbf';

8> restore database;

9> }

(说明:Datafile可以通过查询SQL> select file#, name, status from v$datafile;获得,restore database必须和set newname在一个run里,否则会去取原DB的路径去restore.如果不需要改文件路径,则直接restore即可,下一部也可以不要。restore前可能需要执行一下RMAN> catalog start with '/backup/szuat01/rman/backupset';)

Step 7: 根据需要修改DB的Datafile,Logfile, tempfile文件路径。 (此步在其他很多文档里没有提到。实践时发现如果文件改了路径,即使有前面的set newname,recover的时候也还是会去找原来的路径,所以需要手动去改下。)

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

。。。

SQL> alter database rename file '/oracle/oradata/testdb/system01.dbf' to '/u01/oracle/oradata/testdb/ system01.dbf';

Database altered.

。。。

SQL> select group#,member from v$logfile;

....

SQL> alter database rename file '/oracle/oradata/testdb/redo01.log' to '/u01/oracle/oradata/testdb/redo01.log';

Database altered.

...

SQL> select * from dba_temp_files;

select * from dba_temp_files

*

ERROR at line 1:

ORA-01157: cannot identify/lock data file 201 - see DBWR trace file

ORA-01110: data file 201: '/oracle/oradata/macaubb/temp01.dbf'

SQL> alter database tempfile '/oracle/oradata/testdb/temp01.dbf' drop;

Database altered.

SQL> select * from dba_temp_files;

no rows selected

SQL> alter tablespace temp add tempfile '/u01/oracle/oradata/testdb/temp01.dbf' size 50m reuse;

Tablespace altered.

...

Step 8:恢复数据库。

RMAN> recover database;

….

RMAN> alter database open resetlogs;

using target database control file instead of recovery catalog

database opened

Step 9:检查运行是否正常,可以登陆测试,重启测试,查看一下alert文件。

恢复后的DB想要在dbca里看得到,需要修改文件/etc/oratab,这样才可以用dbca去删除。

另外:

迁移后如果报错,

ORA-39700: database must be opened with UPGRADE option

可能是因为数据库版本不一致。原DB的版本较低,导致软件升级了,DB没有升级。解决办法是用startup upgrade后执行

SQL>@/data/oracle/OracleHome/rdbms/admin/catupgrd.sql

后重启就好了。

(可能某些情况下还需执行

SQL>@/data/oracle/OracleHome/rdbms/admin/catalog.sql

SQL>@/data/oracle/OracleHome/rdbms/admin/catproc.sql)

如果恢复时不想恢复某个tablespace, 可以用命令:RMAN> restore database skip [forever] tablespace rmand;

RMAN> recover database skip [forever] tablespace rmand;

如果想要恢复archivelog,可以用命令RMAN> restore archivelog from logseq 2088 [until logseq 2092];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值