今天参考了DAVE(链接:http://blog.csdn.net/tianlesoftware/article/details/5749932)的笔记,也做了一次异机恢复实验,中间遇到了一些问题,特记录:
遇到的问题:
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