Oracle 11g Active Dataguard Switchover實驗

來源:互聯網
上載者:User

Oracle Data Guard是Oracle HA架構體系的重要組成部分,也是Oracle MAA(Maximum Availability Architecture)的關鍵技術方案。藉助Data Guard的Switchover和Failover特性,我們可以實現營運系統高可用性需求,最大限度的降低計劃內和非計劃內宕機時間。
 
Data Guard建立在資料庫軟硬體、資料冗餘策略,通過搭建和主庫Primary Database資料相同、軟硬體獨立的物理(Physical)和邏輯(Logical)備庫Standby,並且藉助Redo Log傳遞應用確保資料同步。當單獨資料庫(通常為Primary)發生故障,不能繼續提供服務時,額外的Standby可以作為備用資料庫來支援應用,減少系統整體資料丟失和停機影響。
 
Switchover和Failover是Dataguard裡面一組有區別又有聯絡的概念,其本質都是Primary停止對外服務,由Standby支援對外資料服務,變為新的Primary。但是兩者從概念到操作上都有很大差異。
 
Switchover的核心是“Planned”,也就是計劃內的停機切換動作。我們的營運系統在運行過程中,經常有如裝置檢修、軟體升級補丁等維護操作。這個時候,如果是一些SLA要求很高的系統,停機時間視窗就是一個問題。特別是一些7*24的系統,業務部門是不會允許過長的停機時間。Switchover就是對Dataguard或者RAC環境下,臨時性的Primary點停機進行升級工作,由Standby變為Primary支援服務,最後再切換回來的過程。這個過程在Oracle中成為角色轉換role transition。由於是有準備、有計劃的操作,Switchover是平順的,不會引起資料的丟失。
 
Failover的核心則是“unplanned”,是和Switchover相對應,更貼近Data Guard的原始設計初衷。如果Primary出現故障,不能支援服務的時候。Standby可以在很短的時間內,自動或者手動的切換到Primary角色。之後由這個新的Primary支援服務。如果Primary可以修複好,則可能需要重新搭建DG或者Apply為新的Standby,之後切換回Primary角色。Failover由於涉及到Primary網站的故障類型程度,所以是可能出現資料丟失的。
 
進行Switchover和Failover的工具方法很多,最常用的有三個:SQL Command、Data Guard Broker和DB Grid Control。本文介紹如何使用SQL Command進行Switchover操作。
 
 

相關參考:

Oracle Data Guard 重要配置參數

基於同一主機配置 Oracle 11g Data Guard

探索Oracle之11g DataGuard

Oracle Data Guard (RAC+DG) 歸檔刪除策略及指令碼

Oracle Data Guard 的角色轉換

Oracle Data Guard的日誌FAL gap問題

Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 處理方法

1、環境介紹

 

我們選擇環境已經搭建好Dataguard,版本為11.2.0.4(Primary和Standby相同)。作業系統版本為Red Hat Linux 6.5。

 

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 11.2.0.4.0 Production

 

Primary資料庫unique名稱為ora11g。

 

SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
 
 

NAME      LOG_MODE    OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
 
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
 
ORA11G    ARCHIVELOG  READ WRITE          PRIMARY          SESSIONS ACTIVE      ora11g
 
 

Standby資料庫名稱為ora11gsy,此時開啟即時資料同步應用。

 

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

Database altered

 

SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
 
 

NAME      LOG_MODE    OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
 
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
 
ORA11G    ARCHIVELOG  READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED          ora11gsy
 
 

注意:此時standby的open mode為Read only with apply,這個是11g Active Data Guard的特性。傳統DG在進行Apply的過程中,是處在mount狀態的,不支援即時資料唯讀操作。11g支援在apply中開啟資料庫到唯讀狀態。
 
 

2、Switchover過程中Primary主庫操作

 

進行Switchover的過程分為三個步驟,一個是在Primary上停止工作,切換到Standby狀態,第二個是在選擇一個Standby執行個體,切換角色到Primary狀態,最後是將其他Standby的Apply過程啟動。
 
注意在上面我們查看Primary資料庫ora11g的v$database視圖,其中switchover_status取值是我們需要關注的,如果取值為session active或者to standby,我們是可以進行切換的。如果其他值,說明配置的log傳輸機制存在問題,需要解決調整。
 
 

--在ora11g上

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

 

注意:如果swtichover_status狀態為session active,就需要在命令中加入with session shutdown子句。執行後,我們發現Primary ora11g已經關閉。
 
 

 

SQL> select status from v$instance;

select status from v$instance

*

ERROR at line 1:

ORA-03135: connection lost contact

Process ID: 2357

Session ID: 1 Serial number: 5

 

 

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
 
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

--執行個體進程消失

[oracle@SimpleLinux trace]$ ps -ef | grep pmon

oracle    2107    1  0 15:35 ?        00:00:01 ora_pmon_ora11gsy

oracle    2473  1848  1 16:03 pts/1    00:00:00 grep pmon

 

此時,alert log中也記錄了執行個體停止的情況。

 

ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 52428800;

ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 52428800;

ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 52428800;

ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 52428800;

Archivelog for thread 1 sequence 19 required for standby recovery

Switchover: Primary controlfile converted to standby controlfile succesfully.

Switchover: Complete - Database shutdown required

USER (ospid: 2365): terminating the instance

Instance terminated by USER, pid = 2365

Completed: alter database commit to switchover to physical standby with session shutdown
 
 

Shutting down instance (abort)

License high water mark = 6

Sun Apr 20 16:02:11 2014

Instance shutdown complete

 

在這個過程中,為了確保資料無損失,Primary一定將所有的日誌資訊傳遞到Standby上。此時,可以啟動Primary,到mount standby狀態。

 

[oracle@SimpleLinux trace]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Sun Apr 20 16:06:47 2014

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area  372449280 bytes

Fixed Size                  1364732 bytes

Variable Size            331353348 bytes

Database Buffers          33554432 bytes

Redo Buffers                6176768 bytes

 

SQL> alter database mount standby database;

Database altered.

注意:如果需要進行裝置維修或者停機操作,是可以不啟動Primary的。

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.