天天看點

在linux單機上手動建立Oracle 10g實體standby dataguard

DG環境介紹

OS:CentOS

Oracle Version:10.2.0.4

Redo傳輸模式:LGWR ASYNC

Primary資料庫 :

ORACLE_SID=orcl

資料檔案、控制檔案與日志檔案存放路徑     /oracle/oradata/orcl

Physical standby資料庫:

ORACLE_SID=stby

資料檔案、控制檔案與日志檔案存放路徑    /oracle/oradata/stby

一、在Primary庫上操作

1、打開設定force logging

SQL>sqlplus / as sysdba

SQL>alter database force logging;

2、啟動歸檔

SQL>alter database archivelog;

3、修改Primary庫的參數檔案,步驟如下

SQL>create pfile='/tmp/initpri.ora' from spfile;

SQL>create pfile='/tmp/initstby.ora' from spfile;

[[email protected] tmp]$ vi initpri.ora,增加下面内容

在linux單機上手動建立Oracle 10g實體standby dataguard

4、用initpri.ora打開Primary庫

SQL>startup pfile='/tmp/initpri.ora' mount;

SQL>create spfile from pfile='/tmp/initpri.ora';

5、建立standby controlfile

SQL>alter database create standby controlfile as ‘/oracle/oradata/stby/control01.ctl’;

6、複制standby controlfile

[[email protected] stby]$ cp control01.ctl control02.ctl

[[email protected] stby]$ cp control01.ctl control03.ctl

7、建立standby online redo,大小與online logfile一樣,組數比online logfile多一組(這一步是為了以後主備切換用)

SQL>alter database add standby logfile group 4 '/oracle/oradata/orcl/standby_redo01.log' size 50m;

SQL>alter database add standby logfile group 5 '/oracle/oradata/orcl/standby_redo02.log' size 50m;

SQL>alter database add standby logfile group 6 '/oracle/oradata/orcl/standby_redo03.log' size 50m;

SQL>alter database add standby logfile group 7 '/oracle/oradata/orcl/standby_redo04.log' size 50m;

注:Data Guard在最大保護和最高可用性模式下,Standby資料庫必須配置standby redo log,正常情況下僅需要在Standby端進行配置,考慮到主備切換,在primary端亦進行配置。Standby redo log組數公式>=(每個instance日志組個數+1)*instance個數

二、關閉Primary庫,拷貝資料檔案到/oracle/oradata/stby下

[[email protected] oradata]$cp orcl/* stby 

三、進入Primary庫的密碼檔案存放路徑,複制密碼檔案

[[email protected] ~]$ cd $ORACLE_HOME/dbs

[[email protected] dbs]$ cp orapworcl orapwstby

四、在Physical Standby庫上操作

1、編輯standby庫參數檔案

[[email protected] tmp]$vi /tmp/initstby.ora,增加下面内容

在linux單機上手動建立Oracle 10g實體standby dataguard

并且修改相關資料庫檔案的路徑為standby庫的真實存放路徑,請見下圖

在linux單機上手動建立Oracle 10g實體standby dataguard

2、用編輯好的initstby.ora參數檔案打開standby庫

[[email protected] tmp]$export ORACLE_SID=stby

SQL>startup pfile='/tmp/initstby.ora' mount;

SQL>create spfile from pfile='/tmp/initstby.ora';

3、建立standby online redo

SQL>alter database add standby logfile group 4 '/oracle/oradata/stby/standby_redo01.log' size 50m;

SQL>alter database add standby logfile group 5 '/oracle/oradata/stby/standby_redo02.log' size 50m;

SQL>alter database add standby logfile group 6 '/oracle/oradata/stby/standby_redo03.log' size 50m;

SQL>alter database add standby logfile group 7 '/oracle/oradata/stby/standby_redo04.log' size 50m;

五、編輯listener.ora與tnsnames.ora檔案,增加以下内容

[[email protected] admin]$ vi listener.ora

在linux單機上手動建立Oracle 10g實體standby dataguard

[[email protected] admin]$ vi tnsnames.ora

在linux單機上手動建立Oracle 10g實體standby dataguard

六、在standby庫上啟動redo應用

SQL>alter database recover managed standby database disconnect from session

七、測試redo傳輸

1、在Primary庫上切換日志

SQL>alter system switch logfile

2、驗證備庫是否有新的歸檔檔案

SQL>select sequence#,first_time,next_time from v$archived_log order by sequence#;

關于dataguard的理論介紹

http://blog.itpub.net/35489/viewspace-617885/