我是靠谱客的博主 娇气高跟鞋,最近开发中收集的这篇文章主要介绍使用生产DB的RMAN备份集恢复其他机器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

生产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备份集恢复其他机器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部