– RMAN恢复数据库到不同实例名(同一个主机)
– 将SID1
1,配置listener.ora及tnsname.ora,添加SID2(这一步最为重要,因为无法识别动态注册,只能识别静态注册。)
异机需要安装数据库软件,配置listener.ora和tnsname.ora
listener.ora # 以下为相同主机listener的配置
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) )
)
SID_LIST_LISTENER = (SID_LIST =
(SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/db) (PROGRAM = extproc) )
(SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/db) (SID_NAME = ORCL) )
(SID_DESC = (GLOBAL_DBNAME = pdb1) (ORACLE_HOME = /u01/app/oracle/product/db) (SID_NAME = ORCL) )
(SID_DESC = (GLOBAL_DBNAME = CP) (ORACLE_HOME = /u01/app/oracle/product/db) (SID_NAME = CP) )
)
tnsnames.ora
ORCL = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) )
)
CP = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = CP) )
)
pdb1 = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1) )
)
2,创建SID2密码文件
orapwd file=$ORACLE_HOME/dbs/orapwCP password=oracle entries=10
3.将SID2进入到nomount状态<准备SID2目录,参数文件,并启动到mount状态>
创建恢复目录
su - oracle
mkdir -p /u01/cp1/oradata/ ; mkdir -p /u01/cp1/log/adump ; mkdir -p /u01/cp1/fra
mkdir -p /u01/cp1/dbf ; mkdir -p /u01/cp1/oradata/pdbseed ; mkdir -p /u01/cp1/oradata/pdb1/
rm /u01/cp1/oradata/* /u01/cp1/log/adump/* /u01/cp1/fra/* /u01/cp1/dbf/* /u01/cp1/log/diag/* -rf
mkdir -p /u01/cp1/oradata/pdbseed ; mkdir -p /u01/cp1/oradata/pdb1/
find /u01/cp1/
备份控制文件SID1
create pfile=’/u01/orcl/pfile.ora’ from spfile;
create pfile=’/u01/cp1/pfile.ora’ from spfile; – 创建源库参数文件,修改参数配置,创建spfile
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘/u01/cp1/controlfile_tace.ora’;
修改参数文件用于SID2,修改dest,db_name
vi /u01/cp1/pfile.ora
*.audit_file_dest=’/u01/cp1/log/adump’
*.audit_trail=‘db’
*.compatible=‘12.1.0.2.0’
*.control_files=’/u01/cp1/oradata/control01.ctl’
*.db_block_size=8192
*.db_create_file_dest=’/u01/cp1/dbf’
*.db_domain=’’
*.db_name=‘CP’
*.db_recovery_file_dest=’/u01/cp1/fra’
*.db_recovery_file_dest_size=31457280
*.diagnostic_dest=’/u01/cp1/log’
*.enable_pluggable_database=true
*.open_cursors=300
*.pga_aggregate_target=384m
*.processes=300
*.remote_login_passwordfile=‘EXCLUSIVE’
*.sga_target=1152m
*.undo_tablespace=‘UNDOTBS1’
– SID2
export ORACLE_SID=CP
sqlplus / as sysdba
create spfile from pfile=’/u01/cp1/pfile.ora’;
startup nomount
report schema;重命名数据文件并
SET NEWNAME FOR DATABASE TO ‘/oradata/%U’;
4,使用RMAN恢复数据库
export ORACLE_SID=CP
rman target sys/oracle@ORCL auxiliary sys/oracle@CP
run{
set newname for datafile 1 to ‘/u01/cp1/oradata/system01.dbf’;
set newname for datafile 3 to ‘/u01/cp1/oradata/sysaux01.dbf’;
set newname for datafile 4 to ‘/u01/cp1/oradata/undotbs01.dbf’;
set newname for datafile 5 to ‘/u01/cp1/oradata/pdbseed/system01.dbf’;
set newname for datafile 6 to ‘/u01/cp1/oradata/users01.dbf’;
set newname for datafile 7 to ‘/u01/cp1/oradata/pdbseed/sysaux01.dbf’;
set newname for datafile 15 to ‘/u01/cp1/oradata/pdb1/o1_mf_system_hf24bonn_.dbf’;
set newname for datafile 16 to ‘/u01/cp1/oradata/pdb1/o1_mf_sysaux_hf24bonp_.dbf’;
set newname for datafile 17 to ‘/u01/cp1/oradata/pdb1/users01.dbf’;
set newname for tempfile 1 to ‘/u01/cp1/oradata/temp01.dbf’;
set newname for tempfile 2 to ‘/u01/cp1/oradata/pdbseed/pdbseed_temp01.dbf’;
set newname for tempfile 3 to ‘/u01/cp1/oradata/pdb1/o1_mf_temp_hf24bonp_.dbf’;
DUPLICATE TARGET DATABASE TO CP
LOGFILE
GROUP 1 (’/u01/cp1/oradata/redo01.dbf’) SIZE 10M REUSE,
GROUP 2 (’/u01/cp1/oradata/redo02.dbf’) SIZE 10M REUSE;
}
#########################################################################
删除新建的数据库SID2
export ORACLE_SID=CP
sqlplus / as sysdba
startup mount exclusive restrict;
drop database;
#########################################################################
################ DUPLICATE TARGET DATABASE TO CP ########################
################ 日志如下 ########################
– 1 contents of Memory Script: 设置参数文件,设置db_name,db_unique_name,restore控制文件,启动到mount
{
sql clone “alter system set db_name = ‘‘ORCL’’ comment= ‘‘Modified by RMAN duplicate’’ scope=spfile”;
sql clone “alter system set db_unique_name = ‘‘CP’’ comment= ‘‘Modified by RMAN duplicate’’ scope=spfile”;
shutdown clone immediate;
startup clone force nomount
restore clone primary controlfile;
alter clone database mount;
}
– 2 contents of Memory Script: 重命名控制文件中的数据文件路径及名称,存储到新的路径
{
set until scn 2734708;
set newname for datafile 1 to “/u01/cp1/oradata/system01.dbf”;
set newname for datafile 3 to “/u01/cp1/oradata/sysaux01.dbf”;
set newname for datafile 4 to “/u01/cp1/oradata/undotbs01.dbf”;
set newname for datafile 5 to “/u01/cp1/oradata/pdbseed/system01.dbf”;
set newname for datafile 6 to “/u01/cp1/oradata/users01.dbf”;
set newname for datafile 7 to “/u01/cp1/oradata/pdbseed/sysaux01.dbf”;
set newname for datafile 15 to “/u01/cp1/oradata/pdb1/o1_mf_system_hf24bonn_.dbf”;
set newname for datafile 16 to “/u01/cp1/oradata/pdb1/o1_mf_sysaux_hf24bonp_.dbf”;
set newname for datafile 17 to “/u01/cp1/oradata/pdb1/users01.dbf”;
restore clone database
;
}
– 3 contents of Memory Script: – 切换数据文件到最近的COPY
{
switch clone datafile all;
}
– 4 contents of Memory Script: – 恢复数据库
{
set until scn 2734708;
recover clone database delete archivelog
;
}
– 5 contents of Memory Script: 修改db_name=CP,取消db_unique_name设置
{
sql clone “alter system set db_name = ‘‘CP’’ comment= ‘‘Reset to original value by RMAN’’ scope=spfile”;
sql clone “alter system reset db_unique_name scope=spfile”;
}
– 6 启动数据库,重建控制文件
Oracle instance started
Total System Global Area 1207959552 bytes
Fixed Size 2923776 bytes
Variable Size 335545088 bytes
Database Buffers 855638016 bytes
Redo Buffers 13852672 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE “CP” RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ( ‘/u01/cp1/oradata/redo01.dbf’ ) SIZE 10 M REUSE,
GROUP 2 ( ‘/u01/cp1/oradata/redo02.dbf’ ) SIZE 10 M REUSE
DATAFILE
‘/u01/cp1/oradata/system01.dbf’,
‘/u01/cp1/oradata/pdbseed/system01.dbf’,
‘/u01/cp1/dbf/CP/datafile/o1_mf_system_hf6govn3_.dbf’
CHARACTER SET AL32UTF8
– 7 contents of Memory Script: 设置临时文件,切换临时文件,注册数据文件Copy,切换数据文件
{
set newname for tempfile 1 to “/u01/cp1/oradata/temp01.dbf”;
set newname for tempfile 2 to “/u01/cp1/oradata/pdbseed/pdbseed_temp01.dbf”;
set newname for tempfile 3 to “/u01/cp1/oradata/pdb1o1_mf_temp_hf24bonp_.dbf”;
switch clone tempfile all;
catalog clone datafilecopy “/u01/cp1/oradata/sysaux01.dbf”, “/u01/cp1/oradata/undotbs01.dbf”, “/u01/cp1/oradata/users01.dbf”,
“/u01/cp1/oradata/pdbseed/sysaux01.dbf”, “/u01/cp1/dbf/CP/datafile/o1_mf_sysaux_hf6432p1_.dbf”, “/u01/cp1/oradata/pdb1/users01.dbf”;
switch clone datafile all;
}
– 8 contents of Memory Script: --重设日志打开数据库
{
Alter clone database open resetlogs;
}
– 9 contents of Memory Script: 打开PDB
{
sql clone “alter pluggable database all open”;
}