data guard物理備份方式中的switchover轉換

eric0435發表於2012-12-04
切換分為switchover和failover,前者是無損切換,不會丟失資料,而後者則有可能會丟失資料,並且切換後原primary 資料庫也不再是該data guard 配置的一部分了.針對不同standby(邏輯或物理)的處理方式也不盡相同

角色轉換前的準備工作
檢查各資料庫的初始化引數,主要確認對不同角色相關的初始化引數都進行了正確的配置。
確保可能成為primary 資料庫的standby 伺服器已經處於archivelog 模式。
確保standby 資料庫的臨時檔案存在並匹配primary 資料庫的臨時檔案
確保standby 資料庫的RAC 例項只有一個處於open 狀態。(對於rac 結構的standby 資料庫,在角
色轉換時只能有一個例項startup。其它rac 例項必須統統shutdown,待角色轉換結束後再startup)

Switchover:
無損轉換,通常是使用者手動觸發或者有計劃的讓其自動觸發,比如硬體升級啦,軟體升級啦之類的。
通常它給你帶來的工作量非常小並且都是可預計的。其執行分兩個階段,第一步, primary 資料庫轉換為
standby 角色,第二步,standby 資料庫(之一)轉換為primary 角色,primary 和standby 只是簡單的角色互換.
Failover:
不可預知原因導致primary 資料庫故障並且短期內不能恢復就需要failover。
在執行failover 之前,儘可能將原primary 資料庫的可用redo 都複製到standby 資料庫。
注意,如果要轉換角色的standby 處於maximum protection 模式,需要你首先將其切換為maximum
performance模式.轉換standby 資料庫到MAXIMIZE PERFORMANCE 執行下列SQL 即可:
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
等standby 切換為新的primary 之後,你可以再隨意更改資料庫的保護模式。
maximum protection 模式需要確保絕無資料丟失,因此其對於提交事務對應的redo 資料一致性要求非常高,
另外,如果處於maximum protection 模式下primary 資料庫仍然與standby 資料庫有資料傳輸,此時alter
database 語句更改standby 資料庫保護模式會失敗,這也是由maximum protection 模式特性決定的。

下面演示switchover的過程:
一、物理standby的Switchover
注意操作步驟的先後,很關鍵的喲。
1、檢查是否支援switchover 操作--primary 資料庫操作
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY

在第一次switch的時候看primary上的switchover_status欄位上的值是session active。standby上面的該欄位的值是not allowed,這個第一次沒關係:

 NOT ALLOWED - Either this is a standby database and the primary database has
not been switched first, or this is a primary database and there are no standby databases.

SESSIONS ACTIVE - Indicates that there are active SQL sessions attached to
the primary or standby database that need to be disconnected before the
switchover operation is permitted.

SWITCHOVER PENDING - This is a standby database and the primary database
switchover request has been received but not processed.

SWITCHOVER LATENT - The switchover was in pending mode, but did not complete
and went back to the primary database.

TO PRIMARY - This is a standby database, with no active sessions, that is
allowed to switch over to a primary database.

TO STANDBY - This is a primary database, with no active sessions, that is
allowed to switch over to a standby database.

RECOVERY NEEDED - This is a standby database that has not received the
switchover request.

During normal operations it is acceptable to see the following values for
SWITCHOVER_STATUS on the primary to be SESSIONS ACTIVE or TO STANDBY.
During normal operations on the standby it is acceptable to see the values
of NOT ALLOWED or SESSIONS ACTIVE.

2、啟動switchover --primary 資料庫操作
說明:
主庫需要注意事項
A 如果switchover_status為TO_STANDBY說明可以轉換
直接轉換
alter database commit to switchover to physical standby;
B 如果switchover_status為SESSIONS ACTIVE 則關閉會話
SQL>alter database commit to switchover to physical standby with session shutdown;
在備庫中操作,檢視備庫
SQL> select switchover_status from v$database;
A 如果switchover_status為TO_PRIMARY 說明標記恢復可以直接轉換為primary庫
SQL>alter database commit to switchover to primary
B 如果switchover_status為SESSION ACTIVE 就應該斷開活動會話
SQL>alter database commit to switchover to primary with session shutdown;
C 如果switchover_status為NOT ALLOWED 說明切換標記還沒收到,此時不能
執行轉換。

首先將primary 轉換為standby 的角色,透過下列語句:
[oracle@weblogic28 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 3 10:09:33 2012

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

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

Database altered.

語句執行完畢後,primary 資料庫將會轉換為standby 資料庫,並自動備份控制檔案到trace。

3、重啟動到mount --原primary 資料庫操作
SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 6442450944 bytes
Fixed Size                  2030368 bytes
Variable Size            1090520288 bytes
Database Buffers         5335154688 bytes
Redo Buffers               14745600 bytes
Database mounted.

4、檢查是否支援switchover 操作--待轉換standby 資料庫操作
待原primary 切換為standby 角色之後,檢查待轉換的standby 資料庫switchover_status 列,看看是否支援角色轉換。

[oracle@weblogic29 ~]$ sqlplsu /as sysdba
-bash: sqlplsu: command not found
[oracle@weblogic29 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 3 10:09:24 2012

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL>

此時待轉換standby 資料庫switchover_status 列值應該是"TO_PRIMARY",如否則檢查其初始化引數檔案中的設定,提示一下,比著原primary 資料庫的初始化引數改改。

5、轉換角色到primary --待轉換standby 資料庫操作
透過下列語句轉換standby 到primary 角色:
SQL> alter database commit to switchover to primary;

Database altered.

SQL>
注意:待轉換的物理standby 可以處於mount 模式或open read only 模式,但不能處於open read write模式。

6、完成轉換,開啟新的primary 資料庫
SQL> alter database open;

Database altered.

SQL>
注:如果資料庫處於open read-only 模式的話,需要先shutdown 然後直接startup 即可。

7、驗證一下
新的primary 資料庫
SQL> show parameter db_unique

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      jyrac1

SQL> alter  system  switch  logfile;

System altered

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

MAX(SEQUENCE#)
--------------
           140

新的standby 資料庫
SQL> show parameter db_unique

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      jytest
SQL>

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

MAX(SEQUENCE#)
--------------
           140

SQL>

轉換成功。
SQL> alter database recover managed standby database disconnect from session;

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

相關文章