| 角色 | 主庫 | 備庫 |
|---|---|---|
| IP | 192.168.1.4 | 192.168.1.8 |
| ORACLE_SID | primary | standby |
| DB_UNIQUE_NAME | primary | standby |
| ORACLE_HOME | /u01/oracle/product/10.2.0/db_1 | /u01/oracle/product/10.2.0/db1 |
ALTER DATABASE FORCE LOGGING;ORAPWD FILE=ORAPW$ORACLE_SID PASSWORD=ORACLE ENTRIES=5ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/oradata/primary/redo041.log') SIZE 50M;CREATE PFILE FROM SPFILE;initprimary.ora:
LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='SERVICE=standby'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_START=TRUE
FAL_SERVER=standby
FAL_CLIENT=primary
DB_UNIQUE_NAME=primaryCREATE SPFILE FROM PFILE;SHUTDOWN IMMEDIATE; STARTUP MOUNT;ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/oradata/primary/standby.ctl';ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE;SCP -R /U01/ORADATA 192.168.1.8:/U01/ORADATASCP -R /U01/ADMIN 192.168.1.8:/U01/ADMINSCP -R /U01/ORACLE/PRODUCT/10.2.0/DB_1/DBS/* 192.168.1.8:/U01/ORACLE/PRODUCT/10.2.0/DB1/DBS/standby.ctl 複製為 3 個控制檔initstandby.ora):
LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='SERVICE=primary'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_START=TRUE
FAL_SERVER=primary
FAL_CLIENT=standby
DB_UNIQUE_NAME=standbyCREATE SPFILE FROM PFILE;-- 主庫
STARTUP;
-- 備庫
LSNRCTL START
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
SELECT NAME, DATABASE_ROLE FROM V$DATABASE;
-- 應顯示 PHYSICAL STANDBY
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
-- 驗證同步
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
主備雙方 LISTENER.ORA 需註冊對方 SID;TNSNAMES.ORA 需雙向解析 PRIMARY 與 STANDBY 服務名。文中提供完整範本可直接參考調整 IP/主機名。
ORA-12514:Listener 未註冊 Standby SID → 檢查 LISTENER.ORA SID_LISTORA-16058:Standby Redo Log 組數不足 → 依公式 (MaxLogGroups+1)*Threads 新增V$ARCHIVE_GAP、網路頻寬、LOG_ARCHIVE_MAX_PROCESSES