前言
通过duplicate database to 'PRODS' backup location '/home/oracle/backup' nofilenamecheck;可以快速实现复制新的数据库;
下文为手动方式;
说明
源库:FXDB
新库:PRODS
步骤
1.新建pfile,启动实例到nomount,修改db_name
SQL> alter system set db_name='FXDB' scope=spfile;
2.恢复源库控制文件
RMAN> restore controlfile from '/home/oracle/backup/fxdb_ctl.bak';
Starting restore at 2020-06-26 19:49:57
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=265 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=+DATADG/PRODS/CONTROLFILE/current.625.1044129001
Finished restore at 2020-06-26 19:50:01
RMAN> alter database mount;
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATADG/FXDB/DATAFILE/system.601.1042277511
+DATADG/FXDB/DATAFILE/sysaux.605.1042277559
+DATADG/FXDB/DATAFILE/undotbs1.600.1042277585
+DATADG/FXDB/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.613.1042278515
+DATADG/FXDB/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.617.1042278515
+DATADG/FXDB/DATAFILE/users.608.1042277585
+DATADG/FXDB/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.618.1042278515
+DATADG/FXDB/DATAFILE/undotbs2.620.1042278813
+DATADG/FXDB/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/system.623.1042279693
+DATADG/FXDB/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/sysaux.624.1042279693
+DATADG/FXDB/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undotbs1.622.1042279691
NAME
--------------------------------------------------------------------------------
+DATADG/FXDB/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undo_2.625.1042279785
+DATADG/FXDB/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/users.626.1042279791
3.通过rman set newname 并restore recover数据库
run
{
set until scn 5219573;
set newname for clone datafile 1 to new;
set newname for clone datafile 3 to new;
set newname for clone datafile 4 to new;
set newname for clone datafile 5 to new;
set newname for clone datafile 6 to new;
set newname for clone datafile 7 to new;
set newname for clone datafile 8 to new;
set newname for clone datafile 9 to new;
set newname for clone datafile 10 to new;
set newname for clone datafile 11 to new;
set newname for clone datafile 12 to new;
set newname for clone datafile 13 to new;
set newname for clone datafile 14 to new;
restore database;
switch datafile all;
recover database;
}
4.生成创建重建控制文件sql,并修改REUSE为REUSE SET ,FXDB为PRODS
SQL> alter database backup controlfile to trace;
#找到如下创建控制文件语句:
CREATE CONTROLFILE REUSE SET DATABASE "PRODS" RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '+DATADG/FXDB/ONLINELOG/group_1.611.1042277663' SIZE 200M BLOCKSIZE 512,
GROUP 2 '+DATADG/FXDB/ONLINELOG/group_2.612.1042277663' SIZE 200M BLOCKSIZE 512,
GROUP 3 '+DATADG/FXDB/ONLINELOG/group_3.621.1042279431' SIZE 200M BLOCKSIZE 512,
GROUP 4 '+DATADG/FXDB/ONLINELOG/group_4.614.1042279435' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'+DATADG/PRODS/DATAFILE/system.587.1044129357',
'+DATADG/PRODS/DATAFILE/sysaux.588.1044129287',
'+DATADG/PRODS/DATAFILE/undotbs1.624.1044129189',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/system.617.1044129257',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/sysaux.623.1044129203',
'+DATADG/PRODS/DATAFILE/users.599.1044129253',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/undotbs1.622.1044129217',
'+DATADG/PRODS/DATAFILE/undotbs2.311.1044129255',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/system.613.1044129273',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/sysaux.616.1044129225',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undotbs1.619.1044129239',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undo_2.299.1044129247',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/users.618.1044129257'
CHARACTER SET ZHS16GBK
;
5.参数文件修改db_name
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter system set db_name='PRODS' scope=spfile;
SQL> shutdown immediate;
6.重建控制文件
SQL> startup nomount;
CREATE CONTROLFILE REUSE SET DATABASE "PRODS" RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '+DATADG/FXDB/ONLINELOG/group_1.611.1042277663' SIZE 200M BLOCKSIZE 512,
GROUP 2 '+DATADG/FXDB/ONLINELOG/group_2.612.1042277663' SIZE 200M BLOCKSIZE 512,
GROUP 3 '+DATADG/FXDB/ONLINELOG/group_3.621.1042279431' SIZE 200M BLOCKSIZE 512,
GROUP 4 '+DATADG/FXDB/ONLINELOG/group_4.614.1042279435' SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'+DATADG/PRODS/DATAFILE/system.587.1044129357',
'+DATADG/PRODS/DATAFILE/sysaux.588.1044129287',
'+DATADG/PRODS/DATAFILE/undotbs1.624.1044129189',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/system.617.1044129257',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/sysaux.623.1044129203',
'+DATADG/PRODS/DATAFILE/users.599.1044129253',
'+DATADG/PRODS/A74D7524EC2347ADE053B51E000A5432/DATAFILE/undotbs1.622.1044129217',
'+DATADG/PRODS/DATAFILE/undotbs2.311.1044129255',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/system.613.1044129273',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/sysaux.616.1044129225',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undotbs1.619.1044129239',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/undo_2.299.1044129247',
'+DATADG/PRODS/A74DBAEAF1F10616E053B61E000ACE43/DATAFILE/users.618.1044129257'
CHARACTER SET ZHS16GBK
;
7.重新执行恢复
RMAN> run{
2> set until scn 5219573;
3> recover database;
4> }
executing command: SET until clause
Starting recover at 2020-06-26 20:36:05
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=259 device type=DISK
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 2020-06-26 20:36:11
8.执行open resetlogs开库
RMAN> alter database open resetlogs;
Statement processed