RMAN高階應用之Duplicate複製資料庫(2)輔助例項

junsansi發表於2007-12-04

使用rman的duplicate命令複製資料庫系列,本系列可以視為一步一步學RMAN的姊妹篇~~~~

RMAN高階應用之Duplicate複製資料庫(1)概述


  輔助例項是建立副本資料庫的重要一步,一般而言會有下列幾個步驟,有些你已經聽說了,有些,你還從未聽過。。。。。。。:

一、建立輔助例項的密碼檔案(Create an Oracle Password File for the Auxiliary Instance)

Oracle提供了一個建立密碼檔案的命令:ORAPWD。該命令有兩種呼叫方式,帶參呼叫和不帶參呼叫。

不帶參呼叫時,會返回該命令的呼叫方式和引數形式

F:oracle>orapwd

Usage: orapwd file= password= entries= force=

where

file - name of password file (mand),

password - password for SYS (mand),

entries - maximum number of distinct DBA and force - whether to overwrite existing file (opt),OPERs (opt),

There are no spaces around the equal-to (=) character.

File表示檔名稱和路徑,password表示sys使用者密碼,entries指定擁有sys許可權的使用者最大數,force表示如果檔案存在是否覆蓋。File和password為必填參。

該命令使用非常簡單,不詳述了,舉示例如下:

F:oracle>orapwd file=F:oracleproduct10.2.0db_1databasePWDjssdup.ora password=verysafe:) entries=30

二、連線到例項(Establish Oracle Net Connectivity to the Auxiliary Instance)

注意,如果是windows環境,需要首先通過ORADIM命令建立一個新的OracleService,linux環境可以跳過這一步,我是說,跳過oradim這步。本小節其它操作還是要做的。

F:oracle>oradim -new -sid jssdup

例項已建立。

F:oracle>set oracle_sid=jssdup

F:oracle>sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10月 18 17:26:03 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到空閒例程。

然後就是配置監聽啦,修改tnsname.ora之類,總之就是你要能夠連線到這個輔助例項上來才算了事。

三、建立輔助例項的初始化引數檔案(Create an Initialization Parameter File for the Auxiliary Instance)

由於是手工建庫,相應目錄也需要自己手工建立:

F:oracle>md product10.2.0adminjssdup

F:oracle>cd product10.2.0adminjssdup

F:oracleproduct10.2.0adminjssdup>md adump bdump cdump dpdump pfile udump

1.首先建立本地初始化引數檔案,比著原庫的pfile改改就是,內容不需要太多,DB_NAME,CONTROL_FILES兩項引數為必須項。本例中副本資料庫與主庫在同一臺機器,所以需要注意DB_NAME不能相同。同時還有一些其它引數,反正你就看著改吧,覺著必須的話就用上。

注意:輔助例項的BLOCK SIZE必須與目標庫相同。如果目標庫的引數檔案包括DB_BLOCK_SIZE的引數,你必須指定輔助例項中該引數的值與目標庫相同。如果目標庫的引數檔案中未指定該引數,則輔助例項的引數檔案中也不必指定。

如果是複製到一個新系統或新站點的話,還需要注意各項初始化引數中的路徑,必須確認該路徑對於你的複製是有效的。

下面是三思操作時的示例,為了省事引數設定非常簡單。實際上還可以更簡單,比如只保留前6項。當然最簡單的就是隻保留前3項。呵呵,這就得你自己根據實際情況定了,但是需要注意第3項,雖然官方檔案中並沒有宣告shared_pool_size為必須項,但如果該項不指定或者指定了較小值,在執行RMAN時都極可能報錯,建議此處設定的值不要太小,我這裡設定接近200M。

db_name='jssdup'

control_files='F:oracleoradatajssdupcontrol01.ctl','F:oracleoradatajssdupcontrol02.ctl','F:oracleoradatajssdupcontrol03.ctl'

shared_pool_size=200000000

db_block_size=8192

db_file_name_convert=('F:oracleoradatajssweb','F:oracleoradatajssdup')

log_file_name_convert=('F:oracleoradatajssweb','F:oracleoradatajssdup')

audit_file_dest='F:oracleproduct10.2.0adminjssdupadump'

background_dump_dest='F:oracleproduct10.2.0adminjssdupbdump'

compatible='10.2.0.1.0'

core_dump_dest='F:oracleproduct10.2.0adminjssdupcdump'

user_dump_dest='F:oracleproduct10.2.0adminjssdupudump'

2.通過CREATE SPFILE命令建立伺服器端初始化引數檔案

SQL> create spfile from pfile='F:oracleproduct10.2.0adminjssduppfileinit.ora';

檔案已建立。

  這一步也並非完全必須,如果你願意在執行duplicate命令時指定pfile引數的話呢,也可以不用建立spfile。一般情況下,除非腦袋被門擠了,沒人願意採用麻煩的方式專門自己給自己找不痛快吧。更何況spfile是做為oracle9i以來的一項進步而存在,其優勢就不用多提了吧:)

四、啟動輔助例項(Start the Auxiliary Instance)

接著上一步,建立完spfile之後:

SQL> startup force nomount;

ORACLE 例程已經啟動。

Total System Global Area 117440512 bytes

Fixed Size 1247588 bytes

Variable Size 58721948 bytes

Database Buffers 50331648 bytes

Redo Buffers 7139328 bytes

SQL>

重啟例項以載入伺服器端初始化引數檔案。

由於尚無控制檔案,你也只能將其啟動到nomount模式。Oracle說,千萬不要嘗試去建立控制檔案,或者載入到mount或open狀態。

RMAN重啟輔助例項是複製操作的一部分。因此,預設情況下建立伺服器端的初始化引數檔案是最佳選擇。哎,又回老話題上了。如果沒能建立伺服器端初始化引數檔案的話,你就必須指定客戶端初始化引數檔案做為duplicate的引數。

五、Mount或open目標資料庫(Mount or Open the Target Database)

注意喲,這步連線的是目標庫。如果目標庫尚未處於mount或open狀態的話,將其載入到mount或open狀態。

F:oracle>set oracle_sid=jssweb

F:oracle>sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 19 13:11:22 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到空閒例程。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area 113246208 bytes

Fixed Size 1247564 bytes

Variable Size 83887796 bytes

Database Buffers 20971520 bytes

Redo Buffers 7139328 bytes

資料庫裝載完畢。

資料庫已經開啟。

SQL>

六、確認擁有必備的備份(Make Sure You Have the Necessary Backups and Archived Redo Logs)

檢查備份,沒備份就沒法恢復,而恢復又是duplicate的主要工作。So...........What are you waiting for? Just CheckCheckCheck!!!

七、分配輔助通道(Allocate Auxiliary Channels if Automatic Channels Are Not Configured)

首先執行rman連線到目標資料庫和輔助例項(如果有catalog的話,可以同時指定catalog)。如果輔助例項是通過客戶端初始化引數檔案啟動的話,該檔案在執行rman的客戶端也必須存在。

F:oracle>set oracle_sid=jssweb

###目標資料庫使用作業系統認證,所以首先設定SID

F:oracle>rman target / auxiliary sys/verysafe:)@jssdup

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 10月 19 15:03:10 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

連線到目標資料庫: JSSWEB (DBID=3402005373)

已連線到輔助資料庫: JSSDUP (未裝載)

RMAN>

輔助例項的事兒基本上就完了,最後一步是分配通道。如果你沒有設定自動分配通道的話,那麼在執行duplicate命令之前,至少要手工指定一個通道。通道是在RMAN的RUN塊中指定,如下例:

RUN

{

# 手工分配通道型別為sbt:

ALLOCATE AUXILIARY CHANNEL ch1 DEVICE TYPE sbt;

# 手工分配通道型別為disk

# 通道名為自定義

ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;

ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;

ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;

.

.

.

DUPLICATE TARGET DATABASE TO jssdup;

}

如果備份檔案儲存在磁碟上,分配的通道越多則速度越快,如果備份檔案在磁帶上,最少指定裝置數量個通道。

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

相關文章