您的位置:首页 > 其它

使用RMAN进行异机恢复

2013-07-29 10:47 369 查看
今天参考了DAVE(链接:/article/1449284.html)的笔记,也做了一次异机恢复实验,中间遇到了一些问题,特记录:

遇到的问题:

1、在备份时未采用DAVE的脚本,在复制数据库的时候,导致出现RMAN-06023 : no backup or copy of datafile found to restore,遇到这种情况是由于:在做RMAN 异机恢复的时候,先备份的数据文件,然后备份的控制文件,但在备份控制文件时没有切当前归档,所以备份的控制文件不是最新的,我的解决办法是,重新备份了一下控制文件,然后再恢复,就能找到了。

2、不细心,辅助库的不目录建的不全,不能生成数据文件。

3、中间还自作聪明,想从10.2.01直接复制到11.2.01,在复制过程中无报错,在打开数据库时,提示需要升级。

步骤:

目标库信息:

ORACLE_BASE: /oracle/app/oracle

ORACLE_HOME: /oracle/app/oracle/product/10.2.0/db_2

ORACLE_SID:orcl

IP: 192.168.1.222

辅助库信息:

ORACLE_BASE: /oracle/app/oracle

ORACLE_HOME: /oracle/app/oracle/product/10.2.0/db_1

ORACLE_SID:tony

IP: 192.168.1.220

我们以实例名相同的为例,实例名不同也一样,在pfile里修改对应参数就可以了。

步骤如下:

(1)构建辅助数据库目录结构

(2)创建pfile,并复制到辅助数据库,修改相关内容

(3)创建辅助实例口令文件

(4)RMAN 备份源库

(5)添加配置监听

(6)将源库备份文件拷贝到辅助库相同位置

(7)用pfile文件,将辅助数据库启动到nomount 状态

(8)执行RMAN duplicate命令复制数据库

(9)创建spfile文件

(10)在磁带上恢复备份

(11)使用DBNEWID程序生成新的DBID

1、辅助库

mkdir -p /oracle/app/oracle/admin/tony/{a,b,c,u,dp}dump

mkdir -p /oracle/app/oracle/oradata/tony/

2、目标库

createp pfile='/oracle/backup/inittony.ora' from pfile

scp /oracle/backup/inittony.ora 192.168.58.220:$ORACLE_HOME/dbs/

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=54525952

orcl.__streams_pool_size=0

*.audit_file_dest='/oracle/app/oracle/admin/tony/adump'

*.background_dump_dest='/oracle/app/oracle/admin/tony/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/oracle/app/oracle/oradata/tony/control01.ctl','/oracle/app/oracle/oradata/tony/control02.ctl','/oracle/app/oracle/oradata/tony/control03.ctl'#Restore Controlfile

*.core_dump_dest='/oracle/app/oracle/admin/tony/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='/oracle/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=6341787648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.job_queue_processes=10

*.log_archive_dest_1=''

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=300

*.pga_aggregate_target=60817408

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_max_size=188743680

*.sga_target=183500800

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/oracle/app/oracle/admin/tony/udump'

db_file_name_convert = ('/oracle/app/oracle/oradata/orcl','/oracle/app/oracle/oradata/tony')

log_file_name_convert = ('/oracle/app/oracle/oradata/orcl','/oracle/app/oracle/oradata/tony')

3、辅助库创建口令文件

orapwd file=$ORACLE_HOME/dbs/orapwtony password=tony

4、目标库RMAN备份数据库

RUN {

allocate channel c1 type disk;

allocate channel c2 type disk;

BACKUP FORMAT '/oracle/backup/orcl_%U_%T' skip inaccessible filesperset 5 DATABASE TAG orcl_hot_db_bk;

sql 'alter system archive log current';

BACKUP FORMAT '/oracle/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;

backup current controlfile tag='bak_ctlfile' format='/oracle/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/oracle/backup/ORCL_spfile_%U_%T';

release channel c2;

release channel c1;

}

(5)两边添加配置监听

通过NETMGR添加,并测试连接正常

(6)将源库备份文件拷贝到辅助库相同位置

[root@oracle10g ~]# more /etc/exports

/oracle/backup (rw,sync)

mkdir -p /oracle/backup

chmod -R 777 /oracle/backup/

[root@oracle~]# mount -t nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 192.168.58.222:/oracle/backup /oracle/backup

[root@oracle~]#

[root@oracle~]# ls /oracle/backup

archivelog inittony.ora

ctl_123_1_20130727_821871179.bkp log

FULLBACKUP_ORCL_1348585705_121_1_20130727_821871118.bkp spfile_124_1_20130727_821871181.bkp

(7)用pfile文件,将辅助数据库启动到nomount 状态

startup nomount pfile=?/dbs/inittony.ora

(8)目标库执行RMAN duplicate命令复制数据库

connect auxiliary sys/tony@tony;

duplicate target database to tony

(9)辅助库创建spfile文件

create spfile from pfile=?/dbs/inittony.ora

shutdown immediate;

startup

(10)辅助库使用DBNEWID程序生成新的DBID
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: