自 Oracle 10g 開始,建立 Logical Standby 都需要先把它建成 Physical Standby ,然後再 convert 為 Logical Standby 。
Physical Standby 轉成 Logical Standby 之前,有幾個步驟需要先進行設定,首先停止 Physical Standby 的 log apply :
接下來於 Primary 資料庫 Build Logminer Directory ,由於 Logical Standby 使用的是 SQL Apply ,這邊會透過 Logminer 功能於 Redo Log 擷取 SQL Statement ,因此需要 Build Logminer Directory 讓 Logminer 得以進行,執行 BUILD 之後會同時 enable supplemental log 並且等到當下所有 transaction 完成 :
最後添加參數 LOG_ARCHIVE_DEST_3 , Logical Standby 使用的是 SQL Apply ,資料庫的狀態為 open read write ,在 Apply 的過程中除了接收 Primary 傳過來的 Redo Log ,自己也會同時產生屬於自己的 Redo Log ,因此需要多設定一個 Archive Log 路徑才存放 Logical Standby 自己產生的 Archive Log ,鑒於有可能會做角色切換, LOG_ARCHIVE_DEST_3 需要同時在 Primary 與 Standby 進行設定 :
VALID_FOR 參數 STANDBY_LOGIFLES 表示只有 Standby Redo Log 適用此設定; STANDBY_ROLES 表示只有在角色為 Standby 時才套用此設定。
DB_UNIQUE_NAME 參數,在 Standby 端設定時為 Standby 的 unique name (orcldg) ;在 Primary 設定時為 Primary 的 unique name (orcl) 。
前置設定完成後,就可以轉換為 Logical Standby , Logical Standby 為 open read write 模式,可以視為是一個獨立的資料庫,資料庫名稱要與 Primary 不同,因此從 Physical Standby convert 過來的同時需要賦予 Logical Standby 資料庫一個新的 DB Name ,這邊給予 orcls ,轉換時 Standby 資料庫要處於 mount 狀態然後執行 :
由於 Standby 的 DB Name 已經改變,因此原先的 password file 已不可用,需要重建 password file ,假設 Standby 的 SID 維持 orcl ,使用 orapwd 重建 password file :
Convert 完之後將 Logical Standby 開啟至 read write 模式 :
最後啟動 logical apply :
啟動 logical apply 之後可以從以下命令查詢相關訊息:
由於 Logical Standby 是使用 SQL Apply ,有些物件以及 Data Type 是不支援同步的,例如 Materialized View 、 XML Data Type 、 LOB Data Type …等是沒有支援的,可以從 dba_logstdby_unsupported_table 查詢 Logical Standby 裡面有哪些物件是沒有被支援的 :
Logical Standby 早期多是運用在資料庫的 rolling-upgrade 以減少升級過程中服務停止的時間,而同樣是 SQL Apply 的功能, Logical Standby 如今漸漸的被 Oracle 的另一項產品 Golden Gate 取代,實務上 Logical Standby 已經很少使用。
沒有留言:
張貼留言