首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 11gR2 邏輯備用資料庫搭建完整實錄

     編輯:Oracle 資料庫相關知識

架構前提

  • 主庫:ORCL(Primary)
  • 備庫:STBY(Logical Standby)
  • 版本:11.2.0.1,同機器雙實例演示

階段 0:先建物理備庫(略,假設已完成)

物理備庫建立後,建議雙方各自建立 SPFILE。

階段 1:主庫生成 LogMiner 字典

-- 主庫執行,會觸發數次日誌切換,忽略報錯
EXEC DBMS_LOGSTDBY.BUILD;

階段 2:物理備庫轉邏輯備庫

-- 1. 停止 Redo Apply
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

-- 2. 轉換(db_name 需與主庫一致)
ALTER DATABASE RECOVER TO LOGICAL STANDBY ORCL;

-- 3. 重啟至 MOUNT
SHUTDOWN IMMEDIATE
STARTUP MOUNT

-- 4. 驗證角色
SELECT DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, GUARD_STATUS, PROTECTION_MODE FROM V$DATABASE;

階段 3:備庫端完善配置

3.1 重建密碼檔(必須 IGNORECASE=Y)

ORAPWD FILE=$ORACLE_HOME/dbs/orapwstby PASSWORD=oracle ENTRIES=5 IGNORECASE=Y FORCE=Y

3.2 修改關鍵參數

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/oradata/arch/stby VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STBY' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/u01/oradata/arch VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=STBY' SCOPE=BOTH;

3.3 建立 Standby Redo Log(建議組數 = 線上日誌組數 + 1,尺寸一致)

ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/oradata/stby/standbylj01.log') SIZE 20M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/oradata/stby/standbylj02.log') SIZE 20M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/oradata/stby/standbylj03.log') SIZE 20M REUSE;

3.4 開啟邏輯備庫並啟動 SQL Apply

ALTER DATABASE OPEN RESETLOGS;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

階段 4:驗證與測試

-- 檢查實例狀態
SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
SELECT DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE, GUARD_STATUS FROM V$DATABASE;
SELECT GROUP#, SEQUENCE#, USED, STATUS FROM V$STANDBY_LOG;

-- 主庫測試
CREATE TABLE SCOTT.T4 (ID INT);
INSERT INTO SCOTT.T4 VALUES(4);
COMMIT;
ALTER SYSTEM SWITCH LOGFILE;

-- 稍等片刻,備庫查詢
SELECT * FROM SCOTT.T4;  -- 應返回 1 行

關鍵差異提醒:邏輯 vs 物理備庫

維度物理備庫邏輯備庫
複製單位區塊級SQL 邏輯級(經 LogMiner 轉換)
備庫可讀寫唯讀 / Active Data Guard可讀寫(需注意 GUARD 限制)
支援物件類型全部部份不支援(如物化視圖、全域暫存表)
轉換複雜度低需 DBMS_LOGSTDBY.BUILD + 轉換指令

邏輯備庫適合「報表查詢+災備」雙活場景,但需嚴格測試應用相容性(DBMS_LOGSTDBY.SKIP 跳過不支援物件)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved