首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 12c Data Guard 物理備份庫搭建完整手冊(CDB 架構、Active Duplicate)

     編輯:Oracle 教學

環境資訊

  • OS:Oracle Linux 6.3 / Kernel 2.6.39 (UEK)
  • DB:12.1.0.1 CDB 架構,含 PDB$SEED、PCNDBA
  • Primary:DB_UNIQUE_NAME=PCNDBA_P、Service=PCNDBA_P
  • Standby:DB_UNIQUE_NAME=PCNDBA_S、Service=PCNDBA_S
  • IP:dg1(192.168.56.3)、dg2(192.168.56.4)

1. 主庫啟用 Force Logging 與歸檔模式

ALTER DATABASE FORCE LOGGING;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER SYSTEM SET db_recovery_file_dest_size=10G;
ALTER DATABASE OPEN;
ALTER PLUGGABLE DATABASE pcndba OPEN;

2. 主庫新增 Standby Redo Log(CDB 層級)

-- 查詢 Online Redo 大小
SELECT group#, members, bytes FROM v$log;  -- 50M, 3 groups

-- 新增 4 組 Standby Redo (groups+1)
ALTER DATABASE ADD STANDBY LOGFILE '/path/stdredo01.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE '/path/stdredo02.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE '/path/stdredo03.log' SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE '/path/stdredo04.log' SIZE 50M;

3. 雙端配置 Listener 與 TNSNAMES

listener.ora 靜態註冊 SID=CDB 名稱;tnsnames.ora 互指 Service Name=PCNDBA。

4. 備庫建立目錄結構

mkdir -p /home/ora12c/app/oracle/fast_recovery_area
mkdir -p /home/ora12c/app/oracle/oradata
mkdir -p /home/ora12c/app/oracle/admin/cndba/adump

5. 主庫建立 PFILE 並加入 DG 參數

*.db_name='cndba'
*.db_unique_name='cndba_p'
*.log_archive_config='dg_config=(cndba_p,cndba_s)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=cndba_p'
*.log_archive_dest_2='service=cndba_s valid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=cndba_s'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='cndba_s'

若主備 CDB 名稱不同,需再加 DB_FILE_NAME_CONVERT、LOG_FILE_NAME_CONVERT。

6. 複製密碼檔、PFILE 至備庫並修改參數

  • scp orapwcndba standby:`pwd`
  • 修改 db_unique_name='cndba_s'、fal_server='cndba_p'、log_archive_dest_1/2 互換、控制檔路徑。

7. 啟動備庫至 NOMOUNT

STARTUP NOMOUNT;

8. RMAN Active Duplicate For Standby

RMAN TARGET sys/oracle@cndba_p AUXILIARY sys/oracle@cndba_s
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK DORECOVER;

過程:備份密碼檔 → 還原控制檔 → MOUNT STANDBY → 重新命名資料檔/暫存檔 → 透過網路還原所有資料檔 → 切換歸檔 → RECOVER STANDBY → 完成。

9. 開啟備庫並啟用 Real-Time Apply

ALTER DATABASE OPEN;
ALTER PLUGGABLE DATABASE pcndba OPEN;  -- 唯讀
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
-- 狀態變為 READ ONLY WITH APPLY

10. 驗證同步

-- Primary
ALTER SESSION SET CONTAINER=pcndba;
CREATE TABLE cndba AS SELECT * FROM dba_users;
ALTER SYSTEM SWITCH LOGFILE;  -- 必須在 CDB$ROOT 執行

-- Standby
ALTER SESSION SET CONTAINER=pcndba;
SELECT COUNT(*) FROM cndba;  -- 可查到 36 筆,同步成功

關鍵提醒

  • 12c DG 於 CDB 層級運作,PDB 級別無獨立 Redo,故 ALTER SYSTEM SWITCH LOGFILE 必須在 CDB$ROOT 執行。
  • 密碼檔若主備 Instance 名稱相同可直接複製,否則用 orapwd 重建。
  • 建議啟用 STANDBY_FILE_MANAGEMENT=AUTO 讓資料檔自動同步。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved