oracle dataguard broker 配置

e71hao發表於2021-06-30

說明:
本文安裝配置了Oracle 11g Dataguard透過duplicate方式建立物理備庫。
比起上次配置有以下不同點:
1. 主備庫目錄結構不同。
2. 採用duplicate方式建立物理備庫。


一、環境介紹

1. 主資料庫環境

作業系統版本  : OEL5.8 x64
資料庫版本    : Oracle 11.2.0.3 x64
資料庫名      : orcl
資料庫SID     : orcl
db_unique_name: orcl
instance_name : orcl
DGMGRL        : orcl_DGMGRL


2. 備庫環境

作業系統版本  : OEL5.8 x64
資料庫版本    : Oracle 11.2.0.3 x64 (只安裝oracle資料庫軟體,no netca dbca)
資料庫名      : slave
資料庫SID     : slave
db_unique_name: slave
instance_name : slave
DGMGRL        : slave_DGMGRL


3. DataGuard啟動順序

啟動順序:先啟備庫,後啟主庫
關閉順序:先關主庫,後關備庫

 

二、主資料庫環境準備


1. 主庫環境對比

充分利用主資料庫原來環境,僅量不對主庫引數配置做過多的修改。

重新建立口令檔案

# su - oracle
$ orapwd file='/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl' password=oracle entries=10 force=y


2. 修改配置lisener監聽檔案

說明:新增dgmgrl靜態監聽配置,為後面的dg broker配置打基礎。

$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

#其中的GLOBAL_DBNAME具有固定的格式:<db_unique_name>_DGMGRL.<db_domain>。


4. 修改配置tnsname.ora檔案

說明:ORCL是主庫的服務名,DG是備庫的服務名。

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

SLAVE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = slave)
    )
  )


5. 修改配置成規檔模式

1)、檢查資料庫是否處於歸檔狀態

SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on;
SQL> alter database open;


2)、將主庫設定為 FORCE LOGGING 模式

SQL> alter database force logging;
SQL> select force_logging,flashback_on from v$database;

FOR FLASHBACK_ON
--- ------------------
YES YES


6. 修改主庫引數檔案

SQL> 
alter system set instance_name='orcl' scope=spfile;  
alter system set db_unique_name='orcl' scope=spfile;  
alter system set local_listener='orcl' scope=spfile;
alter system set log_archive_config='DG_CONFIG=(orcl,slave)';  
alter system set log_archive_dest_1='LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=orcl' scope=spfile; 
alter system set log_archive_dest_2='SERVICE=slave lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=slave' scope=spfile;  
alter system set log_archive_format='arch_%r_%t_%s.arc' scope=spfile;
alter system set fal_client='orcl' scope=spfile; 
alter system set fal_server='slave' scope=spfile;  
alter system set standby_file_management=AUTO;  
alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 50M;  
alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/standby_redo05.log' size 50M;  
alter database add standby logfile group 6 '/u01/app/oracle/oradata/orcl/standby_redo06.log' size 50M;  
alter database add standby logfile group 7 '/u01/app/oracle/oradata/orcl/standby_redo07.log' size 50M;  

SQL> shutdown immediate;
SQL> startup;

 

三、備庫配置


1. 備庫環境

作業系統版本  : OEL5.8 x64
資料庫版本    : Oracle 11.2.0.3 x64 (只安裝oracle資料庫軟體,no netca dbca)
資料庫名      : slave
資料庫SID     : slave
db_unique_name: slave
instance_name : slave
DGMGRL        : slave_DGMGRL


2. 修改配置lisener監聽檔案

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = slave)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = slave)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = slave_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = slave)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle


其中的GLOBAL_DBNAME具有固定的格式:<db_unique_name>_DGMGRL.<db_domain>。


3. 修改配置tnsname.ora檔案

說明:ORCL是主庫的服務名,DG是備庫的服務名。

$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

SLAVE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = slave)
    )
  )


測試服務名連通性:

tnsping orcl
tnsping slave


3. 建立11g資料庫基本目錄

# su - oracle

mkdir -p /u01/app/oracle/admin/slave/{adump,dpdump,pfile,scripts}  
mkdir -p /u01/app/oracle/oradata/slave  
mkdir -p /u01/app/oracle/fast_recovery_area/slave
mkdir -p /u01/archivelog


4. 複製主庫口令檔案並改名

注:10g DG環境只要求密碼相同,11g DG則要求與主庫完全一致。
否則報無許可權錯誤。

$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
$ scp  oracle@192.168.233.150:/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl  $ORACLE_HOME/dbs/
$ mv orapworcl orapwslave


測試遠端登入

$ sqlplus   as sysdba;
$ sqlplus   as sysdba;


5. 啟動到nomount狀態

$ echo 'db_name=slave' > $ORACLE_HOME/dbs/initslave.ora  
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> startup nomount;



四、 開始在RMAN duplicate資料庫


1. RMAN同進連線主庫與備庫

$ rman target   auxiliary 

恢復管理器: Release 11.2.0.3.0 - Production on 星期五 8月 16 21:14:10 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

已連線到目標資料庫: ORCL (DBID=1351417842)
已連線到輔助資料庫: SLAVE (未裝載)


2. 開始duplicate資料庫

RMAN>

run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby nofilenamecheck from active database 
dorecover
spfile
parameter_value_convert 'orcl','slave'
set instance_name='slave' 
set db_unique_name='slave'
set local_listener='slave'
set db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/slave/'
set log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/slave/'
set control_files='/u01/app/oracle/oradata/slave/control01.ctl','/u01/app/oracle/oradata/slave/control02.ctl','/u01/app/oracle/oradata/slave/control03.ctl'
set log_archive_dest_1='LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=slave'
set log_archive_dest_2='SERVICE=orcl lgwr async valid_for=(online_logfile,primary_role) db_unique_name=orcl'
set log_archive_max_processes='5'
set standby_file_management='AUTO'
set fal_client='slave'
set fal_server='orcl';
release channel c1;
release channel c2;
release channel stby;
}

RMAN> quit
恢復管理器完成。


3. 檢視備庫狀態

說明:duplicate資料庫之後,備庫只是處於mount狀態,檢視備庫狀態。

$ sqlplus / as sysdba

# 檢視備庫狀態

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY slave


4. 將備庫置與應用日誌模式狀態

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


5. 驗證物理備庫日誌應用

1)主庫上操作

SQL> conn / as sysdba;
SQL> create user abc identified by abc ;
SQL> grant dba to abc;
SQL> conn abc/abc
SQL> create table abc ( id integer , name char(10));
SQL> insert into abc values ( 0 , 'aaa' );
SQL> commit;

SQL> conn / as sysdba;

SQL> archive log list;
資料庫日誌模式          存檔模式
自動存檔                啟用
存檔終點                /u01/archivelog/
最早的聯機日誌序列      8
下一個存檔日誌序列      10
當前日誌序列            10

 

2)備庫上驗證

SQL> archive log list
資料庫日誌模式         存檔模式
自動存檔               啟用
存檔終點               /u01/archivelog/
最早的聯機日誌序列     9
下一個存檔日誌序列     0
當前日誌序列           10


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

 SEQUENCE# FIRST_TIME     NEXT_TIME      APPLIED
---------- -------------- -------------- ---------
         7 16-8月 -13     16-8月 -13     YES
         8 16-8月 -13     16-8月 -13     YES
         9 16-8月 -13     16-8月 -13     IN-MEMORY

經過測試,Oracle 11g dataguard物理備庫建立成功。



將備庫置於Active DataGuard模式


在Oracle 11g之前,物理備庫(physical Standby)在應用redo的時候,資料庫需要處於mount狀態。從11g開始,應用redo的時候,物理備庫可以處於read-only模式,這就稱為Active Data Guard,這種狀態可以實現實時查詢功能。


1. 備庫上操作

1) 檢視備庫當前狀態 mount

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY slave


2) 取消備庫的自動恢復

SQL> alter database recover managed standby database cancel;
資料庫已更改。


3) OPEN備庫為只讀模式(Dataguard只能啟動到readonly模式)

SQL> alter database open;
資料庫已更改。

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ ONLY            PHYSICAL STANDBY slave


4)開啟實時應用狀態模式

SQL> alter database recover managed standby database using current logfile disconnect;
資料庫已更改。

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ ONLY WITH APPLY PHYSICAL STANDBY slave


備庫上檢視驗備庫實時應用情況

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP

已選擇5行。


2. 主庫上操作執行DDL,DML操作驗證


SQL> create tablespace abcd datafile '/u01/app/oracle/oradata/orcl/abcd.dbf' size 10m autoextend on next 

10m;

表空間已建立。

SQL> conn abc/abc
已連線。
SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa

SQL> 
SQL> insert into abc values (1 , 'bbb');

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa
         1 bbb

SQL> 


3. 備庫上驗證操作

SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
ABCD

已選擇6行。

表空間已經過備庫來了。


SQL> conn abc/abc
已連線。
SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa
         1 bbb

SQL> 

表記錄已經應用過來了。

Active dataguard實驗結束。



1. 主庫broker配置

1) 查詢switchover狀態

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          TO STANDBY


2) 查詢dg_broker_start引數

SQL> show parameter dg_broker_start;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start                      boolean     FALSE


SQL> alter system set dg_broker_start = true;

 

3) listener檔案中加入靜態監聽

$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

加入如下內容到

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl_DGB)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = orcl)
    )
  )


說明:
# GLOBAL_DBNAME具有固定的格式:<db_unique_name>_DGMGRL.<db_domain>。
# 修改完成之後,必須重啟監聽程式。

重啟監聽
$ lsnrctl reload

檢視監聽狀態
$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 17-8月 -2013 19:56:44

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.233.200)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for Linux: Version 11.2.0.3.0 - Production
啟動日期                  17-8月 -2013 19:05:06
正常執行時間              0 天 0 小時 51 分 38 秒
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程式引數檔案          /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
監聽程式日誌檔案          /u01/app/oracle/diag/tnslsnr/master/listener/alert/log.xml
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.233.200)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
服務摘要..
服務 "orcl" 包含 2 個例項。
  例項 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
  例項 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orclXDB" 包含 1 個例項。
  例項 "orcl", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "orcl_DGB" 包含 1 個例項。
  例項 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "orcl_DGMGRL" 包含 1 個例項。
  例項 "orcl", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功


2. 備庫Broker配置

1) 查詢switchover狀態

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED


2) 查詢dg_broker_start引數

SQL> show parameter dg_broker_start;
SQL> alter system set dg_broker_start = true;


3) listener檔案中加入靜態監聽

$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora  

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = slave)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = slave)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = slave_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = slave)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle


說明:
# GLOBAL_DBNAME具有固定的格式:<db_unique_name>_DGMGRL.<db_domain>。
# 修改完成之後,必須重啟監聽程式。

重啟監聽

$ lsnrctl reload

檢視監聽狀態

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 17-8月 -2013 19:55:04

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

正在連線到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.233.150)(PORT=1521)))
LISTENER 的 STATUS
------------------------
別名                      LISTENER
版本                      TNSLSNR for Linux: Version 11.2.0.3.0 - Production
啟動日期                  17-8月 -2013 19:02:47
正常執行時間              0 天 0 小時 52 分 17 秒
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程式引數檔案          /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
監聽程式日誌檔案          /u01/app/oracle/diag/tnslsnr/slave/listener/alert/log.xml
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.233.150)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
服務摘要..
服務 "slave" 包含 2 個例項。
  例項 "slave", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
  例項 "slave", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "slave_DGMGRL" 包含 1 個例項。
  例項 "slave", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功


3. broker主備切換配置配置(在主庫上操作)

說明:dgmgrl可以安裝到非主備庫伺服器上,因為但心主備庫當掉,dgmgrl也當掉,無法對主備進行監控。
可以在第三方主機上安裝oracle客戶端,配置連線主備庫的tnsname.ora伺服器,即可遠端啟動dgmgrl程式。


1) 配置broker


$ dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.

歡迎使用 DGMGRL, 要獲取有關資訊請鍵入 "help"。
已連線。
DGMGRL> 
DGMGRL> create configuration DGORCLDB as primary database is orcl connect identifier is orcl;
已建立配置 "dgorcldb", 其中主資料庫為 "orcl"

DGMGRL> add database slave as connect identifier is slave maintained as physical;
已新增資料庫 "slave"

DGMGRL> enable configuration;
已啟用。


2) 檢視配置資訊

DGMGRL> show configuration;

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS


3) 檢視主資料庫資訊

DGMGRL> show database orcl

資料庫 - orcl

  角色:            PRIMARY
  預期狀態:        TRANSPORT-ON
  例項:
    orcl

資料庫狀態:
SUCCESS


4) 檢視備庫資訊

DGMGRL> show database slave

資料庫 - slave

  角色:            PHYSICAL STANDBY
  預期狀態:        APPLY-ON
  傳輸滯後:        0 秒
  應用滯後:        0 秒
  實時查詢:        OFF
  例項:
    slave

資料庫狀態:
SUCCESS

Oracle 11g Dataguard Snapshot Standby資料庫功能,可將備庫置於開啟讀寫狀態,進行模擬生產環境主庫中測試。當備庫Snapshot standby任務完成後,可以切換回物理備庫角色。在Snapshot Standby資料庫狀態下,備庫是可以接受主庫傳過來的日誌,但是不能夠將變化應用在備庫中。

本文采用Oracle 11g Dataguard broker snapshot standby配置


1. 採用dg broker配置snapshot standby配置

1) 檢視配置資訊

$ dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.

歡迎使用 DGMGRL, 要獲取有關資訊請鍵入 "help"。
已連線。

DGMGRL> show configuration;

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS


2. 轉換備庫為映象庫(snapshot standby)

DGMGRL> convert database slave to snapshot standby;

正在將資料庫 "slave" 轉換為快照備用資料庫, 請稍候...
資料庫 "slave" 已成功轉換

DGMGRL> 
DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl   - 主資料庫
    slave  - 快照備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS

DGMGRL> 


3. 測試映象庫

1) 備庫上操作

[oracle@slave ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.3.0 Production on 星期六 8月 17 21:35:29 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> conn / as sysdba;
已連線。
SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           SNAPSHOT STANDBY slave


#此次映象庫已經是開啟狀態,資料庫角色也是SNAPSHOT STANDBY 。


SQL> conn abc/abc
已連線。
SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa
         1 bbb

SQL> insert into abc values ( 11 , 'fffff' );

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from abc;

        ID NAME
---------- ----------
        11 fffff
         0 aaa
         1 bbb

SQL> 


2) 主庫上檢視

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           PRIMARY          orcl


在主庫上插入記錄,並切換日誌。

SQL> conn abc/abc

SQL> select * from abc;

        ID NAME
---------- ----------
         0 aaa
         1 bbb


SQL> insert into abc values ( 2 , 'ccc' );

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from abc;

        ID NAME
---------- ----------
         2 ccc
         0 aaa
         1 bbb

SQL> 
SQL> conn / as sysdba;
SQL> alter system switch logfile;
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔                  啟用
存檔終點                  /u01/archivelog/
最早的聯機日誌序列        16
下一個存檔日誌序列        18
當前日誌序列              18

主庫上新增一條記錄並切換日誌,說明17號日誌是剛才規檔的日誌。

檢視主庫規檔日誌:

[root@master archivelog]# ll
-rw-r----- 1 oracle oinstall 22374912 08-16 22:51 arch_823637109_1_10.arc
-rw-r----- 1 oracle oinstall     2048 08-16 22:51 arch_823637109_1_11.arc
-rw-r----- 1 oracle oinstall  3137536 08-17 19:05 arch_823637109_1_12.arc
-rw-r----- 1 oracle oinstall     1536 08-17 19:05 arch_823637109_1_13.arc
-rw-r----- 1 oracle oinstall 23025664 08-17 20:03 arch_823637109_1_14.arc
-rw-r----- 1 oracle oinstall   686080 08-17 20:05 arch_823637109_1_15.arc
-rw-r----- 1 oracle oinstall 36077568 08-17 21:30 arch_823637109_1_16.arc
-rw-r----- 1 oracle oinstall   941056 08-17 21:49 arch_823637109_1_17.arc
-rw-r----- 1 oracle oinstall 23513088 08-16 21:06 arch_823637109_1_5.arc
-rw-r----- 1 oracle oinstall    52736 08-16 21:06 arch_823637109_1_6.arc
-rw-r----- 1 oracle oinstall  5014528 08-16 21:36 arch_823637109_1_7.arc
-rw-r----- 1 oracle oinstall   247808 08-16 21:40 arch_823637109_1_8.arc
-rw-r----- 1 oracle oinstall    48640 08-16 21:41 arch_823637109_1_9.arc

檢視備庫規檔日誌:
[root@slave archivelog]# ll
-rw-r----- 1 oracle oinstall 22374912 08-16 22:51 arch_823637109_1_10.arc
-rw-r----- 1 oracle oinstall     2048 08-16 22:51 arch_823637109_1_11.arc
-rw-r----- 1 oracle oinstall  3137536 08-17 19:05 arch_823637109_1_12.arc
-rw-r----- 1 oracle oinstall     1536 08-17 19:05 arch_823637109_1_13.arc
-rw-r----- 1 oracle oinstall 23025664 08-17 20:03 arch_823637109_1_14.arc
-rw-r----- 1 oracle oinstall   686080 08-17 20:06 arch_823637109_1_15.arc
-rw-r----- 1 oracle oinstall 36077568 08-17 21:31 arch_823637109_1_16.arc
-rw-r----- 1 oracle oinstall   941056 08-17 21:49 arch_823637109_1_17.arc
-rw-r----- 1 oracle oinstall  5014528 08-16 21:40 arch_823637109_1_7.arc
-rw-r----- 1 oracle oinstall   247808 08-16 21:40 arch_823637109_1_8.arc
-rw-r----- 1 oracle oinstall    48640 08-16 21:41 arch_823637109_1_9.arc
-rw-r----- 1 oracle oinstall     2048 08-17 21:30 arch_823728603_1_1.arc

發現17號日誌經傳到備庫上,只是沒有應用。

檢視備庫日誌應用情況,16,17號日誌都沒有應用。
SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TIME     NEXT_TIME      APPLIED
---------- -------------- -------------- ---------
         1 17-8月 -13     17-8月 -13     NO
         7 16-8月 -13     16-8月 -13     YES
         8 16-8月 -13     16-8月 -13     YES
         9 16-8月 -13     16-8月 -13     YES
        10 16-8月 -13     16-8月 -13     YES
        11 16-8月 -13     16-8月 -13     YES
        12 16-8月 -13     17-8月 -13     YES
        13 17-8月 -13     17-8月 -13     YES
        14 17-8月 -13     17-8月 -13     YES
        15 17-8月 -13     17-8月 -13     YES
        16 17-8月 -13     17-8月 -13     NO
        17 17-8月 -13     17-8月 -13     NO

已選擇12行。


4. 映象庫(snapshot standby)轉換備庫

snaphost standyb是透過閃回功能實現,但是Oracle 11g dataguard snapshot standby配置與主備庫是否啟用閃回沒有任何關係。
映象庫切換回備庫的過程是透過閃回到原還點,並應用主庫生成日誌,實現主備一致。

1)切換回物理備庫

DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl   - 主資料庫
    slave  - 快照備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS

DGMGRL> 
DGMGRL> convert database slave to physical standby;

正在將資料庫 "slave" 轉換為物理備用資料庫, 請稍候...
操作要求關閉例項 "slave" (在資料庫 "slave" 上)
正在關閉例項 "slave"...
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
操作要求啟動例項 "slave" (在資料庫 "slave" 上)
正在啟動例項 "slave"...
ORACLE 例程已經啟動。
資料庫裝載完畢。
正在繼續轉換資料庫 "slave" ...
操作要求關閉例項 "slave" (在資料庫 "slave" 上)
正在關閉例項 "slave"...
ORA-01109: 資料庫未開啟

已經解除安裝資料庫。
ORACLE 例程已經關閉。
操作要求啟動例項 "slave" (在資料庫 "slave" 上)
正在啟動例項 "slave"...
ORACLE 例程已經啟動。
資料庫裝載完畢。
資料庫 "slave" 已成功轉換
DGMGRL> 


2) 轉換成功,檢視結果,切換成功

DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS

DGMGRL> 


3)檢視備庫角色與記錄

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY slave


#開啟Active dataguard特性檢視驗證,日誌記錄應用。

SQL> alter database open;  

資料庫已更改。

SQL> conn abc/abc
已連線。
SQL> select * from abc;

        ID NAME
---------- ----------
         2 ccc
         0 aaa
         1 bbb
SQL> 

已經還原到與主庫記錄一致狀態。

本文采用Oracle 11g Dataguard broker switchover測試


1. 採用dataguard broker 測試switchover

1) 主庫情況

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           PRIMARY          orcl

SQL> 

SQL> conn abc/abc
已連線。

SQL> select * from abc;

        ID NAME
---------- ----------
         3 ddd
         4 eee
         2 ccc
         0 aaa
         1 bbb
SQL> 


2)備庫情況

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY slave

SQL> 


2. 主備庫切換測試

$ dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.

歡迎使用 DGMGRL, 要獲取有關資訊請鍵入 "help"。
已連線。

DGMGRL> show configuration;

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS


# 主備庫切

DGMGRL> switchover to slave;

立即執行切換, 請稍候...
新的主資料庫 "slave" 正在開啟...
操作要求關閉例項 "MASTER" (在資料庫 "master" 上)
正在關閉例項 "MASTER"...
ORACLE 例程已經關閉。
操作要求啟動例項 "MASTER" (在資料庫 "master" 上)
正在啟動例項 "MASTER"...
ORACLE 例程已經啟動。
資料庫裝載完畢。
切換成功, 新的主資料庫為 "slave"


DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    slave - 主資料庫
    orcl  - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS

DGMGRL> 


3. 主備測試

# 主庫上,主備已經切換了備庫上了。

SQL> conn / as sysdba;
已連線。
SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY orcl

SQL> 


備庫上,備庫上已經切換成了主庫了。

SQL> conn / as sysdba;
已連線。

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           PRIMARY          slave

SQL> 
SQL> conn abc/abc
已連線。

SQL> select * from abc;

        ID NAME
---------- ----------
         3 ddd
         4 eee
         2 ccc
         0 aaa
         1 bbb


# 要切換後的主庫上新插入一條記錄。
SQL> insert into abc values ( 5 , 'new' );

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from abc;

        ID NAME
---------- ----------
         3 ddd
         4 eee
         5 new
         2 ccc
         0 aaa
         1 bbb

已選擇6行。

SQL> 


4. 備庫再切到主庫(切回)


# 備庫再切到主庫

DGMGRL> switchover to orcl;

立即執行切換, 請稍候...
新的主資料庫 "master" 正在開啟...
操作要求關閉例項 "SLAVE" (在資料庫 "slave" 上)
正在關閉例項 "SLAVE"...
ORACLE 例程已經關閉。
操作要求啟動例項 "SLAVE" (在資料庫 "slave" 上)
正在啟動例項 "SLAVE"...
ORACLE 例程已經啟動。
資料庫裝載完畢。
切換成功, 新的主資料庫為 "master"


DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS


# 主庫上SQL檢視,主備已經切換了

SQL> conn / as sysdba;
已連線。

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           PRIMARY          orcl

SQL> 

SQL> conn abc/abc
已連線。
SQL> select * from abc;

        ID NAME
---------- ----------
         3 ddd
         4 eee
         5 new
         2 ccc
         0 aaa
         1 bbb

已選擇6行。

SQL> 
在主庫上插入的記錄也有了,實現了資料無損切換。


備庫上SQL檢視,備庫上已經切回來了。

SQL> conn / as sysdba;
已連線。

SQL> conn / as sysdba;
已連線。
SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
MOUNTED              PHYSICAL STANDBY slave

SQL> 

本文采用Oracle 11g Dataguard broker fastfailover測試

Oracle 11g Dataguard fast failover配置,需要主備資料庫開啟閃回功能,閃回功能開啟本文略過。
閃回開啟需要啟動到mount狀態時,主備庫的監聽不要隨意關閉。


1. dgmgrl檢視主備庫狀態

$ dgmgrl sys/oracle

DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.

歡迎使用 DGMGRL, 要獲取有關資訊請鍵入 "help"。
已連線。

DGMGRL> show configuration;

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    orcl  - 主資料庫
    slave - 物理備用資料庫

快速啟動故障轉移: DISABLED

配置狀態:
SUCCESS

#快速啟動故障轉移是不可用狀態。

#檢視故障轉移情況, DISABLED沒有啟用。

DGMGRL> show fast_start failover

快速啟動故障轉移: DISABLED

  閾值:             30 秒
  目標:             (無)
  觀察程式:         (無)
  滯後限制:         30 秒
  關閉主資料庫:     TRUE
  自動恢復:         TRUE

可配置的故障轉移條件
  健康狀況:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Offline               YES

  Oracle 錯誤條件:
    (無)


2. 啟動快速啟動故障轉移

DGMGRL> enable fast_start failover; 


3. 啟動快速啟動故障轉移observer觀察程式

DGMGRL> start observer;

說明:start observer後,觀察程式不會在後臺執行,就在前臺顯示。
在實際使用過程中,需要單獨在伺服器上啟動,在後臺自動執行,不能關閉,否則主備庫就無法自動監控執行狀態。
就無法使用快速啟動故障轉移功能。


4. 在另一個視窗執行檢視

$ dgmgrl sys/oracle

DGMGRL> show fast_start failover;

快速啟動故障轉移: ENABLED

  閾值:             30 秒
  目標:             slave
  觀察程式:         master
  滯後限制:         45 秒
  關閉主資料庫:     TRUE
  自動恢復:         TRUE

可配置的故障轉移條件
  健康狀況:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Offline               YES

  Oracle 錯誤條件:
    (無)


DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    slave - 主資料庫
    orcl  - (*) 物理備用資料庫

快速啟動故障轉移: ENABLED

配置狀態:
SUCCESS


至此dgmgrl 配置的fast_start failover已經配置好,下面模擬故障切換過程。

可以透過shutdown abort模擬資料庫意外垮掉的情況,

注1:主庫shutdown immediate是不會啟動fast start failover功能的。

注2:oracle 11g dataguard fast start failover切換不需要主備庫執行在最大可用模式。

 

5. 模擬測試主庫意外垮掉

1)主庫上:

$ sqlplus / as sysdba;
SQL> shutdown abort;

觀察器顯示日誌:顯示執行主備切換過程

00:18:57.09  2013年8月18日 星期日
正在為資料庫 "slave" 啟動快速啟動故障轉移...
立即執行故障轉移, 請稍候...
故障轉移成功, 新的主資料庫為 "slave"
00:19:02.01  2013年8月18日 星期日


主庫alter日誌:

FSFP started with pid=34, OS id=8169 
Sun Aug 18 00:18:24 2013
Shutting down instance (abort)
License high water mark = 16
USER (ospid: 8657): terminating the instance
Instance terminated by USER, pid = 8657
Sun Aug 18 00:18:29 2013
Instance shutdown complete


2) 備庫上

登入備庫,檢視資料庫狀態已經切換回主庫角色

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE            DATABASE_ROLE    DB_UNIQUE_NAME
-------------------- ---------------- ------------------------------
READ WRITE           PRIMARY          slave

SQL> 

 


切換時備庫alter日誌,透過日誌可以看到整個的切換過程。

[oracle@slave trace]$ tail -f alert_slave.log   
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE  THROUGH ALL SWITCHOVER DISCONNECT  USING CURRENT LOGFILE
Sat Aug 17 23:58:57 2013
RFS[2]: Assigned to RFS process 29401
RFS[2]: Selected log 5 for thread 1 sequence 22 dbid 1351417842 branch 823637109
Sat Aug 17 23:59:00 2013
Media Recovery Waiting for thread 1 sequence 23 (in transit)
Recovery of Online Redo Log: Thread 1 Group 4 Seq 23 Reading mem 0
  Mem# 0: /u01/app/oracle/oradata/slave/standby_redo04.log
Sat Aug 17 23:59:11 2013
Archived Log entry 17 added for thread 1 sequence 22 ID 0x508c9ff2 dest 1:
Sun Aug 18 00:13:22 2013
db_recovery_file_dest_size of 4122 MB is 1.21% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Sun Aug 18 00:18:28 2013
RFS[1]: Possible network disconnect with primary database
Sun Aug 18 00:18:28 2013
RFS[3]: Assigned to RFS process 29397
RFS[3]: Possible network disconnect with primary database
Sun Aug 18 00:18:29 2013
RFS[2]: Possible network disconnect with primary database
Sun Aug 18 00:19:00 2013
Attempting Fast-Start Failover because the threshold of 30 seconds has elapsed.
Sun Aug 18 00:19:00 2013
Data Guard Broker: Beginning failover
Sun Aug 18 00:19:00 2013
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
Sun Aug 18 00:19:00 2013
MRP0: Background Media Recovery cancelled with status 16037
Errors in file /u01/app/oracle/diag/rdbms/slave/slave/trace/slave_mrp0_29392.trc:
ORA-16037: user requested cancel of managed recovery operation
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 1136886
MRP0: Background Media Recovery process shutdown (slave)
Managed Standby Recovery Canceled (slave)
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE
Attempt to do a Terminal Recovery (slave)
Media Recovery Start: Managed Standby Recovery (slave)
Serial Media Recovery started
Managed Standby Recovery not using Real Time Apply
Begin: Standby Redo Logfile archival
End: Standby Redo Logfile archival
Terminal Recovery timestamp is '08/18/2013 00:19:01'
Terminal Recovery: applying standby redo logs.
Terminal Recovery: thread 1 seq# 23 redo required
Terminal Recovery: 
Recovery of Online Redo Log: Thread 1 Group 4 Seq 23 Reading mem 0
  Mem# 0: /u01/app/oracle/oradata/slave/standby_redo04.log
Identified End-Of-Redo (failover) for thread 1 sequence 23 at SCN 0xffff.ffffffff
Incomplete Recovery applied until change 1136887 time 08/18/2013 00:18:23
Media Recovery Complete (slave)
Terminal Recovery: successful completion
Forcing ARSCN to IRSCN for TR 0:1136887
Attempt to set limbo arscn 0:1136887 irscn 0:1136887 
Resetting standby activation ID 1351393266 (0x508c9ff2)
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WAIT WITH SESSION SHUTDOWN
ALTER DATABASE SWITCHOVER TO PRIMARY (slave)
Maximum wait for role transition is 15 minutes.
Sun Aug 18 00:19:02 2013
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance slave - Archival Error
ORA-16014: log 4 sequence# 23 not archived, no available destinations
ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/slave/standby_redo04.log'
Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/slave/slave/trace/slave_rsm0_29388.trc
Standby terminal recovery start SCN: 1136886
RESETLOGS after complete recovery through change 1136887
Online log /u01/app/oracle/oradata/slave/redo01.log: Thread 1 Group 1 was previously cleared
Online log /u01/app/oracle/oradata/slave/redo02.log: Thread 1 Group 2 was previously cleared
Online log /u01/app/oracle/oradata/slave/redo03.log: Thread 1 Group 3 was previously cleared
Standby became primary SCN: 1136885
Sun Aug 18 00:19:02 2013
Setting recovery target incarnation to 4
Switchover: Complete - Database mounted as primary
Completed: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WAIT WITH SESSION SHUTDOWN
ALTER DATABASE OPEN
Data Guard Broker initializing...
Sun Aug 18 00:19:02 2013
Assigning activation ID 1351535899 (0x508ecd1b)
Sun Aug 18 00:19:02 2013
ARC1: Becoming the 'no SRL' ARCH
Thread 1 advanced to log sequence 2 (thread open)
Thread 1 opened at log sequence 2
  Current log# 2 seq# 2 mem# 0: /u01/app/oracle/oradata/slave/redo02.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Sun Aug 18 00:19:02 2013
SMON: enabling cache recovery
Archiver process freed from errors. No longer stopped
ARC4: LGWR is scheduled to archive destination LOG_ARCHIVE_DEST_2 after log switch
Sun Aug 18 00:19:02 2013
NSA2 started with pid=29, OS id=29504 
[29388] Successfully onlined Undo Tablespace 2.
Undo initialization finished serial:0 start:18267234 end:18267424 diff:190 (1 seconds)
Dictionary check beginning
Sun Aug 18 00:19:03 2013
Error 1034 received logging on to the standby
Error 1034 received logging on to the standby
ARC4: Error 1034 Creating archive log file to 'orcl'
PING[ARC2]: Heartbeat failed to connect to standby 'orcl'. Error is 1034.
Dictionary check complete
Archived Log entry 18 added for thread 1 sequence 1 ID 0x508ecd1b dest 1:
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
Sun Aug 18 00:19:04 2013
QMNC started with pid=30, OS id=29508 
LOGSTDBY: Validating controlfile with logical metadata
Thread 1 advanced to log sequence 3 (LGWR switch)
  Current log# 3 seq# 3 mem# 0: /u01/app/oracle/oradata/slave/redo03.log
LOGSTDBY: Validation complete
Archived Log entry 19 added for thread 1 sequence 2 ID 0x508ecd1b dest 1:
Completed: ALTER DATABASE OPEN
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='slave';
ALTER SYSTEM SET log_archive_format='arch_%r_%t_%s.arc' SCOPE=SPFILE SID='slave';
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_max_processes=5 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';
ALTER SYSTEM SET db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/slave/' SCOPE=SPFILE;
ALTER SYSTEM SET log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/slave/' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH;
Failover succeeded. Primary database is now slave.
Sun Aug 18 00:19:08 2013
Starting background process CJQ0
Sun Aug 18 00:19:08 2013
CJQ0 started with pid=35, OS id=29544 
Setting Resource Manager plan SCHEDULER[0x318E]:DEFAULT_MAINTENANCE_PLAN via scheduler window
Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
Sun Aug 18 00:19:11 2013
Starting background process VKRM
Sun Aug 18 00:19:11 2013
VKRM started with pid=33, OS id=29548 
Sun Aug 18 00:19:17 2013
FSFP started with pid=39, OS id=29568 
Sun Aug 18 00:19:25 2013
ARC2: STARTING ARCH PROCESSES
Sun Aug 18 00:19:25 2013
ARC5 started with pid=40, OS id=29572 
ARC5: Archival started
ARC2: STARTING ARCH PROCESSES COMPLETE
krsk_srl_archive_int: Enabling archival of deferred physical standby SRLs
Archived Log entry 20 added for thread 1 sequence 23 ID 0x508c9ff2 dest 1:
Sun Aug 18 00:19:43 2013
Shutting down archive processes
ARCH shutting down
ARC5: Archival stopped


6. 原主庫再次啟動

說明:原主庫再次啟動時,角色不會自動切換回,除非手動切換一次switchover到orcl。

DGMGRL> show configuration

配置 - dgorcldb

  保護模式:        MaxPerformance
  資料庫:
    slave - 主資料庫
    orcl  - (*) 物理備用資料庫

快速啟動故障轉移: ENABLED

配置狀態:
SUCCESS

DGMGRL> 


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

相關文章