目標:主庫不停機,搭建出一個測試環境,允許少量的資料不同步,不用邏輯匯入匯出,使用rman實現同機複製資料庫-131伺服器上將PROD庫通過rman-duplicate target database to PRODDUP1的方式進行複製
131伺服器是建在VMware上的Linux虛擬機器
伺服器192.168.182.131
OEL5.8_32
Oracle 11.2.0.1.0 32bit
[oracle@oelr5u8-1 admin]$ uname -a
Linux oelr5u8-1.localdomain 2.6.32-300.10.1.el5uek #1 SMP Wed Feb 22 17:22:40 EST 2012 i686 i686 i386 GNU/Linux
SYS@PROD>select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
過程中會經過幾種測試:
1. 嘗試不作任何配置,直接執行duplicate target database to PRODDUP1;
RMAN> duplicate target database to PRODDUP1;
Starting Duplicate Db at 05-APR-14
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 04/05/2014 11:10:29
RMAN-06174: not connected to auxiliary database
--DUPLICATE命令作為RMAN中的一個命令,要建立Duplicate資料庫,首先就得保證RMAN用戶端能夠正常串連到目標資料庫(PROD)和啟動到NOMOUNT狀態的輔助執行個體(即上面報錯的“auxiliary database”)
2. 嘗試完整的實戰-參考三思的教程,感謝!
本地建立Duplicate資料庫
複雜度最高,由於本地建立Duplicate資料庫,新建立的檔案路徑不能與目標資料庫相同,本地建立需要注意輔助執行個體初始化參數中DB_NAME與目標資料庫不能相同。
核心要求:
保證輔助執行個體的初始化參數中檔案路徑的正確有效
執行DUPLICATE命令時,注意與輔助執行個體初始化參數設定的配合
2.1) 建立輔助執行個體 auxiliary instance
2.1.1) 建立輔助執行個體的密鑰檔案
orapwd file=orapwPRODDUP1 password=oracle
2.1.2) 指定環境變數ORACLE_SID--auxiliary instance
export ORACLE_SID=PRODDUP1
2.1.3) 配置初始化參數檔案
由於11g與10g管理目錄的區別,在11g庫中查詢:
audit_file_dest string /u01/app/oracle/admin/PROD/adump
background_dump_dest string /u01/app/oracle/diag/rdbms/prod/PROD/trace
core_dump_dest string /u01/app/oracle/diag/rdbms/prod/PROD/cdump
user_dump_dest string /u01/app/oracle/diag/rdbms/prod/PROD/trace
並且參數檔案initPROD.ora中只指定了audit_file_dest,我們這裡只手工建立路徑adump,其他路徑看ORACLE是否能夠自動建立
cd $ORACLE_BASE/admin
mkdir -p ./PRODDUP1/adump
下面建立其他資料庫檔案(控制檔案、記錄檔、資料檔案)的路徑:
mkdir -p /u01/app/oracle/oradata/PRODDUP1/disk1
mkdir -p /u01/app/oracle/oradata/PRODDUP1/disk2
mkdir -p /u01/app/oracle/oradata/PRODDUP1/disk3
mkdir -p /u01/app/oracle/oradata/PRODDUP1/disk4
mkdir -p /u01/app/oracle/oradata/PRODDUP1/disk5
下面修改參數檔案內容,先進行複製
cd $ORACLE_HOME/dbs
cp initPROD.ora initPRODDUP1.ora
vi initPRODDUP1.ora
PROD.__db_cache_size=230686720
PROD.__java_pool_size=4194304
PROD.__large_pool_size=4194304
PROD.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
PROD.__pga_aggregate_target=314572800
PROD.__sga_target=419430400
PROD.__shared_io_pool_size=0
PROD.__shared_pool_size=163577856
PROD.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/oracle/admin/PROD/adump'
*.audit_trail='db'
*.compatible='11.2.0'
*.control_files='/u01/app/oracle/oradata/PROD/disk1/control01.ctl','/u01/app/oracle/oradata/PROD/disk2/control02.ctl','/u01/app/oracle/oradata/PROD/disk3/control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='PROD'
*.db_recovery_file_dest='/home/oracle/flash'
*.db_recovery_file_dest_size=2G
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
*.local_listener='listener2'
*.log_archive_dest_1='location=/home/oracle/arch'
*.memory_target=700M
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=400M
*.undo_management='auto'
*.undo_tablespace='UNDOTBS1'
改為:
PRODDUP1.__db_cache_size=230686720
PRODDUP1.__java_pool_size=4194304
PRODDUP1.__large_pool_size=4194304
PRODDUP1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
PRODDUP1.__pga_aggregate_target=314572800
PRODDUP1.__sga_target=419430400
PRODDUP1.__shared_io_pool_size=0
PRODDUP1.__shared_pool_size=163577856
PRODDUP1.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/oracle/admin/PRODDUP1/adump'
*.audit_trail='db'
*.compatible='11.2.0'
*.control_files='/u01/app/oracle/oradata/PRODDUP1/disk1/control01.ctl','/u01/app/oracle/oradata/PRODDUP1/disk2/control02.ctl','/u01/app/oracle/oradata/PRODDUP1/disk3/control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='PRODDUP1'
*.db_recovery_file_dest='/home/oracle/flash'
*.db_recovery_file_dest_size=2G
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
*.local_listener='listener2'
*.log_archive_dest_1='location=/home/oracle/arch'
*.memory_target=700M
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=400M
*.undo_management='auto'
*.undo_tablespace='UNDOTBS1'
## add for duplicate
DB_FILE_NAME_CONVERT='PROD','PRODDUP1'
LOG_FILE_NAME_CONVERT='PROD','PRODDUP1'