Oracle Data Guard Linux 平臺 Physical Standby 搭建例項 -1

season0891發表於2011-04-14

二. Standby 端配置


 

 1. 建立備庫存放資料檔案和後臺跟蹤目錄, 這個目錄可以和主庫相同, 如果不同,就需要在主庫的初始化檔案中進行轉換。 

如:

*.log_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

*.db_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

 

   $ORACLE_BASE\ORADATA\ORCL 

   $ORACLE_BASE\admin\orcl 

   $ORACLE_BASE\admin\orcl\adump 

   $ORACLE_BASE\admin\orcl\bdump 

   $ORACLE_BASE\admin\orcl\cdump 

   $ORACLE_BASE\admin\orcl\dpdump 

   $ORACLE_BASE\admin\orcl\pfile 

   $ORACLE_BASE\admin\orcl\udump 

   $ORACLE_BASE\admin\orcl\ 

 

2. 將主庫的密碼檔案,控制檔案,資料檔案,引數檔案,日誌檔案copy到備庫。 

說明一點,這個控制檔案是我們自己建立的standby 控制檔案。將copy過來的控制檔案再複製三份就可以了。  主備的控制檔案是不一樣的。  這裡除了採用直接copy 檔案之外,還可以採用Rman 恢復來做。 直接copy 需要停資料庫,如果採用RMAN 的話,就不需要停機了。 

[oracle@localhost orcl]$ pwd

/u01/app/oracle/oradata/orcl

[oracle@localhost orcl]$ ls

control01.ctl  redo01.log  redo04.log  redo07.log    temp01.dbf

control02.ctl  redo02.log  redo05.log  sysaux01.dbf  undotbs01.dbf

control03.ctl  redo03.log  redo06.log  system01.dbf  users01.dbf

[oracle@localhost orcl]$ scp *.dbf 10.85.10.2://u01/app/oracle/oradata/orcl

[oracle@localhost u01]$ scp *.ctl 10.85.10.2://u01/app/oracle/oradata/orcl

[oracle@localhost u01]$ scp *.log 10.85.10.2://u01/app/oracle/oradata/orcl

[oracle@localhost u01]$ scp initorcl.ora 10.85.10.2://u01/app/oracle/product/10.2.0/db_1/dbs

[oracle@localhost dbs]$ scp orapworcl 10.85.10.2://u01/app/oracle/product/10.2.0/db_1/dbs

 

3. 修改初始化引數檔案

修改之後如下:

*.DB_UNIQUE_NAME='orcl_st' 

*.log_archive_dest_1='location=/u01/archive' 

*.log_archive_dest_2='SERVICE=orcl_pd' 

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE 

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE 

*.FAL_SERVER='orcl_st' 

*.FAL_CLIENT='orcl_pd' 

*.standby_file_management='AUTO'

*.standby_archive_dest='/u01/archive'

 

4. 修改listener.ora 和 tnsnames.ora 檔案,如果不存在,就從主庫上copy 過去。

 

5. 在備庫新增redo log file

  如果主庫沒有新增redo log file,可以先用copy 過來的初始化檔案將資料庫啟動到mount 狀態。在建立個spfile,最後新增redo log

SQL> startup mount pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

ORACLE instance started.

SQL> create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';

 

新增一個新的Standby Redologs組(注意組號不要與當前存在的Online Redologs組重複),併為該組指定一個成員:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M; 

 

提示,由於從Primary資料庫複製檔案時並沒有複製Online Redologs,因此物理Standby資料庫在第一次啟動REDO應用時,會在Alert檔案中報Online Redo Logfile檔案不存在,沒有關係,物理Standby會自動重建這批檔案,同時你也不用擔心會丟失資料,Online Redologs中的資料會以歸檔檔案的形式從Primary端接收。

 

 

至此,Data Guard 的操作已經完成,下面來開始驗證。

 

 

注意Data Guard 啟動順序:

啟動順序:先standby ,primary;
       關閉順序:先primary standby;

 

 

在備庫將例項啟動到mount 狀態

SQL> startup nomount;

SQL>alter database mount standby database ; 

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

SQL>alter database recover managed standby database disconnect from session; 

 

在備庫啟動監聽:

$lsnrctl start

 

在主庫啟動例項:

SQL> startup;

 

在主庫啟動監聽:

$lsnrctl start

 

在主庫驗證歸檔目錄是否有效:

SQL> SELECT STATUS,DESTINATION, ERROR FROM V$ARCHIVE_DEST;

如果有錯誤,要排查原因。

 

SQL> alter system switch logfile;

 

SQL> select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

--------------

            70

 

主備查詢結果一致,Data Guard 搭建結束。 

 

 

注意:如果在主庫執行 alter database clear unarchived logfilealter database open resetlogs , dataguard要重建

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-692531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章