Data Gurad的作用就不多說了,主在這說下物理standby的搭建步驟。
大致有這三種方式建立standby庫
方式一:用rman的方式產生standby. (用rman的duplice方式直接建立,無須先備份)
方式二:用rman的restore方式產生。(先用rman全備份主庫後,再用rman通過restore的方式建立)
方式三:用cp的方式產生 (關閉主庫後,複製控制項檔案,密碼檔案,資料檔案到備庫所在位置)
我主要在這用duplice方式,優點無須多說,假設你的資料庫上T,你會選哪種方法?
Oracle測試版本為11g;
1. 設定好主備庫的環境變數,及建立好相關目錄
主庫:
su - oracle
--歸檔日誌存放目錄
--例子放在/u01/app/oracle/archivelog/xcldb 下
mkdir -p $ORACLE_BASE/archivelog/$ORACLE_SID
環境變數注意下面兩個參數:
ORACLE_SID=xcldb
ORACLE_UNQNAME=xcldb
備庫:
su - oracle
--產生相關的目錄,還要注意下許可權, 另11g就這幾個,10G還有幾個目錄
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/{adump,bdump,cdump,dpdump,udump,pfile}
--資料庫所在目錄
mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID
--閃回
mkdir -p $ORACLE_BASE/flash_recovery_area/$ORACLE_SID
--歸檔日誌存放目錄
mkdir -p $ORACLE_BASE/archivelog/$ORACLE_SID
環境變數注意下面兩個參數:
ORACLE_SID=xcldbdg
ORACLE_UNQNAME=xcldbdg
2. 設定資料庫為歸檔模式
--查看當前模式
archive log list
--設定歸檔日誌的路徑,可以產生多份一樣的日誌,儲存多個位置,以防丟失
--如果沒設定,預設會設到$ORACLE_HOME/dbs下。
alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog/xcldb';
shutdown immediate
startup mount
alter database archivelog;
archive log list;
3.設定force logging 強制記錄模式
alter database force logging
select force_logging from v$database;
--取消此模式:alter database no force logging;
--手工切換日誌,好產生歸檔日誌
alter system switch logfile --執行個三次
select name from v$archived_log;
--查看已有的記錄檔
select * from v$logfile;
4.建立Standby redo log
建立個數建議公式:
Standby redo log 組數公式>=(每個instance日誌組個數+1)*instance個數
(maximum number of logfiles for each thread + 1) * maximum number of threads
--找到最大的group#,因為group#不能重複
select max(group#) from v$log;
--可用這兩條查詢看到組號及檔案大小, 11g預設是52428800
SELECT GROUP#, BYTES FROM V$LOG;
SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
--注意下大小一致,我是測試,沒管size
alter database add standby logfile thread 1 group 11 '/u01/app/oracle/oradata/xcldb/redo11.log' size 50m;
alter database add standby logfile thread 1 group 12 '/u01/app/oracle/oradata/xcldb/redo12.log' size 50m;
alter database add standby logfile thread 1 group 13 '/u01/app/oracle/oradata/xcldb/redo13.log' size 50m;
alter database add standby logfile thread 1 group 14 '/u01/app/oracle/oradata/xcldb/redo14.log' size 50m;
注意:
在add standby logfile 時,如果是單一實例資料庫thread 1可以不加,但如果是RAC資料庫,
則要分別為每個執行個體各增加相關的Standby log;
另外如果是用OMF管理的可用下面的命令建立:
alter database add standby logfile thread 1 group 11 size 500m;
驗證下成果:
col member format a50
select group#, type, member from v$logfile where type = 'STANDBY';
相關參考:
Oracle Data Guard 重要配置參數
基於同一主機配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 歸檔刪除策略及指令碼
Oracle Data Guard 的角色轉換
Oracle Data Guard的日誌FAL gap問題
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 處理方法