一、前言
有時候我們需要快速搭建出一套測試環境,可能往往的手段是進行導數或者rman備份恢復,以上過程比較繁瑣;
有沒有更快的方式呢,答案是有的,可以利用Oracle本身的duplicate命令一步到位;當然還有更快速的方式且測試環境無需占用存儲空間,無限量創建,則是利用CDM技術實現(這里先不展開);
duplicate大致構建過程是利用tns網絡在線復制數據文件到目標庫,通常是數據文件不落地的方式,但是會占用源庫一定的IO,保險的方式是源庫數據文件落地也就是進行一次全庫備份,并拷貝備份集;復制完數據數據會自動復制所需的歸檔日志然后進行一個不完全恢復,并且自動resetlogs打開數據庫。
下面進行實戰演示duplicate命名如何快速的構建一個測試環境。(采用不落地的方式,直接在線復制,節省本地空間)
環境配置:
- 源庫:11.2.0.4 RAC
- 目標庫:11.2.0.4 單機
二、環境準備
1、配置環境變量
umask 022
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
export LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
export ORACLE_SID=test
export ORACLE_UNQNAME=test
export LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
Note:這里可以自定義測試庫名稱,無需跟源庫一致
2、配置TNS網絡
目標庫靜態監聽
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/dbhome_1)
(SID_NAME = test)
)
)
note:靜態監聽的作用是方便sys用戶進行實例的啟動與關閉
TNS連接串配置
FWL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fwl)
)
)
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
Note:源庫也一定要進行配置,因為復制的過程源庫需要連接到輔助庫也就是目標庫。
3、目標庫參數配置
*.audit_file_dest='/oracle/app/oracle/admin/test/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/oracle/app/oracle/oradata/test/control01.ctl'
*.db_file_name_convert='+DATA/FWL/DATAFILE','/oracle/app/oracle/oradata/test','+DATA/PROD/TEMPFILE','/oracle/app/oracle/oradata/test'
*.log_file_name_convert='+DATA/FWL/ONLINELOG','/oracle/app/oracle/oradata/test'
*.db_block_size=8192
*.db_domain=''
*.db_files=4000
*.db_name='test'
*.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=2147483648000
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers=''
*.open_cursors=2000
*.pga_aggregate_target=6442450944
*.processes=2000
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=10737418240
*.sga_target=10737418240
*.undo_retention=14400
*.undo_tablespace='UNDOTBS01'
Note:這里數據文件采用convert自動轉換,當然也可以用OMF;
臨時目錄也一并需要轉換;
dbname自行修改為規劃的名稱;
其他參數以源庫為準,建議創建源庫pfile進行修改,以上為參考示例。
4、相關目錄和口令文件的創建
目錄
mkdir /oracle/app/oracle/oradata/test
mkdir -p /oracle/app/oracle/admin/test/adump
口令文件
orapwd file=$ORACLE_HOME/dbs/orapwtest password=oracle force=y
Note:口令文件也可以復制源庫的進行修改名稱。
三、開始克隆
1、目標庫啟動nomount
create spfile from pfile='/home/oracle/pfile.bak';
startup nomount
2、目標庫開始克隆
編寫腳本
vi dbclone.sh
#!/bin/bash
DATE=`date +%Y%m%d%H`
source /home/oracle/.bash_profile
$ORACLE_HOME/bin/rman log=/home/oracle/dbclone_${DATE}.log <<EOF
connect target sys/oracle@fwl
connect auxiliary sys/oracle@test
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate AUXILIARY channel c3 type disk;
allocate AUXILIARY channel c4 type disk;
duplicate target database to "test" from active database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit;
EOF
exit
Note:這里建議利用腳本進行后臺運行,通道數量可以根據源庫數據量大小自行定義;一定要進行TNS認證連接,不能進行本地驗證。
3、檢查結果
日志結果:
input datafile copy RECID=120 STAMP=1108974813 file name=/oracle/app/oracle/oradata/test/users.493.1099836701
Reenabling controlfile options for auxiliary database
Executing: alter database force logging
contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 02-JUL-22
released channel: c1
released channel: c2
released channel: c3
released channel: c4
RMAN>
Recovery Manager complete.
note:這里截取了后面關鍵的信息,可看到數據庫已經自動完成open。
實例狀態
[oracle@fwltest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Jul 2 10:01:50 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
test OPEN
SQL>
自此數據庫克隆完成,通過以上的步驟可以看到,克隆構建的過程是相當簡單快捷。
最后修改時間:2022-07-09 11:17:32
「喜歡這篇文章,您的關注和贊賞是給作者最好的鼓勵」
關注作者
【版權聲明】本文為墨天輪用戶原創內容,轉載時必須標注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權追究責任。如果您發現墨天輪中有涉嫌抄襲或者侵權的內容,歡迎發送郵件至:contact@modb.pro進行舉報,并提供相關證據,一經查實,墨天輪將立刻刪除相關內容。




