Linux6.4+Oracle11.2.0.4搭建DG

試驗環境描述

硬件信息

本次測試環境使用的虛擬環境如下圖所示,使用VMware Workstation 11搭建的兩臺Oracle Linux 6.4 64位操作系統,通過兩臺機器橋接到一塊虛擬網卡。

圖片.png

系統信息

服務器一(主)

服務器二(備)

主機名:zhanky

IP  192.168.214.10

數據庫版本: oracle   11.2.0.4

庫名:zky  TNSNAMEDGZ        

主機名:zhanky

IP  192.168.214.11

數據庫版本: oracle   11.2.0.4

庫名:zky  TNSNAMEDGB        

DG故障切換示意

         主備庫正常情況客戶端訪問流量訪問主庫,數據自動同步到備庫。當主庫出現故障時,管理員手動將備庫切換爲主庫。此時客戶端訪問備庫實現業務不中斷正常訪問。

圖片.png

測試流程

         我們模仿正式環境,先將primary服務器準備好,然後在standby服務器上只安裝數據庫軟件。在本次測試中我們使用rman的方式來備份數據庫,然後在standby上面還原。關鍵實施步驟如下

Primary

1、  打開歸檔模式,開啓強制記錄日誌

2、  創建日誌組

3、  添加靜態監聽,添加tns

4、  生成密碼文件

5、  生成pfile添加DG內容

6、  重啓通過pfile啓動,更新spfile

7、  通過rman duplicate備份

8、  生成控制文件

Standby

1、  將備份文件拷貝到standby對應的位置

2、  將密碼文件考到對應的位子

3、  將監聽文件修改後考到對應的位置,然後開啓監聽

4、  pfile文件更改後拷貝到standby

5、  通過oradim創建實例,加載更改的pfilenomount模式

6、  pfile更新到spfile,然後重啓數據庫

7、  通過rman 回覆數據庫,完成後open

8、  將控制文件替換

9、  然後啓用DG到備庫模式


DG主服務器設置

檢查數據庫歸檔

查看歸檔日誌是否開啓     

SQL> archive   log list

圖片.png

上圖看出庫開啓了歸檔模式。如果沒有開啓則按照以下步驟開啓歸檔模式

SQL>   shutdown immediate

SQL>   startup mount

SQL>   alter database archivelog;

SQL>   alter database force logging;

SQL>   alter database open;

圖片.png

創建日誌組

創建日誌組

[oracle@zhanky /]$ mkdir   /u01/archive

SQL> alter database add   standby logfile group 4 '/u01/archive/STAN04.LOG' size 50m;

SQL> alter database add standby logfile group 5 '/u01/archive/STAN05.LOG'   size 50m;

SQL> alter database add standby logfile group 6 '/u01/archive/STAN06.LOG'   size 50m;

SQL> alter database add standby logfile group 7 '/u01/archive/STAN07.LOG'   size 50m;

圖片.png

檢查密碼文件

密碼文件要拷貝到DG備庫,保持兩邊密碼文件一致。

[oracle@zhanky ~]$ ls /u01/app/oracle/product/11.2.0/db_1/dbs/

圖片.png

如果沒有密碼文件可以手動創建

SQL>   orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky password=manager   entries=10

建議設置密碼永不過期

SQL> alter profile default limit password_life_time unlimited;

配置監聽文件

配置靜態監聽,在listener.ora文件中添加靜態監聽

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = zky)

      (ORACLE_HOME   =/u01/app/oracle/product/11.2.0/db_1)

      (SID_NAME = zky)

    )

  )

圖片.png

注意linux環境中更改偵聽需要先stop在修改,不然會導致偵聽服務無法正常啓動關閉

配置TNS文件

配置tnsname.ora,設置DG主和DG備服務器監聽

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

DGZ =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

DGB =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

圖片.png

配置DG參數

下面開始配置dg文件了,配置完成後記得重啓數據庫。

SQL> alter system set   db_unique_name=dgz scope=spfile;

SQL> alter system set   LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)' scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=DGZ' scope=spfile;

SQL> alter system set   LOG_ARCHIVE_DEST_2= 'service=DGB lgwr async   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;

SQL> alter system set   FAL_SERVER='DGZ' scope=both;

SQL> alter system set   STANDBY_FILE_MANAGEMENT=AUTO scope=both;

SQL> alter system set   DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/zky/','/u01/app/oracle/oradata/zky/'   scope=spfile;

SQL> alter system set   LOG_FILE_NAME_CONVERT='/u01/archive/','/u01/archive/' scope=spfile;

圖片.png

創建參數文件

創建參數文件供備庫用

SQL> create pfile='/u01/zk.int' from spfile;

圖片.png


DG備服務器設置

複製文件

將密碼文件和參數文件拷貝到DG備庫對應的位置並賦予讀寫權限

[oracle@zhanky ~]$ scp   [email protected]:/u01/zk.int /u01/bk.int

[oracle@zhanky ~]$ scp   [email protected]:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky   /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky

[oracle@zhanky ~]$ chmod 777   /u01/bk.int

[oracle@zhanky ~]$ chmod   777 /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky

圖片.png

創建文件夾

[oracle@zhanky /]$ mkdir -p   /u01/archive/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/admin/zky/adump/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/oradata/zky/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/fast_recovery_area/zky/

圖片.png 

配置監聽文件

配置靜態監聽,在listener.ora文件中添加靜態監聽

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = zky)

      (ORACLE_HOME   =/u01/app/oracle/product/11.2.0/db_1)

      (SID_NAME = zky)

    )

  )

圖片.png

注意linux環境中更改偵聽需要先stop在修改,不然會導致偵聽服務無法正常啓動關閉

配置TNS文件

配置tnsname.ora,設置DG主和DG備服務器監聽

[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

DGZ =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

DGB =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

圖片.png

配置DG參數

將複製過來的參數文件更改下列紅色標識的地方

[oracle@zhanky ~]$ vi   /u01/bk.int

db_unique_name=dgb scope=spfile;

LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)'   scope=both;

LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)    DB_UNIQUE_NAME=DGZ' scope=spfile;

LOG_ARCHIVE_DEST_2=   'service=DGB lgwr async   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both;

FAL_SERVER='DGZ' scope=both;

完成更改後,進入數據庫創建spfile,重啓到nomount狀態準備還原數據庫

[oracle@zhanky /]$ sqlplus / as sysdba

SQL> create spfile from   pfile='/u01/bk.int';

SQL> startup nomount;

圖片.png

還原數據庫

[oracle@zhanky ~]$ rman   target sys/manager@DGZ auxiliary sys/manager@DGB

RMAN> duplicate target   database for standby from active database nofilenamecheck;

圖片.png

提示:還原數據庫要在nomount模式

 

DG配置

將庫配置爲standby庫,開啓到只讀模式,開啓實時應用日誌。

SQL> shutdown immediate

SQL> startup nomount;

SQL> alter database mount standby   database;

SQL> alter database open read only;

SQL> alter database recover managed   standby database using current logfile disconnect from session;

圖片.png

測試DG同步

主庫插入

SQL> create table zkydg as(select username   from dba_users where username='SYSTEM');

圖片.png

備庫查詢

SQL> select * from zkydg;

圖片.png


測試切換主備庫

主庫操作

SQL> alter database commit to   switchover to physical standby with session    shutdown;

SQL> startup nomount;

SQL> alter database mount standby   database;

SQL> alter database open read only;

SQL> alter database recover managed   standby database using current logfile disconnect from session;

 圖片.png

查看切換狀態

SQL> select   switchover_status from v$database;

圖片.png

備庫操作

SQL> alter database recover managed   standby database cancel;

SQL> alter database commit to   switchover to primary;

SQL> shutdown immediate

SQL> startup

圖片.png

測試切換是否成功DG同步

新主庫插入

SQL>    create table zkydgqh as(select username from dba_users where   username='SYS');

圖片.png

老主庫查詢

SQL> select * from zkydgqh;

圖片.png


常用檢查命令

查看切換狀態

SQL> select   switchover_status from v$database;

圖片.png

查看是否同步

SQL> SELECT   SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

圖片.png

強制切換爲主庫

         當主庫掛了無法控制時,可直接在備庫上強制接管數據庫

SQL> RECOVER MANAGED   STANDBY DATABASE FINISH force;

 

SQL> shutdown immediate
SQL> startup nomount;
SQL> alter database mount standby   database;
SQL> alter database open read only;
SQL> alter database recover managed   standby database using current logfile disconnect from session;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章