【DATAGUARD 學習】使用duplicate 建立物理standby 資料庫

楊奇龍發表於2010-09-21

使用手工建立物理standby 多少有些費事,利用oracle提供的duplicate 可以簡單的完成建立物理standby 的工作!
一 環境:同一臺主機
 主庫 orcl  備庫 orcldg

二 使用rman 備份主庫
C:\Documents and Settings\Administrator>rman target /
復管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
連線到目標資料庫: ORCL (DBID=1256563399)
RMAN>backup database format 'f:\backup\full_%U.bak';
     ......
RMAN>sql 'alter system switch logfile'
     ......
RMAN>backup archivelog all;
     ......
RMAN>
三 為備庫建立引數檔案,密碼檔案 ,配置監聽檔案
 1 備庫的引數檔案:
orcl.__db_cache_size=339738624
orcl.__java_pool_size=12582912
orcl.__large_pool_size=4194304
orcl.__oracle_base='F:\ORCL'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=209715200
orcl.__sga_target=473956352
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=109051904
orcl.__streams_pool_size=0
*.audit_file_dest='F:\ORCL\admin\orcldg\adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='D:\oracle\orcldgdata\control01.ctl','D:\oracle\orcldgdata\control02.ctl','D:\oracle\orcldgdata\control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='orcl'
*.log_archive_config='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=F:\ORCL\archive1'
*.log_archive_dest_2='SERVICE=ORCLDG  ARCH VAILD_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME= orcl'
*.log_archive_dest_state_2=defer
*.db_recovery_file_dest='F:\ORCL\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='F:\ORCL'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=681574400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=471859200
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
#-------  角色轉變-------
*.FAL_SERVER=ORCLDG
*.FAL_CLIENT=ORCL
*.DB_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.LOG_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.STANDBY_FILE_MANAGEMENT=AUTO

密碼檔案這裡使用的是主庫複製。這樣儲存所有的密碼一致

監聽檔案:
# listener.ora 的配置
  SID_LIST_LISTENER=
( SID_LIST=
(SID_DESC=
       (GLOGBAL_DBNAME=orcl)
       (ORCL_HOME= F:\ORCL\product\11.1.0\db_1)
       (SID_NAME=orcl)
)
(SID_DESC =
      (GLOBAL_NAME = orcldg)
      (ORACLE_HOME = F:\ORCL\product\11.1.0\db_1)
      (SID_NAME= orcldg)
    )
)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    )
  )
# tnsnames.ora 的配置

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcldg)
    )
  )

四 啟動備庫到nomount
ORCLDG>startup nomount pfile='f:\initORCLDG.ora'
ORACLE 例程已經啟動。

Total System Global Area  472887296 bytes                                      
Fixed Size                  1333956 bytes                                      
Variable Size             184550716 bytes                                      
Database Buffers          281018368 bytes                                      
Redo Buffers                5984256 bytes     

五 利用duplicate建立standby 資料庫                                 

C:\Documents and Settings\Administrator>set oracle_sid=orcl
C:\Documents and Settings\Administrator>rman target / auxiliary
恢復管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
連線到目標資料庫: ORCL (DBID=1256563399)
已連線到輔助資料庫: ORCL (未裝載)
RMAN> duplicate target database for standby;
啟動 Duplicate Db 於 20-9月 -10
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=152 裝置型別=DISK
記憶體指令碼的內容:
{
   restore clone standby controlfile;
   sql clone 'alter database mount standby database';
}
正在執行記憶體指令碼
啟動 restore 於 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在還原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份片段 F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKU
P\2010_09_20\O1_MF_S_730205638_69FM6GN0_.BKP
通道 ORA_AUX_DISK_1: 段控制程式碼 = F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2010_0
9_20\O1_MF_S_730205638_69FM6GN0_.BKP 標記 = TAG20100920T105358
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:00:01
輸出檔名=D:\ORACLE\ORCLDGDATA\ORCLDG01.CTL
輸出檔名=D:\ORACLE\ORCLDGDATA\ORCLDG02.CTL
輸出檔名=D:\ORACLE\ORCLDGDATA\ORCLDG03.CTL
完成 restore 於 20-9月 -10
sql 語句: alter database mount standby database
記憶體指令碼的內容:
{
   set newname for tempfile  1 to  "D:\ORACLE\ORCLDGDATA\TEMP01.DBF";
   switch clone tempfile all;
 set newname for datafile  1 to "D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF";
 set newname for datafile  2 to "D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF";
 set newname for datafile  3 to "D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF";
 set newname for datafile  4 to "D:\ORACLE\ORCLDGDATA\USERS01.DBF";
 set newname for datafile  5 to "D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF";
   restore clone database;
}
正在執行記憶體指令碼
正在執行命令: SET NEWNAME
臨時檔案 1 在控制檔案中已重新命名為 D:\ORACLE\ORCLDGDATA\TEMP01.DBF
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 於 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_AUX_DISK_1: 將資料檔案 00001 還原到 D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
通道 ORA_AUX_DISK_1: 將資料檔案 00003 還原到 D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 將資料檔案 00004 還原到 D:\ORACLE\ORCLDGDATA\USERS01.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份片段 F:\BACKUP\FULL_0LLOC0IO_1_1.BAK
通道 ORA_AUX_DISK_1: 段控制程式碼 = F:\BACKUP\FULL_0LLOC0IO_1_1.BAK 標記 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:00:45
通道 ORA_AUX_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_AUX_DISK_1: 將資料檔案 00002 還原到 D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
通道 ORA_AUX_DISK_1: 將資料檔案 00005 還原到 D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份片段 F:\BACKUP\FULL_0MLOC0J0_1_1.BAK
通道 ORA_AUX_DISK_1: 段控制程式碼 = F:\BACKUP\FULL_0MLOC0J0_1_1.BAK 標記 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已還原備份片段 1
通道 ORA_AUX_DISK_1: 還原完成, 用時: 00:00:45
完成 restore 於 20-9月 -10
記憶體指令碼的內容:
{
   switch clone datafile all;
}
正在執行記憶體指令碼
資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 RECID=6 STAMP=730205918 檔名=D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 RECID=7 STAMP=730205918 檔名=D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
資料檔案 3 已轉換成資料檔案副本
輸入資料檔案副本 RECID=8 STAMP=730205918 檔名=D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 RECID=9 STAMP=730205918 檔名=D:\ORACLE\ORCLDGDATA\USERS01.DBF
資料檔案 5 已轉換成資料檔案副本
輸入資料檔案副本 RECID=10 STAMP=730205918 檔名=D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
完成 Duplicate Db 於 20-9月 -10
六 驗證是否能夠應用日誌
主庫上:
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)                                                                 
--------------                                                                 
            21                                                                 
ORCL>ALTER SYSTEM SWITCH LOGFILE;
系統已更改。
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)      
--------------             
            22
      
在備庫上
ORCLDG>alter database recover managed standby database disconnect from session;

資料庫已更改。
ORCLDG>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)  
--------------   
            22
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-674567/,如需轉載,請註明出處,否則將追究法律責任。

相關文章