天天看點

【DATAGUARD 學習】使用duplicate 建立實體standby 資料庫

使用手工建立實體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

2  密碼檔案這裡使用的是主庫拷貝。這樣儲存所有的密碼一緻

3  監聽檔案:

# 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 =

      (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

恢複管理器: release 11.1.0.6.0 - production on 星期一 9月 20 10:56:30 2010

已連接配接到輔助資料庫: 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

通道 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: 還原完成, 用時: 00:00:45

通道 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

   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;

系統已更改。

max(sequence#)      

--------------             

            22

在備庫上

orcldg>alter database recover managed standby database disconnect from session;

資料庫已更改。

orcldg>select max(sequence#) from v$archived_log;

max(sequence#)  

--------------   

            22