Dataguard配置總結


Dataguard配置總結

本例情形

在主庫存在運行的情況下,增加配置dataguard備庫,實現雙機熱備,高可用性。

主庫要求,歸檔模式,強制歸檔。

主庫idty

備庫idty_st

1、密碼文件

為備庫制作密碼文件、參數文件。密碼文件直接使用主庫文件,參數文件需要修改。

 cp orapwidty ~/

  scp orapwidty 132.108.200.133:/home/oracle

2、參數文件

 create pfile='/home/oracle/pfileidty_st.ora' from spfile

scp pfileidty_st.ora 132.108.200.133:/home/oracle

 

3、參數文件修改

 

--------------以下修改作為參考

 

*.log_archive_config='dg_config=(idty,idty_st)'

 

*.DB_UNIQUE_NAME=idty_st

*.LOG_ARCHIVE_DEST_2='SERVICE=idty ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=idty'

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.FAL_SERVER=idty

*.FAL_CLIENT=idty_st

*.STANDBY_FILE_MANAGEMENT=AUTO

*.standby_archive_dest='/home/oracle/app/oracle/stlog/idty'

 

 

 

修改備課日志目錄,如果不改默認在dbs目錄。如果存在多個備庫,則日志數據不便於區分。

alter system set standby_archive_dest='/home/oracle/app/oracle/stlog/idty' scope=both;

 

4、備庫創建數據文件目錄、回閃區日志文件目錄

日志目錄/oradat/idty   /fast_recovery_area/idty  

接收日志目錄  /stlog/idty

 

 

5、啟動備庫數據庫 ,啟動到nomount

export ORACLE_SID=idty

 

產生spfile

create spfile from pfile='/home/oracle/pfileidty_st.ora';

 

startup nomount

 

修改備課日志目錄,如果不改默認在dbs目錄。如果存在多個備庫,則日志數據不便於區分。

alter system set standby_archive_dest='/home/oracle/app/oracle/stlog/idty' scope=both;

 

 

sqlplus "/as sysdba"

 

select name from v$database;

 

6、配置tnsnames listener

主庫/備庫配置tnsnames

IDTY =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 132.108.120.179)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = idty)

    )

  )

 

IDTY_ST =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 132.108.200.133)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = idty_st)

    )

  )

 

備庫配置監聽

  SID_LIST_LISTENER= 

  (SID_LIST= 

    (SID_DESC= 

      (GLOBAL_DBNAME=idty_st) 

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome1) 

      (SID_NAME=idty)) 

      ) 

 

重啟監聽

 

7、rman duplicate復制主庫創建備庫

在備庫,rman登錄主庫

rman target sys/xxxxxx@idty auxiliary sys/xxxxxx@idty_st

 

開始復制

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER  (適用與主、備庫oracle_home路徑不同,設置了目錄轉換的情形。)

如果目錄不同,需要修改pfile,增加目錄轉換。本例目錄相同就沒有設置目錄轉換。

DB_FILE_NAME_CONVERT='/home/app/oracle/oradata/ljydb','/home/oracle/app/oracle/oradata/ljydb'

LOG_FILE_NAME_CONVERT='/home/app/oracle/oradata/ljydb','/home/oracle/app/oracle/oradata/ljydb','/home/app/oracle/fast_recovery_area/ljydb','/home/oracle/app/oracle/fast_recovery_area/ljydb'

 

 

如果和主庫路徑相同,則要加NOFILENAMECHECK參數。否則報RMAN-05001,conflicts with a file used by the target database。

DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK; 

 

 

 

8、主庫配置

保證主庫要求,歸檔模式,強制歸檔。

ALTER DATABASE FORCE LOGGING;

 

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

修改參數:

 

alter system set log_archive_config='dg_config=(idty,idty_st)' scope=both;

 

alter system set log_archive_dest_2='service=idty_st async valid_for=(online_logfiles,primary_role) db_unique_name=idty_st' scope=both;

 

 

alter system set log_archive_dest_state_2=enable;

建議先關閉日志傳輸,等備庫配置好后在啟動傳輸。

alter system set log_archive_dest_state_2=defer;

 

 

show parameter log_archive_config;

show parameter log_archive_config;

 

 

 

 

 

 

 

9、備庫應用日志

應用日志

alter database recover managed standby database disconnect from session;

 

暫停日志應用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

10、主庫啟動日志傳輸

啟動日志傳輸

alter system set log_archive_dest_state_2=enable;

建議先關閉日志傳輸,等備庫配置好后在啟動傳輸。

 

 

   --測試下 產生歸檔文件

alter system switch logfile;

 

 

 

11、多個實例監聽靜態配置方法

listener.ora

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = cvm-dbsrv02)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

SID_LIST_LISTENER= 

  (SID_LIST= 

    (SID_DESC= 

      (GLOBAL_DBNAME=ljydb_st) 

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome1) 

      (SID_NAME=ljydb))

    (SID_DESC= 

      (GLOBAL_DBNAME=idty_st) 

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome1) 

      (SID_NAME=idty)) 

   )

  

  

  

 

12、問題及解決方法

ORA-17628:問題解決,原因是備庫缺少日志目錄、數據文件目錄,創建相應的目錄,即可解決問題。

 

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of Duplicate Db command at 10/26/2017 16:56:20

RMAN-05501: aborting duplication of target database

RMAN-03015: error occurred in stored script Memory Script

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 10/26/2017 16:56:20

ORA-17628: Oracle error 19505 returned by remote Oracle server

 

沒有創建日志目錄/oradat/idty   /fast_recovery_area/idty

 

ORA-32004:問題原因,pfile增加了參數設置,改變了默認值則出現提示,不影響數據庫啟動。本例子設置了參數standby_archive_dest

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

 

!!!!!!!!!----------------------

SQL> startup nomount

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.

看日志:

Deprecated system parameters with specified values:

  standby_archive_dest    

#####  ---------------------

 

 

 

RMAN-05001,主備庫oracle目錄相同的情況下,如果沒有nofilenamecheck參數,則復制庫的時候會報這個錯。

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of Duplicate Db command at 10/27/2017 10:40:46

RMAN-05501: aborting duplication of target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/ts_data03.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/ts_data02.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/ts_data01.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/users01.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/undotbs01.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/sysaux01.dbf conflicts with a file used by the target database

RMAN-05001: auxiliary file name /home/oracle/app/oracle/oradata/idty/system01.dbf conflicts with a file used by the target database

 

!!!!!!!!!------以下原因描述來源網絡:

nofilenamecheck如果副本數據庫與目標庫不在同一台機器上,並且副本數據庫的在線日志文件路徑與目標庫相同,

則運行duplicate命令時必須指定NOFILENAMECHECK參數以避免沖突提示。

暈了吧,異機操作路徑相同還必需指定NOFILENAMECHECK。此處oracle表現的很傻,

它不知道你要恢復的路徑是在另一台機器上,它只是認為要恢復到的路徑怎么跟目標數據庫表現的一樣呢?

會不會是要覆蓋目標數據庫啊,為了避免這種情形,於是它就報錯。所以一旦異機恢復,並且路徑相同,

那么你必須通過指定NOFILENAMECHECK來避免oracle的自動識別。

 

 

 

13、常用sql語句

查看日志目錄

  select *From v$archive_dest;

查看數據庫是否歸檔模式

   select log_mode,force_logging from v$database

   select * from V$DATAGUARD_CONFIG ;

查數據庫

   select *From v$archive_dest_status

  

 select open_mode from v$database;

  

   select *from v$session;

   查看日志應用傳輸清單

   SELECT SEQUENCE#,name , FIRST_TIME, NEXT_TIME ,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE# desc;

查看備庫日志傳輸、應用進程狀態、日志

    SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

 SELECT * FROM V$DATAGUARD_STATUS order by timestamp desc;

 

 

1、擴大恢復目錄空間大小

ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH;

14、dataguard方案的局限性思考

因為dataguard的原理是通過網絡傳輸歸檔日志到備庫,然后在備庫應用日志,實現雙機熱備。

那么對於日志量生成速度太快的數據庫,臨界情況是主庫日志產生的速度大於網絡傳輸數據的速度,將導致備庫永遠追不上主庫,主庫未傳輸的日志占用空間將不斷擴張,而且因為未傳輸完成也不能清除。

 因此,dataguard方案不適合分析型數據庫。

從經驗人士獲知的dataguard可適應的極限日志量為400G-500G/每天。(未實驗驗證)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM