概述
生产DB的RMAN备份集恢复到其他的机器(简称目标DB)上使用,这样的恢复做过好多次了。虽然步骤较为简单,但是一直没有详细总结过。
今天又奋战了几个小时,又恢复了一台,现在把步骤总结一下
一.环境
生产DB环境
OS:HP-UX 11i
Oracle release:9205
RMAN备份集共300G左右(周二的level 0全备集;周三,周四的差量增量level 2备份集)
目标DB环境
OS:HP-UX 11Ii
Oracle release:9205
二.目标DB
1.创建oracle用户,DBA组,并授权
# groupadd dba
# useradd -g dba oracle
# passwd oracle
# chown -R oracle:dba /opt/oracle
----也可以用SAM
2.设置环境变量
3.将生产DB的pfile文件FTP到目标DB,在目标DB创建与生产DB相同的目录.
4.在目标DB创建生产DB的RMAN备份集存放的目录,在没有使用catalog情况下这点必然保持一样。
三.移植备份集到目标DB
可以使用FTP或是OS命令,在使用FTP时最好使用binary模式传。
四.在nomount下恢复controlfile(使用最新的周四备份的controlfile)
$ rman target /
Recovery Manager: Release 9.2.0.5.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: ORADB (not mounted)
RMAN> restore controlfile from '/dborabak/backup/datafiles/bku_ORADB_ctl_20070111_c-2922337169-20070111-00.file';
Starting restore at 20070126015644
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=15 devtype=DISK
channel ORA_DISK_1: restoring controlfile
channel ORA_DISK_1: restore complete
replicating controlfile
input filename=/dboradata/ORADB/system/control01.ctl
output filename=/dboradata/ORADB/system/control02.ctl
output filename=/dboradata/ORADB/system/control03.ctl
Finished restore at 20070126015736
RMAN>
五.启动DB到mount
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.5.0 - Production on Fri Jan 26 02:28:35 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
ORADB STARTED
SQL> alter database mount;
Database altered.
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
oradb MOUNTED
SQL>
六.restore和recover DB
$rman target /
run {
ALLOCATE CHANNEL ch_disk_db_1 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch_disk_db_2 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch_disk_db_3 DEVICE TYPE DISK;
ALLOCATE CHANNEL ch_disk_db_4 DEVICE TYPE DISK;
restore database;
recover database until sequence=24192 thread=1;----- 在周四差量的增量备份完成时的最后一个arachivelog的sequence是24192
release channel ch_disk_db_1;
release channel ch_disk_db_2;
release channel ch_disk_db_3;
release channel ch_disk_db_4;}
七.resetlogs打开DB
SQL> alter database open resetlogs;
Database altered.
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
oradb OPEN
八.数据比较
九.在恢复过程中常见一个问题
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/26/2007 18:33:48
ORA-19505: failed to identify file "/dborabak/backup/datafiles/bku_ORADB_LVL2_20070110_28877_1_611479893.file"
ORA-27046: file size is not a multiple of logical block size
Additional information: 1
ORACLE解释如下
$ oerr ora 27046
27046, 00000, "file size is not a multiple of logical block size"
// *Cause: file size as indicated by stat is not correct, additional
// information indicates which function encountered the error
// *Action: verify that the file has not been overwritten or truncated
$
造成这个问题的原因一般是因为数据文件从一个裸设备DD或是FTP到了文件系统,正好数据文件的大小不是按ORACLE的block size的整数倍。
网上找到解决方法如下
把数据文件resize到oracle的block size的整数倍
alter database datafile '' resize < value MB>
如果这里的oracle的block size=8K,那么这个value一定要是8的整数倍了.
遇上到两次这个ORA-27064错误,都是先比较大小,然后重新FTP解决了
生产DB的备份集中
$ ls -l bku_ORADB_LVL2_20070110_28876_1_611479877.file
-rw-rw-rw- 1 oracle dba 213991424 Jan 26 18:24 bku_ORADB_LVL2_20070110_28876_1_611479877.file
目标DB上
$ ls -l bku_ORADB_LVL2_20070110_28876_1_611479877.file
-rw-rw-rw- 1 oracle dba 99899493 Jan 26 01:04 bku_ORADB_LVL2_20070110_28876_1_611479877.file
同一个文件,一个是213991424,一个99899493。明显不同,然后FTP后大小一样的。为什么没有去深究。
PS:在恢复过程中由于偶的目标DB的机器是本地磁盘,IO读写能力太鸟差了-_-。
$ sar -u 2 1000
HP-UX restore B.11.11 U 9000/800 01/26/07
23:20:14 %usr %sys %wio %idle
23:20:16 0 0 99 0
23:20:18 0 1 99 0
23:20:20 0 0 100 0
23:20:22 0 0 100 0
23:20:24 3 10 87 0
23:20:26 0 1 83 15
23:20:28 0 0 100 0
23:20:30 1 0 98 1
23:20:32 0 0 100 0
23:20:34 0 1 99 0
23:20:36 0 0 99 0
23:20:38 0 0 100 0
23:20:40 0 0 100 0
23:20:42 0 1 99 0
23:20:44 0 1 99 0
23:20:46 0 0 100 0
23:20:48 8 2 90 0
23:20:50 0 1 99 0
23:20:52 0 0 87 12
23:20:54 0 0 78 22
23:20:56 0 1 99 0
23:20:58 0 0 100 0
23:21:00 0 0 100 0
23:21:02 0 1 99 0
23:21:04 0 0 100 0
23:21:06 0 0 100 0
23:21:08 0 0 100 0
23:21:10 0 1 93 6
23:21:12 0 1 99 0
23:21:14 0 1 99 0
............
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7364032/viewspace-17453/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7364032/viewspace-17453/
最后
以上就是娇气高跟鞋为你收集整理的使用生产DB的RMAN备份集恢复其他机器的全部内容,希望文章能够帮你解决使用生产DB的RMAN备份集恢复其他机器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复