1、参数文件恢复
ecard.__db_cache_size=11307843584 **---将名字里的1和2去掉**
ecard.__java_pool_size=134217728
ecard.__large_pool_size=167772160
ecard.__pga_aggregate_target=5469372416
ecard.__sga_target=16374562816
ecard.__shared_io_pool_size=0
ecard.__shared_pool_size=4261412864
ecard.__streams_pool_size=67108864
*.audit_file_dest='/u01/app/oracle/admin/ecard/adump' **---新建所需目录**
*.audit_trail='NONE'
*.compatible='11.2.0.4.0'
*.control_file_record_keep_time=10
*.control_files='/oradata/ECARD/control01.ctl','/oradata/fast_recovery_area/control02.ctl' **---新建所需目录**
*.db_block_size=8192
*.db_create_file_dest='/oradata' **---新建所需目录**
*.db_domain=''
*.db_name='ecard'
*.db_recovery_file_dest='/arch' **---新建所需目录**
*.db_recovery_file_dest_size=16876830720
*.deferred_segment_creation=FALSE
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ecardXDB)'
*.event='28401 trace name context forever,level 1','10949 trace name context forever,level 1'
*.log_archive_dest_1='location=/arch' **---新建所需目录**
*.log_archive_format='%t_%s_%r.arc'
*.max_dump_file_size='4096M'
*.open_cursors=300
*.parallel_force_local=TRUE
*.pga_aggregate_target=5453643776
*.processes=1000
*.remote_login_passwordfile='exclusive'
*.sga_target=16360931328
*.undo_retention=10800
ecard.undo_tablespace='UNDOTBS1'
2、恢复控制文件
RMAN>restore controlfile from '/oradata/backup/ctl_ECARD_20230506_5218_1.bkp';
RMAN>alter database mount;
3、恢复数据文件
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
catalog start with '/oradata/backup/';
run
{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
allocate channel c3 device type disk ;
allocate channel c4 device type disk ;
set newname for datafile 4 to "/oradata/dbname/datafile/users.dbf";
set newname for datafile 3 to "/oradata/dbname/datafile/undotbs1.dbf";
set newname for datafile 2 to "/oradata/dbname/datafile/sysaux.dbf";
set newname for datafile 1 to "/oradata/dbname/datafile/system.dbf";
set newname for datafile 5 to "/oradata/dbname/datafile/undotbs2.dbf";
set newname for tempfile 1 to "/oradata/dbname/tempfile/temp.tmp";
RESTORE DATABASE;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
4、恢复归档
RMAN> list backupset of archivelog all;
run{
set until sequence 963 thread 1;
set until sequence 946 thread 2;
recover database;
}
备份归档语句如下
run
{
allocate channel t1 device type disk;
allocate channel t2 device type disk;
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup as compressed backupset format '/home/oracle/rmanbak/archbak/20230506/archfull%T%U.bak' archivelog all;
release channel t1;
release channel t2;
}
5、重命名redo
alter database rename file '+DATA/dbname/onlinelog/group_2.262.1096990975' to '/oradata/dbname/onlinelog/redo0201.log';
alter database rename file '+FRA/dbname/onlinelog/group_2.258.1096990981' to '/oradata/fast_recovery_area/redo0202.log';
alter database rename file '+DATA/dbname/onlinelog/group_1.261.1096990961' to '/oradata/dbname/onlinelog/redo0101.log';
alter database rename file '+FRA/dbname/onlinelog/group_1.257.1096990967' to '/oradata/fast_recovery_area/redo0102.log';
alter database rename file '+DATA/dbname/onlinelog/group_3.266.1096993001' to '/oradata/dbname/onlinelog/redo0301.log';
alter database rename file '+FRA/dbname/onlinelog/group_3.260.1096993009' to '/oradata/fast_recovery_area/redo0302.log';
alter database rename file '+DATA/dbname/onlinelog/group_4.265.1096993019' to '/oradata/dbname/onlinelog/redo0401.log';
alter database rename file '+FRA/dbname/onlinelog/group_4.259.1096993025' to '/oradata/fast_recovery_area/redo0402.log';
可能需要多次归档恢复,恢复后在进行open
6、打开数据库
alter database open resetlogs;
迁移后续操作:
1、查看数据库各文件路径是否正常
set line 9999 pagesize 9999
col FILE_NAME format a60
select 'datafile' file_type, file#,name FILE_NAME,status,enabled from v$datafile
union all
select 'tempfile',file#,name FILE_NAME,status,enabled from v$tempfile
union all
select 'logfile',group# file#,member FILE_NAME,status,'' from v$logfile
union all
select 'controlfile', to_number('') ,name FILE_NAME,status,'' from v$controlfile;
2、清理redo thread2
col instance format a8
select thread#,instance,status,enabled from v$thread;
alter database disable thread 2;
3、清理Undo
SQL> select name from v$tablespace where name like 'UNDO%';
NAME
------------------------------
UNDOTBS1
UNDOTBS2
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> drop tablespace undotbs2 including contents and datafiles;
Tablespace dropped.