OracleRAC异机恢复到单机

1.源端备份

#!/bin/sh
# set porfile_env

exeBackup1()
{
ORACLE_SID=$1
su - oracle <<EOF
echo $ORACLE_SID
EOF
}

exeBackup()
{
echo -e "$1--begin>>\n"
su - oracle <<EOF
ORACLE_SID=$1
rman log "/rman/full_00_`date -u +%Y%m%d%H%M%S`_$1.log"

connect target /;
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ;
run
{
allocate channel ch1 DEVICE TYPE DISK;
allocate channel ch2 DEVICE TYPE DISK;
allocate channel ch3 DEVICE TYPE DISK;
backup as compressed backupset incremental level 0 database format '/orabak/full/level0_%d_%s_%p_%t_%U_%T' include current controlfile plus archivelog format '/orabak/arch/arch_%d_%s_%p_%t_%U_%T' delete all input;
backup spfile format '/orabak/spfile/level0_spf_%U_%T';
release channel ch1;
release channel ch2;
release channel ch3;
}
EOF
echo -e "$1--finish<<\n\n"
}

for bus in `ps -ef | grep ora_ | awk '{print $8}' | awk -F'_' '{print $3}' | sort -u | grep -v "^$" `;
do
  exeBackup $bus
done

2.将生产的备份集和归档拷贝到目标库

3.在源端生产pfile文件
create pfile='/tmp/wasdb01.ora' from spfile;

4.将生成的wasdb01.ora拷贝到目标库

5.单机环境修改拷贝来的wasdb01.ora(删除参数文件里关于节点2的以及 cluster_database)
原来的wasdb01.ora文件

CRP1.__data_transfer_cache_size=0
CRP2.__data_transfer_cache_size=0
CRP.__db_cache_size=4261412864
CRP2.__db_cache_size=42010148864
CRP1.__db_cache_size=42949672960
CRP1.__inmemory_ext_roarea=0
CRP2.__inmemory_ext_roarea=0
CRP1.__inmemory_ext_rwarea=0
CRP2.__inmemory_ext_rwarea=0
CRP2.__java_pool_size=268435456
CRP1.__java_pool_size=134217728
CRP1.__large_pool_size=268435456
CRP2.__large_pool_size=268435456
CRP.__oracle_base='/oracle/CRP'#ORACLE_BASE set from environment
CRP1.__oracle_base='/oracle/CRP'#ORACLE_BASE set from environment
CRP2.__oracle_base='/oracle/CRP'#ORACLE_BASE set from environment
CRP1.__pga_aggregate_target=15837691904
CRP2.__pga_aggregate_target=15837691904
CRP1.__sga_target=51539607552
CRP2.__sga_target=51539607552
CRP.__shared_io_pool_size=301989888
CRP1.__shared_io_pool_size=536870912
CRP2.__shared_io_pool_size=536870912
CRP2.__shared_pool_size=8321499136
CRP1.__shared_pool_size=7516192768
CRP1.__streams_pool_size=0
CRP2.__streams_pool_size=0
*._fix_control='16166364:OFF'
*._log_segment_dump_parameter=FALSE
*._log_segment_dump_patch=FALSE
*._mutex_wait_scheme=1
*._mutex_wait_time=10
*._optim_peek_user_binds=FALSE
*._optimizer_adaptive_cursor_sharing=FALSE
*._optimizer_batch_table_access_by_rowid=FALSE
*._optimizer_extended_cursor_sharing_rel='NONE'
*._optimizer_reduce_groupby_key=FALSE
*._optimizer_use_feedback=FALSE
*._report_capture_cycle_time=0
*._rowsets_enabled=FALSE
*._securefiles_concurrency_estimate=50
*._suppress_identifiers_on_dupkey=TRUE
*._use_single_log_writer='TRUE'
*.audit_file_dest='/oracle/CRP/saptrace/audit'
*.cluster_database=TRUE
*.compatible='12.2.0.1.0'
*.control_file_record_keep_time=30
*.control_files='+DATA/CRP/cntrlCRP.dbf','+MGMT/CRP/cntrlCRP.dbf','+ARCH/CRP/cntrlCRP.dbf'
*.db_block_size=8192
*.db_cache_size=4554196254
CRP1.db_cache_size=21223178240
CRP2.db_cache_size=21223178240
*.db_name='CRP'
*.db_recovery_file_dest='+MGMT'
*.db_recovery_file_dest_size=118111600640
*.diagnostic_dest='/oracle/CRP/saptrace'
*.FILESYSTEMIO_OPTIONS='setall'
CRP1.instance_name='CRP1'
CRP2.instance_name='CRP2'
CRP1.instance_number=1
CRP2.instance_number=2
CRP1.local_listener='fsgjdb03:1521'
CRP2.local_listener='fsgjdb04:1521'
*.log_archive_dest_1='location=+ARCH/CRP/oraarch'
*.log_archive_format='%t_%s_%r.dbf'
*.log_checkpoints_to_alert=true
*.max_dump_file_size='20000'
*.open_cursors=2000
*.parallel_execution_message_size=16384
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=15728640000
*.processes=3000
*.query_rewrite_enabled='false'
*.recyclebin='off'
*.remote_listener='fsgjdb-scan:1521'
*.remote_login_passwordfile='exclusive'
*.replication_dependency_tracking=false
CRP1.service_names='CRP','CRP1'
CRP2.service_names='CRP','CRP2'
*.sessions=4500
*.sga_max_size=41943040000
CRP2.sga_max_size=52495908864
CRP1.sga_max_size=52495908864
*.sga_target=40894464000
CRP2.sga_target=51411681280
CRP1.sga_target=51411681280
*.shared_pool_size=4554196254
*.star_transformation_enabled='true'
CRP1.thread=1
CRP2.thread=2
CRP1.undo_tablespace='PSAPUNDO001'
CRP2.undo_tablespace='PSAPUNDO002'

6.修改之后的参数文件

CRP.__oracle_base='/oracle/CRP'#ORACLE_BASE set from environment

*._fix_control='16166364:OFF'
*._log_segment_dump_parameter=FALSE
*._log_segment_dump_patch=FALSE
*._mutex_wait_scheme=1
*._mutex_wait_time=10
*._optim_peek_user_binds=FALSE
*._optimizer_adaptive_cursor_sharing=FALSE
*._optimizer_batch_table_access_by_rowid=FALSE
*._optimizer_extended_cursor_sharing_rel='NONE'
*._optimizer_reduce_groupby_key=FALSE
*._optimizer_use_feedback=FALSE
*._report_capture_cycle_time=0
*._rowsets_enabled=FALSE
*._securefiles_concurrency_estimate=50
*._suppress_identifiers_on_dupkey=TRUE
*._use_single_log_writer='TRUE'
*.audit_file_dest='/oracle/CRP/saptrace/audit'

*.compatible='12.2.0.1.0'
*.control_file_record_keep_time=30
*.control_files='/oracle/CRP/control/cntrlCRP01.dbf','/oracle/CRP/control/cntrlCRP02.dbf','/oracle/CRP/control/cntrlCRP03.dbf'
*.db_block_size=8192
*.db_cache_size=4554196254
CRP1.db_cache_size=21223178240

*.db_name='CRP'
*.db_recovery_file_dest='/orabak'
*.db_recovery_file_dest_size=118111600640
*.diagnostic_dest='/oracle/CRP/saptrace'
*.FILESYSTEMIO_OPTIONS='setall'
instance_name='CRP'



local_listener='chd-poc-db2:1521'

*.log_archive_dest_1='location=/oracle/CRP/archivelog'
*.log_archive_format='%t_%s_%r.dbf'
*.log_checkpoints_to_alert=true
*.max_dump_file_size='20000'
*.open_cursors=2000
*.parallel_execution_message_size=16384
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=15728640000
*.processes=3000
*.query_rewrite_enabled='false'
*.recyclebin='off'

*.remote_login_passwordfile='exclusive'
*.replication_dependency_tracking=false
service_names='CRP'

*.sessions=4500
*.sga_max_size=41943040000


*.sga_target=40894464000


*.shared_pool_size=4554196254
*.star_transformation_enabled='true'


*.undo_tablespace='PSAPUNDO001'

7.通过修改后的pfile把单节点启动到nomount状态

SQL> startup nomount pfile=/orabak/wasdb01.ora;
SQL> create spfile from pfile='/orabak/wasdb01.ora'
SQL? shutdown abort;
SQL> startup nomount;

8.恢复控制文件,启动到mount状态

/RMAN> restore controlfile from '/orabak/level0_CRP_24275_1_1208139219_mj405fej_1_1_20250803';
/RMAN> alter database mount;

9.在源库执行

set pagesize  200 linesize 200

select 'SET NEWNAME FOR DATAFILE '|| file# ||' to ' ||'''/oracle/CRP/datafile'|| substr(name,INSTR(name, '/',-1))  ||''''|| ';' from v$datafile;

10.单机执行

/RMAN> catalog start with '/orabak/full';(/orabak/full是单机存放备份集的路径)

run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
SET NEWNAME FOR DATAFILE 1 to '/oracle/CRP/datafile/system.257.1027900661';
SET NEWNAME FOR DATAFILE 2 to '/oracle/CRP/datafile/sysaux.265.1027900665';
SET NEWNAME FOR DATAFILE 3 to '/oracle/CRP/datafile/psapundo001.267.1027900665';
SET NEWNAME FOR DATAFILE 4 to '/oracle/CRP/datafile/psapsr3.268.1027901305';
SET NEWNAME FOR DATAFILE 5 to '/oracle/CRP/datafile/psapsr3.272.1027901323';
SET NEWNAME FOR DATAFILE 6 to '/oracle/CRP/datafile/psapsr3.266.1027901349';
SET NEWNAME FOR DATAFILE 7 to '/oracle/CRP/datafile/psapsr3.278.1027901367';
SET NEWNAME FOR DATAFILE 8 to '/oracle/CRP/datafile/psapsr3750.277.1027901385';
SET NEWNAME FOR DATAFILE 9 to '/oracle/CRP/datafile/psapsr3750.274.1027901403';
SET NEWNAME FOR DATAFILE 10 to '/oracle/CRP/datafile/psapsr3750.273.1027901421';
SET NEWNAME FOR DATAFILE 11 to '/oracle/CRP/datafile/psapsr3750.258.1027901439';
SET NEWNAME FOR DATAFILE 12 to '/oracle/CRP/datafile/psapsr3usr.259.1027901457';
SET NEWNAME FOR DATAFILE 13 to '/oracle/CRP/datafile/psapundo002.262.1027901459';
SET NEWNAME FOR DATAFILE 14 to '/oracle/CRP/datafile/psapsr3.01';
SET NEWNAME FOR DATAFILE 15 to '/oracle/CRP/datafile/psapsr3.02';
SET NEWNAME FOR DATAFILE 16 to '/oracle/CRP/datafile/psapsr3.282.1078589687';
SET NEWNAME FOR DATAFILE 17 to '/oracle/CRP/datafile/psapsr3.283.1078589789';
SET NEWNAME FOR DATAFILE 18 to '/oracle/CRP/datafile/psapsr3.284.1086887753';
SET NEWNAME FOR DATAFILE 19 to '/oracle/CRP/datafile/psapsr3750.285.1086888015';
SET NEWNAME FOR DATAFILE 20 to '/oracle/CRP/datafile/psapsr3.286.1092072389';
SET NEWNAME FOR DATAFILE 21 to '/oracle/CRP/datafile/psapsr3.287.1092072695';
SET NEWNAME FOR DATAFILE 22 to '/oracle/CRP/datafile/psapsr3.288.1092073183';
SET NEWNAME FOR DATAFILE 23 to '/oracle/CRP/datafile/psapsr3.289.1111057319';
SET NEWNAME FOR DATAFILE 24 to '/oracle/CRP/datafile/psapsr3.290.1111058365';
SET NEWNAME FOR DATAFILE 25 to '/oracle/CRP/datafile/psapsr3.291.1118438061';
SET NEWNAME FOR DATAFILE 26 to '/oracle/CRP/datafile/psapsr3.292.1121360469';
SET NEWNAME FOR DATAFILE 27 to '/oracle/CRP/datafile/psapsr3.293.1121360811';
SET NEWNAME FOR DATAFILE 28 to '/oracle/CRP/datafile/psapsr3.294.1127489109';
SET NEWNAME FOR DATAFILE 29 to '/oracle/CRP/datafile/psapsr3.295.1127489475';
SET NEWNAME FOR DATAFILE 30 to '/oracle/CRP/datafile/psapsr3.296.1134908601';
SET NEWNAME FOR DATAFILE 31 to '/oracle/CRP/datafile/psapsr3.297.1134909177';
SET NEWNAME FOR DATAFILE 32 to '/oracle/CRP/datafile/psapsr3.298.1134909461';
SET NEWNAME FOR DATAFILE 33 to '/oracle/CRP/datafile/psapsr3.299.1144320799';
SET NEWNAME FOR DATAFILE 34 to '/oracle/CRP/datafile/psapsr3.300.1144321155';
SET NEWNAME FOR DATAFILE 35 to '/oracle/CRP/datafile/psapsr3.301.1153492375';
SET NEWNAME FOR DATAFILE 36 to '/oracle/CRP/datafile/psapsr3.302.1153493955';
SET NEWNAME FOR DATAFILE 37 to '/oracle/CRP/datafile/psapsr3usr.303.1153494679';
SET NEWNAME FOR DATAFILE 38 to '/oracle/CRP/datafile/sysaux.304.1158534567';
SET NEWNAME FOR DATAFILE 39 to '/oracle/CRP/datafile/psapsr3.305.1161986095';
SET NEWNAME FOR DATAFILE 40 to '/oracle/CRP/datafile/psapsr3.306.1161986125';
SET NEWNAME FOR DATAFILE 41 to '/oracle/CRP/datafile/psapsr3.307.1161986449';
SET NEWNAME FOR DATAFILE 42 to '/oracle/CRP/datafile/psapsr3.308.1173263763';
SET NEWNAME FOR DATAFILE 43 to '/oracle/CRP/datafile/psapsr3.309.1178217023';
SET NEWNAME FOR DATAFILE 44 to '/oracle/CRP/datafile/psapsr3.310.1178217079';
SET NEWNAME FOR DATAFILE 45 to '/oracle/CRP/datafile/psapsr3.311.1181045847';
SET NEWNAME FOR DATAFILE 46 to '/oracle/CRP/datafile/psapsr3.312.1182766861';
SET NEWNAME FOR DATAFILE 47 to '/oracle/CRP/datafile/psapsr3.313.1182766989';
SET NEWNAME FOR DATAFILE 48 to '/oracle/CRP/datafile/psapsr3.314.1182767033';
SET NEWNAME FOR DATAFILE 49 to '/oracle/CRP/datafile/psapsr3.315.1182767165';
SET NEWNAME FOR DATAFILE 50 to '/oracle/CRP/datafile/psapsr3.316.1182767247';
SET NEWNAME FOR DATAFILE 51 to '/oracle/CRP/datafile/psapsr3.317.1182767415';
SET NEWNAME FOR DATAFILE 52 to '/oracle/CRP/datafile/psapsr3.318.1191250441';
SET NEWNAME FOR DATAFILE 53 to '/oracle/CRP/datafile/psapsr3.319.1191250447';
restore database  ;
switch datafile all;

release channel d4;
release channel d3;
release channel d2;
release channel d1;
}
修改select member from v$logfile;
select 
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_11.276.1027900657 ' to '/oracle/CRP/ONLINELOG/group_11.276.1027900657';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_12.271.1027900659 ' to '/oracle/CRP/ONLINELOG/group_12.271.1027900659';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_13.270.1027900659 ' to '/oracle/CRP/ONLINELOG/group_13.270.1027900659';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_14.269.1027900659 ' to '/oracle/CRP/ONLINELOG/group_14.269.1027900659';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_21.263.1027901491 ' to '/oracle/CRP/ONLINELOG/group_21.263.1027901491';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_22.275.1027901491 ' to '/oracle/CRP/ONLINELOG/group_22.275.1027901491';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_23.260.1027901493 ' to '/oracle/CRP/ONLINELOG/group_23.260.1027901493';
ALTER DATABASE RENAME FILE '+DATA/CRP/ONLINELOG/group_24.279.1027901493' to '/oracle/CRP/ONLINELOG/group_24.279.1027901493';

12 recover数据库

RMAN> recover database;  

Starting recover at 19-AUG-25
using channel ORA_DISK_1

starting media recovery

archived log for thread 2 with sequence 111341 is already on disk as file /oracle/CRP/archivelog/2_111341_1027900653.dbf
unable to find archived log
archived log thread=1 sequence=79992
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/19/2025 10:12:46
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 79992 and starting SCN of 10599908264


RMAN> recover database until scn 10599908264;

Starting recover at 19-AUG-25
using channel ORA_DISK_1

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

Finished recover at 19-AUG-25

RMAN> alter database open resetlogs;

Statement processed
posted @ 2025-08-19 15:18  白日梦不要钱  阅读(48)  评论(0)    收藏  举报