Apr 28, 2008

Physical Standby DB

1. Primary DB 參數:
#DB_NAME : Primary 與 Standby 都設為相同

#DB_UNIQUE_NAME : Primary 與 Standby 各不同名稱

#LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRI,PRIBK),SEND,RECEIVE' : DG_CONFIG 中的值須為 Primary 與 Standby DB 所設定的 DB_UNIQUE_NAME, SEND 表示傳 Redo log 到遠端 , RECEIVE 表示收遠端的 Archived log.

#LOG_ARCHIVE_DEST_1='LOCATION=d:\ARCH\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRI' : 代表 Archived log 產生到d:\ARCH 目錄

#LOG_ARCHIVE_DEST_2='SERVICE=PRIBK ARCH VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIBK OPTIONAL REOPEN=300' : 代表 Archived log 產生到 tnsnames.ora 的 PRIBK, 利用 Archiver, 只限定 Valid 為 Archiving redo log 時, 且產生的 DB 是 PRIMARY_ROLE 的狀況下 , REOPEN 表示 300秒後 archiver processes (ARCn) or the log writer process (LGWR) should try again to access a previously failed destination , OPTIONAL 表示不需等到傳完redo data 即將 online redo log 變成可reuse 狀態.

#LOG_ARCHIVE_DEST_STATE_1=ENABLE : ENABLE 代表允許redo transport services 傳送 redo data 到指定目的地

#LOG_ARCHIVE_DEST_STATE_2=ENABLE : 若為 DEFER 表示不傳送到此.

#REMOTE_LOGIN_PASSWORDFILE=SHARED : NONE 表示只能用 OS 認證方式登入 , SHARED 可表示利用 orapwxxx.ora password 來記錄與允許遠端登入成 SYSDBA

#LOG_ARCHIVE_FORMAT=%t_%s_%r.arc : %s log sequence number ,%t thread number , %r resetlogs ID

#LOG_ARCHIVE_MAX_PROCESSES : 預設為 4 個

#FAL_SERVER='PRIBK' : 指定Standby , FAL (fetch archive log) server for a standby database

#FAL_CLIENT='PRI'

#DB_FILE_NAME_CONVERT='c:\pri\t1\','d:\pribk\t1' : 表示PRI 的 datafile 路徑為/pri/t1/ , 於PRIBK 的路徑為 /pribk/t1/

#LOG_FILE_NAME_CONVERT='c:\pri\t1\','d:\pribk\t1' : 表示PRI 的 log file 路徑為/pri/t1/ , 於PRIBK 的路徑為 /pribk/t1

#STANDBY_ARCHIVE_DEST='d:\ARCH\'

#STANDBY_FILE_MANAGEMENT=AUTO : AUTO so when datafiles are added to or dropped from the primary database, corresponding changes are made automatically to the standby database.



2. Standby DB 參數:
#CONTROL_FILES='c:\PIRBK\bak.ctl' : 於 Primary DB 所產生出來的 Standby control file

#DB_NAME : 與 Primary DB 設為相同

#DB_UNIQUE_NAME=PRIBK : 與 Primary DB 設為不相同

#FAL_SERVER='PRI' : 指定 Primary DB , FAL (fetch archive log) server for a standby database

#FAL_CLIENT='PRIBK'

#STANDBY_ARCHIVE_DEST='d:\ARCH\'

#STANDBY_FILE_MANAGEMENT=AUTO

#LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#REMOTE_LOGIN_PASSWORDFILE=SHARED

#LOG_ARCHIVE_DEST_1='LOCATION=d:\ARCH\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIBK'

#LOG_ARCHIVE_DEST_2='SERVICE=PRI ARCH VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=PRIBK OPTIONAL REOPEN=300'

#LOG_ARCHIVE_DEST_STATE_1=ENABLE

#LOG_ARCHIVE_DEST_STATE_2=ENABLE


3. 建立
Primary 上
# Primary 資料庫上的 tnsnames.ora ,將Primary 與 Standby 加入

# 確認 Archive log mode 有啟動

# 確認 password file 有產生

# alter database force logging;

# backup databse

# shutdown database , startup mount
alter databse create standby controlfile as 'd:\bk\pribk.ctl'

Standby 上
#確認 Listener (Standby) , tnsnames.ora (Primary 與Standby 皆需有) , Control file, password file

# 確認 standby db 的 init parameter file 位置

# startup Standby DB

# Start apply log
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

4. Active Standby DB 步驟

# Stop Primary DB , 登入 Standby DB

# sqlplus " / as sysdba"

#
alter database recover managed standby database finish skip standby logfile; (若是採用 LGWR 方式則
skip standby logfile 可去掉)

#
alter database commit to switchover to primary;


#
shutdown immediate


4.1
確認準備好的 initPRI.ora parameter file存在 , 內容重點的
INSTANCE_NAME=PRI

SERVICE_NAMES=PRI


#
確認password file 存在(ORAPWDPRI.ora)., listener.ora listen Instance, tnsnames.ora 需調整

4.2
增加 Windows 上 Oracle Service .
oradim -new -sid PRI -startmode Auto -SHUTMODE immediate

4.3
set ORACLE_SID=PRI

sqlplus " / as sysdba"

shutdown immediate

startup pfile='D:\oracle\as\database\INITPRI.ORA'

0 意見: