您的位置:首页 > 数据库 > Oracle

Oracle RMAN Migrate DB from RAC ASM to Single non-ASM

2013-07-23 11:02 639 查看
环境: Linux 5.5 x64 + Oracle 11.2.3 RAC + ASM ->Linux 5.5 x64 + Oracle 11.2.3 Single + non-ASM

迁移: ORALCE_HOME,DATABASE(pfile,controlfile,datafile,redolog,archivelog)

####################################### RAC Oracle Home迁移成Single Oracle Home #######################################

1, Oracle Home从RAC拷贝到Single主机,启动SQLPLUS出现ORA-29702
http://somireddy.wordpress.com/2011/10/08/ora-29702-error-occurred-in-cluster-group-service-operation/
cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk rac_off

make -f ins_rdbms.mk ioracle

[oraprod@q1ebsdb lib]$ ll|grep ins_rdbms.mk

-rw-r--r-- 1 oraprod oinstall 40678 Sep 17 2011 ins_rdbms.mk

[oraprod@q1ebsdb lib]$ make -f ins_rdbms.mk rac_off

rm -f /prod/oracle/product/11.2.0/db_1/lib/libskgxp11.so

cp /prod/oracle/product/11.2.0/db_1/lib//libskgxpg.so /prod/oracle/product/11.2.0/db_1/lib/libskgxp11.so

rm -f /prod/oracle/product/11.2.0/db_1/lib/libskgxn2.so

cp /prod/oracle/product/11.2.0/db_1/lib//libskgxns.so \

/prod/oracle/product/11.2.0/db_1/lib/libskgxn2.so

/usr/bin/ar d /prod/oracle/product/11.2.0/db_1/rdbms/lib/libknlopt.a kcsm.o

/usr/bin/ar cr /prod/oracle/product/11.2.0/db_1/rdbms/lib/libknlopt.a /prod/oracle/product/11.2.0/db_1/rdbms/lib/ksnkcs.o

[oraprod@q1ebsdb lib]$ make -f ins_rdbms.mk ioracle

chmod 755 /prod/oracle/product/11.2.0/db_1/bin

- Linking Oracle

rm -f /prod/oracle/product/11.2.0/db_1/rdbms/lib/oracle

gcc -o /prod/oracle/product/11.2.0/db_1/rdbms/lib/oracle -m64 -L/prod/oracle/product/11.2.0/db_1/rdbms/lib/ -L/prod/oracle/product/11.2.0/db_1/lib/ -L/prod/oracle/product/11.2.0/db_1/lib/stubs/ -Wl,-E /prod/oracle/product/11.2.0/db_1/rdbms/lib/opimai.o /prod/oracle/product/11.2.0/db_1/rdbms/lib/ssoraed.o
/prod/oracle/product/11.2.0/db_1/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv11 -Wl,--no-whole-archive /prod/oracle/product/11.2.0/db_1/lib/nautab.o /prod/oracle/product/11.2.0/db_1/lib/naeet.o /prod/oracle/product/11.2.0/db_1/lib/naect.o /prod/oracle/product/11.2.0/db_1/lib/naedhs.o
/prod/oracle/product/11.2.0/db_1/rdbms/lib/config.o -lserver11 -lodm11 -lcell11 -lnnet11 -lskgxp11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lvsn11 -lcommon11
-lgeneric11 -lknlopt `if /usr/bin/ar tv /prod/oracle/product/11.2.0/db_1/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap11" ; fi` -lslax11 -lpls11 -lrt -lplp11 -lserver11 -lclient11 -lvsn11 -lcommon11 -lgeneric11 `if [ -f
/prod/oracle/product/11.2.0/db_1/lib/libavserver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ -f /prod/oracle/product/11.2.0/db_1/lib/libavclient11.a ] ; then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11 -lrt -lplp11 -ljavavm11
-lserver11 -lwwg `cat /prod/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /prod/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lmm -lsnls11 -lnls11
-lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lztkg11 `cat /prod/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /prod/oracle/product/11.2.0/db_1/lib/ldflags`
-lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /prod/oracle/product/11.2.0/db_1/rdbms/lib/libknlopt.a
| grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo11"; fi` -L/prod/oracle/product/11.2.0/db_1/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lordimt11 -lclsra11 -ldbcfg11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 -locr11
-locrb11 -locrutl11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 -loraz -llzopro -lorabz2 -lipp_z -lipp_bz2 -lippdcemerged -lippsemerged -lippdcmerged -lippsmerged -lippcore -lippcpemerged -lippcpmerged -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11
-lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lsnls11 -lunls11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lasmclnt11 -lcommon11 -lcore11
-laio `cat /prod/oracle/product/11.2.0/db_1/lib/sysliblist` -Wl,-rpath,/prod/oracle/product/11.2.0/db_1/lib -lm `cat /prod/oracle/product/11.2.0/db_1/lib/sysliblist` -ldl -lm -L/prod/oracle/product/11.2.0/db_1/lib

test ! -f /prod/oracle/product/11.2.0/db_1/bin/oracle ||\

mv -f /prod/oracle/product/11.2.0/db_1/bin/oracle /prod/oracle/product/11.2.0/db_1/bin/oracleO

mv /prod/oracle/product/11.2.0/db_1/rdbms/lib/oracle /prod/oracle/product/11.2.0/db_1/bin/oracle

chmod 6751 /prod/oracle/product/11.2.0/db_1/bin/oracle

####################################### RMAN恢复备份集权限不足 #######################################

2, 问题2:备份集权限不足。

RMAN> restore spfile from '/u01/FULL_PROD_20130715_16';

Starting restore at 15-JUL-13

using channel ORA_DISK_1

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 07/15/2013 17:32:26

RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

这里是权限的问题,设置全部可读写,恢复成功。

[root@q1ebsdb u01]# chmod 777 ARCH_PROD_20130715_17 CTRL_PROD_20130715_18 FULL_PROD_20130715_1*

[oraprod@q1ebsdb u01]$ rman target /

Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jul 15 17:33:10 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: PROD (not mounted)

RMAN> restore spfile from '/u01/FULL_PROD_20130715_16';

Starting restore at 15-JUL-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=9 device type=DISK

channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/FULL_PROD_20130715_16

channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete

Finished restore at 15-JUL-13

####################################### 备份数据库 #######################################

# 备份数据库。

backup full database tag 'FULL' format='/u01/FULL_%d_%T_%s';

backup archivelog all tag 'ARCH' format '/u01/ARCH_%d_%T_%s' delete all input;

backup current controlfile tag 'CTRL' format '/u01/CTRL_%d_%T_%s';

#######################################3种方式恢复数据库 RAC ASM ->Single non-ASM#######################################

1,相同DBNAME,相同DBID

2,不同DBNAME,相同DBID

3,不同DBNAME,不同DBID

####################################### 1 RMAN恢复相同DBNAME,相同DBID数据库 #######################################

# 恢复同名数据库,DBNAME和DBID都相同。

1,利用恢复出来的spfile生成pfile,并修改成initprod.ora,SQLPLUS启动数据库nomount状态。

2,恢复DB_NAME相同的数据库: RMAN恢复控制文件,转换恢复数据文件,恢复数据库,启用新的归档日志,再次恢复数据库。

startup nomount;

set dbid=228115897

restore controlfile from '/u01/CTRL_PROD_20130715_18';

alter database mount;

catalog start with '/u01';

run{

SET NEWNAME FOR DATABASE TO '/prod/oracle/oradata/prod/%b';

SET NEWNAME FOR TEMPFILE 1 TO '/prod/oracle/oradata/prod/%b';

RESTORE DATABASE;

SWITCH DATAFILE ALL;

SWITCH TEMPFILE ALL;

}

RECOVER DATABASE;

此时数据库会开始使用归档目录下的归档日志,重新catalog新产生并拷贝过来的归档文件。

catalog start with '/prod/oracle/fast_recovery_area/PROD/archivelog/2013_07_15';

RECOVER DATABASE;

alter database open resetlogs;

通过nis可以进行数据库改名。

####################################### 2 RMAN恢复不同DBNAME,但相同DBID数据库 #######################################

# RMAN恢复到不同数据库,DBNAME不同,但DBID相同。

准备2个pfile,initprod.ora和initTEST.ora,仅仅db_name不同而已。

export ORACLE_SID=prod

startup nomount pfile='/prod/oracle/product/11.2.0/db_1/dbs/initprod.ora';

restore controlfile from '/u01/CTRL_PROD_20130715_18';

startup mount;

catalog start with '/u01/';

run{

SET NEWNAME FOR DATABASE TO '/prod/oracle/oradata/TEST/%b';

SET NEWNAME FOR TEMPFILE 1 TO '/prod/oracle/oradata/TEST/%b';

RESTORE DATABASE;

SWITCH DATAFILE ALL;

SWITCH TEMPFILE ALL;

}

修改logfile,主要是为了更新控制文件的在线日志从ASM->non-ASM。

alter database rename file '+DATADG/prod/onlinelog/group_1.267.817172147' to '/prod/oracle/oradata/TEST/group_1.267.817172147';

alter database rename file '+FRADG/prod/onlinelog/group_1.260.817172149' to '/prod/oracle/oradata/TEST/group_1.260.817172149';

alter database rename file '+DATADG/prod/onlinelog/group_2.266.817172151' to '/prod/oracle/oradata/TEST/group_2.266.817172151';

alter database rename file '+FRADG/prod/onlinelog/group_2.259.817172151' to '/prod/oracle/oradata/TEST/group_2.259.817172151';

alter database rename file '+DATADG/prod/onlinelog/group_3.265.817172153' to '/prod/oracle/oradata/TEST/group_3.265.817172153';

alter database rename file '+FRADG/prod/onlinelog/group_3.258.817172153' to '/prod/oracle/oradata/TEST/group_3.258.817172153';

alter database rename file '+DATADG/prod/onlinelog/group_4.264.817172155' to '/prod/oracle/oradata/TEST/group_4.264.817172155';

alter database rename file '+FRADG/prod/onlinelog/group_4.257.817172155' to '/prod/oracle/oradata/TEST/group_4.257.817172155';

alter database rename file '+DATADG/prod/onlinelog/group_5.271.817172163' to '/prod/oracle/oradata/TEST/group_5.271.817172163';

alter database rename file '+FRADG/prod/onlinelog/group_5.264.817172163' to '/prod/oracle/oradata/TEST/group_5.264.817172163';

alter database rename file '+DATADG/prod/onlinelog/group_6.270.817172163' to '/prod/oracle/oradata/TEST/group_6.270.817172163';

alter database rename file '+FRADG/prod/onlinelog/group_6.263.817172163' to '/prod/oracle/oradata/TEST/group_6.263.817172163';

alter database rename file '+DATADG/prod/onlinelog/group_7.269.817172167' to '/prod/oracle/oradata/TEST/group_7.269.817172167';

alter database rename file '+FRADG/prod/onlinelog/group_7.262.817172167' to '/prod/oracle/oradata/TEST/group_7.262.817172167';

alter database rename file '+DATADG/prod/onlinelog/group_8.268.817172167' to '/prod/oracle/oradata/TEST/group_8.268.817172167';

alter database rename file '+FRADG/prod/onlinelog/group_8.261.817172167' to '/prod/oracle/oradata/TEST/group_8.261.817172167';

SQL> alter database backup controlfile to trace as '/u01/control_trace.txt';--生成DBNAME=PROD的控制文件脚本。

shutdown immediate;

export ORACLE_SID=TEST

startup nomount pfile='/prod/oracle/product/11.2.0/db_1/dbs/initTEST.ora'

修改/u01/control_trace.txt,PROD=>TEST,利用NORETLOGS那一段脚本创建control_trace.sql,重建TEST控制文件。

SQL> !rm -rf /prod/oracle/oradata/TEST/control01.ctl

SQL> @/u01/control_trace.sql

CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-01161: database name PROD in file header does not match given name of TEST

ORA-01110: data file 1: '/prod/oracle/oradata/TEST/system.259.817171877'

修改control_trace.sql中RESET=>SET,注意这里是关键。

SQL> @/u01/control_trace.sql

CREATE CONTROLFILE SET DATABASE "TEST" NORESETLOGS ARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-01223: RESETLOGS must be specified to set a new database name

修改control_trace.sql中NORESETLOGS=>RESETLOGS,注意这里也是关键。

SQL> @/u01/control_trace.sql

Control file created.

注意:这一步控制文件已经重建完毕,如果源数据库有结构变化,这里需要手动增加数据文件。这一步也可以放在后面恢复时提醒数据文件缺失并OFFLINE时进行处理。

RMAN恢复

export ORACLE_SID=TEST

RMAN> recover database;

Starting recover at 22-JUL-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=10 device type=DISK

starting media recovery

unable to find archived log

archived log thread=1 sequence=369

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 07/22/2013 14:36:21

RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 369 and starting SCN of 14781355

RMAN> catalog start with '/u01/'; --注意/u01/目录里只存放了恢复使用的备份集。

RMAN> recover database; --这里是进行归档日志的恢复,需要多尝试几次,它会利用所有的归档日志。

...

Executing: alter database datafile 6 offline

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_1_426_8yvs7zwz_.arc thread=1 sequence=426

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_2_179_8yvs7zw9_.arc thread=2 sequence=179

channel default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_1_426_8yvs7zwz_.arc RECID=95 STAMP=821527552

archived log file name=/backup/thread_1_seq_427.364.821465293 thread=1 sequence=427

channel default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_2_179_8yvs7zw9_.arc RECID=96 STAMP=821527552

archived log file name=/backup/thread_2_seq_180.368.821484023 thread=2 sequence=180

archived log file name=/backup/thread_1_seq_428.366.821473911 thread=1 sequence=428

archived log file name=/backup/thread_1_seq_429.361.821484021 thread=1 sequence=429

archived log file name=/backup/thread_1_seq_430.370.821491237 thread=1 sequence=430

archived log file name=/backup/thread_2_seq_181.369.821494839 thread=2 sequence=181

archived log file name=/backup/thread_1_seq_431.371.821502021 thread=1 sequence=431

unable to find archived log

archived log thread=2 sequence=182

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 07/23/2013 10:07:46

RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 182 and starting SCN of 19195470

这里显示datafile 6没有,需要创建。

SQL> alter database create datafile 6 as '/prod/oracle/oradata/TEST/EBSDATA.ora';

SQL> alter database datafile 6 online;

RMAN> recover database; --此时会恢复数据文件6.

Starting recover at 23-JUL-13

using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 427 is already on disk as file /backup/thread_1_seq_427.364.821465293

archived log for thread 1 with sequence 428 is already on disk as file /backup/thread_1_seq_428.366.821473911

archived log for thread 1 with sequence 429 is already on disk as file /backup/thread_1_seq_429.361.821484021

archived log for thread 1 with sequence 430 is already on disk as file /backup/thread_1_seq_430.370.821491237

archived log for thread 1 with sequence 431 is already on disk as file /backup/thread_1_seq_431.371.821502021

archived log for thread 1 with sequence 432 is already on disk as file /backup/thread_1_seq_432.373.821512819

archived log for thread 2 with sequence 180 is already on disk as file /backup/thread_2_seq_180.368.821484023

archived log for thread 2 with sequence 181 is already on disk as file /backup/thread_2_seq_181.369.821494839

channel ORA_DISK_1: starting archived log restore to default destination

channel ORA_DISK_1: restoring archived log

archived log thread=2 sequence=179

channel ORA_DISK_1: restoring archived log

archived log thread=1 sequence=426

channel ORA_DISK_1: reading from backup piece /backup/ARCH_PROD_20130722_20

channel ORA_DISK_1: piece handle=/backup/ARCH_PROD_20130722_20 tag=ARCH

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:00:07

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_1_426_8yvsh60n_.arc thread=1 sequence=426

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_2_179_8yvsh60j_.arc thread=2 sequence=179

channel default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_1_426_8yvsh60n_.arc RECID=98 STAMP=821527782

archived log file name=/backup/thread_1_seq_427.364.821465293 thread=1 sequence=427

channel default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_2_179_8yvsh60j_.arc RECID=99 STAMP=821527782

archived log file name=/backup/thread_2_seq_180.368.821484023 thread=2 sequence=180

archived log file name=/backup/thread_1_seq_428.366.821473911 thread=1 sequence=428

archived log file name=/backup/thread_1_seq_429.361.821484021 thread=1 sequence=429

archived log file name=/backup/thread_1_seq_430.370.821491237 thread=1 sequence=430

archived log file name=/backup/thread_2_seq_181.369.821494839 thread=2 sequence=181

archived log file name=/backup/thread_1_seq_431.371.821502021 thread=1 sequence=431

unable to find archived log

archived log thread=2 sequence=182

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 07/23/2013 10:09:45

RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 182 and starting SCN of 19195470

RMAN> recover database; --最后一次恢复,会提示需要在线日志thread 2 sequence 182。

RMAN恢复会到最后一个归档日志应用完毕,接下来在SLQPLUS中恢复应用在线日志。

SQLPLUS恢复在线日志,下面的恢复正常完成。

SQL> recover database using backup controlfile;

ORA-00279: change 19195470 generated at 07/23/2013 01:00:39 needed for thread 2

ORA-00289: suggestion :

/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_2_182_%u_.arc

ORA-00280: change 19195470 for thread 2 is in sequence #182

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/backup/group_6.263.817172163

ORA-00279: change 19195470 generated at 07/23/2013 00:00:36 needed for thread 1

ORA-00289: suggestion : /backup/thread_1_seq_431.371.821502021

ORA-00280: change 19195470 for thread 1 is in sequence #431

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/backup/thread_1_seq_431.371.821502021

ORA-00279: change 19242558 generated at 07/23/2013 03:00:21 needed for thread 1

ORA-00289: suggestion : /backup/thread_1_seq_432.373.821512819

ORA-00280: change 19242558 for thread 1 is in sequence #432

ORA-00278: log file '/backup/thread_1_seq_431.371.821502021' no longer needed

for this recovery

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/backup/thread_1_seq_432.373.821512819

ORA-00279: change 19312913 generated at 07/23/2013 06:00:17 needed for thread 1

ORA-00289: suggestion :

/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_23/o1_mf_1_433_%u_.arc

ORA-00280: change 19312913 for thread 1 is in sequence #433

ORA-00278: log file '/backup/thread_1_seq_432.373.821512819' no longer needed

for this recovery

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/backup/group_2.259.817172151

Log applied.

Media recovery complete.

SQL> alter database open;

SQL> alter database open resetlogs;

Database altered.

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/prod/oracle/oradata/TEST/TEMP.ora' size 16M autoextend on;

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME

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

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS

UNDOTBS2

EBSDATA

SQL> select file_name from dba_data_files;

FILE_NAME

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

/prod/oracle/oradata/TEST/undotbs2.256.817172295

/prod/oracle/oradata/TEST/users.257.817171937

/prod/oracle/oradata/TEST/undotbs1.258.817171901

/prod/oracle/oradata/TEST/sysaux.260.817171845

/prod/oracle/oradata/TEST/system.259.817171877

/prod/oracle/oradata/TEST/EBSDATA.ora

SQL> conn jeron_peng/amaxgs

ID NAME

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

1 11.1.0.7.0

2 11.2.0.3.0

6 2013-07-15 23:42:00

4 11.2.0.3.0Jul152013

5 CompleteBackup

3 11.2.0.3.0CPUApr2013

7 2013-07-22 16:43:00

最后产生的数据已经恢复出来。

注意一点:这里其实数据库结构已经发生了变化,最新的控制文件已经创建了数据文件6,而恢复的控制文件是没有的,恢复时会提示数据文件OFFLINE,我们只需在后面创建并ONLINE。

SQL> alter database create datafile 6 as '/prod/oracle/oradata/TEST/EBSDATA.ora';

SQL> alter datafile 6 online;

#################################### 3 RMAN DUPLICATE恢复不同DBNAME,不同DBID数据库 #######################################

# DUPLICATE恢复到不同名数据库。

Duplicate prod to TEST from backupset without target and catelog.

创建新库需要的audit目录,数据文件目录,trace文件目录,闪回恢复目录等。

创建密码文件,保持和源库完全一样。orapwd file=orapwTEST password=amaxgs

创建pfile,initTEST.ora,启动数据库,并创建spfile,重启数据库从spfile启动。

利用下面的Duplicate,注意BACKUP LOCATION路径组后有“/”,必须为‘/u01/’,否则‘/u01’会报错,找不到SPFILE或者CONTROLFILE等。

run{

SET NEWNAME FOR DATABASE TO '/prod/oracle/oradata/TEST/%b';

SET NEWNAME FOR TEMPFILE 1 TO '/prod/oracle/oradata/TEST/%b';

DUPLICATE DATABASE TO 'TEST' BACKUP LOCATION '/u01/';

}

[oratest@q1ebsdb ~]$ rman auxiliary /

Recovery Manager: Release 11.2.0.3.0 - Production on Thu Jul 18 22:27:00 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to auxiliary database: TEST (not mounted)

RMAN> exit

Recovery Manager complete.

[oratest@q1ebsdb ~]$ rman auxiliary /

Recovery Manager: Release 11.2.0.3.0 - Production on Thu Jul 18 22:28:33 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to auxiliary database: TEST (not mounted)

RMAN> run{

SET NEWNAME FOR DATABASE TO '/prod/oracle/oradata/TEST/%b';

2> 3> SET NEWNAME FOR TEMPFILE 1 TO '/prod/oracle/oradata/TEST/%b';

DUPLICATE DATABASE TO 'TEST' BACKUP LOCATION '/u01/';

}4> 5>

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting Duplicate Db at 18-JUL-13

contents of Memory Script:

{

sql clone "alter system set db_name =

''PROD'' comment=

''Modified by RMAN duplicate'' scope=spfile";

sql clone "alter system set db_unique_name =

''TEST'' comment=

''Modified by RMAN duplicate'' scope=spfile";

shutdown clone immediate;

startup clone force nomount

restore clone primary controlfile from '/u01/CTRL_PROD_20130715_18';

alter clone database mount;

}

executing Memory Script

sql statement: alter system set db_name = ''PROD'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set db_unique_name = ''TEST'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area 839282688 bytes

Fixed Size 2233000 bytes

Variable Size 494931288 bytes

Database Buffers 335544320 bytes

Redo Buffers 6574080 bytes

Starting restore at 18-JUL-13

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=133 device type=DISK

channel ORA_AUX_DISK_1: restoring control file

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

output file name=/prod/oracle/oradata/TEST/control01.ctl

Finished restore at 18-JUL-13

database mounted

released channel: ORA_AUX_DISK_1

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=133 device type=DISK

contents of Memory Script:

{

set until scn 14784494;

set newname for datafile 1 to

"/prod/oracle/oradata/TEST/system.259.817171877";

set newname for datafile 2 to

"/prod/oracle/oradata/TEST/sysaux.260.817171845";

set newname for datafile 3 to

"/prod/oracle/oradata/TEST/undotbs1.258.817171901";

set newname for datafile 4 to

"/prod/oracle/oradata/TEST/users.257.817171937";

set newname for datafile 5 to

"/prod/oracle/oradata/TEST/undotbs2.256.817172295";

restore

clone database

;

}

executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 18-JUL-13

using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_AUX_DISK_1: restoring datafile 00001 to /prod/oracle/oradata/TEST/system.259.817171877

channel ORA_AUX_DISK_1: restoring datafile 00002 to /prod/oracle/oradata/TEST/sysaux.260.817171845

channel ORA_AUX_DISK_1: restoring datafile 00003 to /prod/oracle/oradata/TEST/undotbs1.258.817171901

channel ORA_AUX_DISK_1: restoring datafile 00004 to /prod/oracle/oradata/TEST/users.257.817171937

channel ORA_AUX_DISK_1: restoring datafile 00005 to /prod/oracle/oradata/TEST/undotbs2.256.817172295

channel ORA_AUX_DISK_1: reading from backup piece /u01/FULL_PROD_20130715_15

channel ORA_AUX_DISK_1: piece handle=/u01/FULL_PROD_20130715_15 tag=FULL

channel ORA_AUX_DISK_1: restored backup piece 1

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45

Finished restore at 18-JUL-13

contents of Memory Script:

{

switch clone datafile all;

}

executing Memory Script

datafile 1 switched to datafile copy

input datafile copy RECID=6 STAMP=821140212 file name=/prod/oracle/oradata/TEST/system.259.817171877

datafile 2 switched to datafile copy

input datafile copy RECID=7 STAMP=821140212 file name=/prod/oracle/oradata/TEST/sysaux.260.817171845

datafile 3 switched to datafile copy

input datafile copy RECID=8 STAMP=821140212 file name=/prod/oracle/oradata/TEST/undotbs1.258.817171901

datafile 4 switched to datafile copy

input datafile copy RECID=9 STAMP=821140212 file name=/prod/oracle/oradata/TEST/users.257.817171937

datafile 5 switched to datafile copy

input datafile copy RECID=10 STAMP=821140212 file name=/prod/oracle/oradata/TEST/undotbs2.256.817172295

contents of Memory Script:

{

set until scn 14784494;

recover

clone database

delete archivelog

;

}

executing Memory Script

executing command: SET until clause

Starting recover at 18-JUL-13

using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination

channel ORA_AUX_DISK_1: restoring archived log

archived log thread=1 sequence=369

channel ORA_AUX_DISK_1: restoring archived log

archived log thread=2 sequence=149

channel ORA_AUX_DISK_1: reading from backup piece /u01/ARCH_PROD_20130715_17

channel ORA_AUX_DISK_1: piece handle=/u01/ARCH_PROD_20130715_17 tag=ARCH

channel ORA_AUX_DISK_1: restored backup piece 1

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_18/o1_mf_1_369_8yhz017z_.arc thread=1 sequence=369

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_18/o1_mf_2_149_8yhz01vo_.arc thread=2 sequence=149

channel clone_default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_18/o1_mf_1_369_8yhz017z_.arc RECID=2 STAMP=821140226

channel clone_default: deleting archived log(s)

archived log file name=/prod/oracle/fast_recovery_area/TEST/archivelog/2013_07_18/o1_mf_2_149_8yhz01vo_.arc RECID=1 STAMP=821140226

media recovery complete, elapsed time: 00:00:02

Finished recover at 18-JUL-13

Oracle instance started

Total System Global Area 839282688 bytes

Fixed Size 2233000 bytes

Variable Size 494931288 bytes

Database Buffers 335544320 bytes

Redo Buffers 6574080 bytes

contents of Memory Script:

{

sql clone "alter system set db_name =

''TEST'' comment=

''Reset to original value by RMAN'' scope=spfile";

sql clone "alter system reset db_unique_name scope=spfile";

shutdown clone immediate;

startup clone nomount;

}

executing Memory Script

sql statement: alter system set db_name = ''TEST'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)

Oracle instance started

Total System Global Area 839282688 bytes

Fixed Size 2233000 bytes

Variable Size 494931288 bytes

Database Buffers 335544320 bytes

Redo Buffers 6574080 bytes

sql statement: CREATE CONTROLFILE REUSE SET DATABASE "TEST" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 SIZE 50 M ,

GROUP 2 SIZE 50 M ,

GROUP 3 SIZE 50 M ,

GROUP 4 SIZE 50 M

DATAFILE

'/prod/oracle/oradata/TEST/system.259.817171877'

CHARACTER SET AL32UTF8

sql statement: ALTER DATABASE ADD LOGFILE

INSTANCE 'i2'

GROUP 5 SIZE 50 M ,

GROUP 6 SIZE 50 M ,

GROUP 7 SIZE 50 M ,

GROUP 8 SIZE 50 M

contents of Memory Script:

{

set newname for tempfile 1 to

"/prod/oracle/oradata/TEST/temp.272.817172253";

switch clone tempfile all;

catalog clone datafilecopy "/prod/oracle/oradata/TEST/sysaux.260.817171845",

"/prod/oracle/oradata/TEST/undotbs1.258.817171901",

"/prod/oracle/oradata/TEST/users.257.817171937",

"/prod/oracle/oradata/TEST/undotbs2.256.817172295";

switch clone datafile all;

}

executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /prod/oracle/oradata/TEST/temp.272.817172253 in control file

cataloged datafile copy

datafile copy file name=/prod/oracle/oradata/TEST/sysaux.260.817171845 RECID=1 STAMP=821140247

cataloged datafile copy

datafile copy file name=/prod/oracle/oradata/TEST/undotbs1.258.817171901 RECID=2 STAMP=821140247

cataloged datafile copy

datafile copy file name=/prod/oracle/oradata/TEST/users.257.817171937 RECID=3 STAMP=821140247

cataloged datafile copy

datafile copy file name=/prod/oracle/oradata/TEST/undotbs2.256.817172295 RECID=4 STAMP=821140247

datafile 2 switched to datafile copy

input datafile copy RECID=1 STAMP=821140247 file name=/prod/oracle/oradata/TEST/sysaux.260.817171845

datafile 3 switched to datafile copy

input datafile copy RECID=2 STAMP=821140247 file name=/prod/oracle/oradata/TEST/undotbs1.258.817171901

datafile 4 switched to datafile copy

input datafile copy RECID=3 STAMP=821140247 file name=/prod/oracle/oradata/TEST/users.257.817171937

datafile 5 switched to datafile copy

input datafile copy RECID=4 STAMP=821140247 file name=/prod/oracle/oradata/TEST/undotbs2.256.817172295

contents of Memory Script:

{

Alter clone database open resetlogs;

}

executing Memory Script

database opened

Finished Duplicate Db at 18-JUL-13

################################# 注意事项 #################################

1,catalog start with '/u01/'; 目录必须为/u01/这种格式,/u01会出错。

2,创建控制文件RESET->SET,NORESETLOGS->RESETLOGS

3,DUPLICATE DATABASE TO 'TEST' BACKUP LOCATION '/u01/'; 目录必须为/u01/这种格式,/u01会出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: