加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle  RMAN 异机恢复到不同路径

(2012-11-06 14:00:07)
标签:

杂谈

分类: oracle数据恢复

Oracle  RMAN 异机恢复到不同路径
 
 
要求:将备份恢复到异机不同路径

 

(一 )数据库源端操作
 
1. 置于归档模式
[oracle@AS5 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Oct 10 00:45:39 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> connect /as sysdba;
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 251658240 bytes
Fixed Size 2083104 bytes
Variable Size 109053664 bytes
Database Buffers 134217728 bytes
Redo Buffers 6303744 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter system set log_archive_dest='/opt/archive' scope=both;
System altered.

SQL> alter database open;
Database altered.

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/archive
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2

2.RMAN 备份 (注意观察DBID)

[oracle@AS5 opt]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Sun Oct 10 00:47:22 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: 10G (DBID=3437766694)

3. 显示参数信息,确认自动备份spfile 和 controlfile
RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters are:
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 '/opt/ora10/product/oracle/dbs/snapcf_10g.f'; # default

4. 修改自动备份spfile 和 controlfile
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

5. rman 备份
RMAN> backup database format '/tmp/backup/back_%t' tag 'Full_backup';

Starting backup at 10-OCT-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=131 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/opt/ora10/product/oradata/10g/system01.dbf
input datafile fno=00003 name=/opt/ora10/product/oradata/10g/sysaux01.dbf
input datafile fno=00002 name=/opt/ora10/product/oradata/10g/undotbs01.dbf
input datafile fno=00004 name=/opt/ora10/product/oradata/10g/users01.dbf
channel ORA_DISK_1: starting piece 1 at 10-OCT-10
channel ORA_DISK_1: finished piece 1 at 10-OCT-10
piece handle=/tmp/backup/back_731983716 tag=FULL_BACKUP comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35
Finished backup at 10-OCT-10

Starting Control File and SPFILE Autobackup at 10-OCT-10
piece handle=/opt/ora10/product/oracle/dbs/c-3437766694-20101010-00 comment=NONE
Finished Control File and SPFILE Autobackup at 10-OCT-10

6. 复制spfile和control file的备份文件到数据库备份目录
[oracle@AS5 opt]$ cp /opt/ora10/product/oracle/dbs/c-3437766694-20101010-00 /tmp/backup/

[oracle@AS5 opt]$ cd /tmp/backup/
[oracle@AS5 backup]$ ls -l
total 555784
-rw-r----- 1 oracle oinstall 561414144 Oct 10 00:49 back_731983716
-rw-r----- 1 oracle oinstall 7143424 Oct 10 00:51 c-3437766694-20101010-00

7.复制文件到目标端
[oracle@AS5 tmp]$ scp backup.tar oracle@192.168.1.12:/tmp

 

 

 

(二)目标服务器端操作

 

1.安装Oracle 软件, 并安装相同版本的补丁,安装路径保持和源端一致

 

2. netca配置监听,并启动它

 

3. 在G:\oracle\product\10.2.0\db_1\database(Linux 是在 dbs目录)下建立一文件  inittest.ora 里面有如下一行参数

SPFILE=G:\oracle\product\10.2.0\db_1/dbs/spfiletest.ora

 

4.使用命令为Windows 添加相同的服务,并启动它

C:\>oradim -NEW -SID test

 

5. 在目标端建立密码文件

C:\>orapwd file=G:\oracle\product\10.2.0\db_1\database\PWDtest.ora  password=sysdba entries=10

 

6. 源将数据库的RMAN备份文件包括pfile和control, 以及生成的pfile 都复制到目标服务器

所有文件仍然复制到目标的 d:\back 目录下

 

7. 根据以前的spfile中定义的admin目录,建立相应目录

建立G:\oracle\product\10.2.0\admin\ adump,bdump,cdump,udump, D:\oracle\product\10.2.0\ORADATA\TEST

 

8. RMAN 恢复spfile

D:\>set ORACLE_SID=test

D:\>echo %ORACLE_SID%

D:\>rman target /

 

恢复管理器: Release 10.2.0.4.0 - Production on 星期五 7月 15 22:35:44 2011

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

已连接到目标数据库 (未启动)

 

9. 设置DBID

RMAN>set dbid=2054617943

 

10. 通过rman 启动到nomount

RMAN> startup nomount;

 

##以下报告正常,因为当前还没有spfile

启动失败: ORA-01078: failure in processing system parameters

ORA-01565: error in identifying file 'D:\oracle\product\10.2.0\db_1/dbs/spfiletest.ora'

ORA-27041: unable to open file

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

在没有参数文件的情况下启动 Oracle 实例以检索 spfile

Oracle 实例已启动

 

系统全局区域总计     159383552 字节

 

Fixed Size                     1302128 字节

Variable Size                 58720656 字节

Database Buffers              92274688 字节

Redo Buffers                   7086080 字节

 

 

RMAN> restore spfile from 'g:\back\C-2054617943-20110715-00';

启动 restore 于 16-7月 -11

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=37 devtype=DISK

通道 ORA_DISK_1: 已找到的自动备份: g:\back\C-2054617943-20110715-00

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

完成 restore 于 16-7月 -11

 

注意spfile 已恢复到 新的目录 G:\oracle\product\10.2.0\db_1\dbs\

 

11.spfile恢复成功后,关闭oracle

RMAN> shutdown immediate;

 

 

9. PLSQL中根据spfile将数据库启动到 mount 状态

C:\>set ORACLE_SID=test

 

D:\>sqlplus /nolog

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期五 7月 15 22:49:50 2011

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

 

10. 根据 SPFILE 生成 pfile

SQL> create pfile='g:\p.ora' from spfile='G:\oracle\product\10.2.0\db_1\dbs\SPFILETEST.ORA';

文件已创建。

 

11. 修改pfile 配置datafile logfile 的位置转换,以及其它文件的位置信息

LOG_FILE_NAME_CONVERT 和DB_FILE_NAME_CONVERT 参数说明

a)    只有在主库,备库数据文件位置不同的情况下,才需要配置;

b)    配置的参数规则为,<对方文件位置>,<本地文件位置>

 

*.DB_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\nail','G:\oracle\product\10.2.0\oradata\nail'

*.LOG_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\nail','G:\oracle\product\10.2.0\oradata\nail'

 

12. 生成新的spfile (建立在生成前,先备份最开始的spfile)

SQL> create spfile='G:\oracle\product\10.2.0\db_1\dbs\SPFILETEST.ORA' from pfile='G:\p.ora';

文件已创建。

 

13. PLSQL 中启动到nomount 状态

C:\>set ORACLE_SID=nail

C:\>sqlplus /nolog

SQL>connect /as sysdba;

SQL> connect /as sysdba;

已连接到空闲例程。

SQL> startup nomount;

ORACLE 例程已经启动。

 

Total System Global Area 1216348160 bytes

Fixed Size                  1298160 bytes

Variable Size             436207888 bytes

Database Buffers          771751936 bytes

Redo Buffers                7090176 bytes

 

 

 

SQL> select name from v$datafile;

 

NAME

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

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF

 

 

 

14. RMAN 中恢复 Control 文件

退出当前RMAN,然后再次进入,进行control 文件恢复

RMN>exit

 

D:\>rman target /

 

恢复管理器: Release 10.2.0.4.0 - Production on 星期六 7月 16 00:58:20 2011

 

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

 

连接到目标数据库: TEST (未装载)

 

RMAN> restore controlfile from 'g:\back\C-2054617943-20110715-00';

 

启动 restore 于 16-7月 -11

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=156 devtype=DISK

 

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

通道 ORA_DISK_1: 还原完成, 用时: 00:00:02

输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL01.CTL

输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL02.CTL

输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROL03.CTL

完成 restore 于 16-7月 -11

完成 restore 于 15-7月 -11

 

注意管制文件,已恢复到了新的目录位置 G 盘

 

 

 

15. PLSQL 中将Oracle 改变到mount 状态

SQL> alter database mount;

数据库已更改。

 

 

SQL> select name from v$datafile;

 

NAME

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

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF

 

12. RMAN 进行数据文件的恢复

D:\>rman target /

 

恢复管理器: Release 10.2.0.4.0 - Production on 星期六 7月 16 01:27:35 2011

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

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

 

run  {

set newname for datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF';

set newname for datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF';

set newname for datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF';

set newname for datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF';

restore database;

switch datafile all;

}

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 16-7月 -11

使用通道 ORA_DISK_1

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

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

正将数据文件00001还原到G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF

正将数据文件00002还原到G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF

正将数据文件00003还原到G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF

正将数据文件00004还原到G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF

通道 ORA_DISK_1: 正在读取备份片段 D:\BACK\ORA_756576508

通道 ORA_DISK_1: 已还原备份片段 1

段句柄 = D:\BACK\ORA_756576508 标记 = FULL_BACKUP

通道 ORA_DISK_1: 还原完成, 用时: 00:00:25

完成 restore 于 16-7月 -11

 

数据文件 1 已转换成数据文件副本

输入数据文件副本 recid=5 stamp=756609818 文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 recid=6 stamp=756609818 文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 recid=7 stamp=756609818 文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF

数据文件 4 已转换成数据文件副本

输入数据文件副本 recid=8 stamp=756609818 文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF

 

数据文件成功恢复

 

 

 

在sqlplus中修改联机日志的路径和名称,以免在后面的open resetlogs报错:具体命令如下:

查询当前数据库的Redo Log 参数信息

SQL> select member from v$Logfile;

 

MEMBER

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

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG

 

SQL> select name from v$tempfile;

 

NAME

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

D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEMP01.DBF

 

 

sqlplus中使用命令将以源库的路径修改为当前路径

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG';

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG';

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG';

alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEMP01.DBF' to 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\TEMP01.DBF';

 

 

 

 

RMAN中做  recover database

 

 

13. RMAN 中 recover database 报错是正常,忽略

##可能会报错,因为没有archivelog 正常,忽略

RMAN> recover database;

启动 recover 于 16-7月 -11

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

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

正在开始介质的恢复

无法找到存档日志

存档日志线程 =1 序列=2

 

 

 

14. PLSQL 中使用resetlogs 方式打开数据库,完成恢复

SQL> alter database open resetlogs;

数据库已更改。

 

 

 
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有