溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Dataguard日常管理

發(fā)布時(shí)間:2021-11-30 10:28:28 來源:億速云 閱讀:162 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何進(jìn)行Dataguard日常管理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

dataguard日常管理

1.fail over

2.switchover

3.更改保護(hù)模式

4.常用命令和視圖

fail over:

1.如果在dataguard中做了fail over,那么原來的standby 要成為primary要執(zhí)行如下命令

A
首先查看v$archive_gap,然后手動(dòng)將卻是的archive_log拷貝過來,然后執(zhí)行如下命令:

sql> alter database register physical standby 'logfile_patch'

B

sql> alter database recover managed standby database cancel;

C

sql> alter database recover managed standby database finish ;

sql> alter database recover managed standby database finish force;

D

sql> alter dattabase commit to switchover to primary;

對(duì)于老的primary 數(shù)據(jù)庫需要轉(zhuǎn)化為standby 有兩種情況:

A.對(duì)于打開flashback 功能的數(shù)據(jù)庫比較簡(jiǎn)單,現(xiàn)在新的primary數(shù)據(jù)庫上執(zhí)行這個(gè)命令

select standby_became_primary_scn from v$database;


接著在新的standby的數(shù)據(jù)庫上執(zhí)行

flashback database to scn nnnnnn
alter database convert to physical standby;

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


在primary數(shù)據(jù)庫上做日志切換,查看新的standby數(shù)據(jù)庫日志是否正常。

select applied from v$archived_log;


B.如果沒有開啟flashback功能的話,重新創(chuàng)建dataguard


switchover:

在switchover的時(shí)候,最好讓兩個(gè)庫不要再有新的session進(jìn)來,這樣可以快速switchover,避免發(fā)生異常

在switchover應(yīng)注意的幾點(diǎn):


1.在primary庫要有standby logfile。
2.檢查v$archive_gap,核查是否日志都已經(jīng)歸檔到standby庫

實(shí)際操作:


1.在primary上查看switchover_status


SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------

PRIMARY          TO STANDBY

SQL> select database_role,switchover_status from v$database;

DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          SESSIONS ACTIVE


狀態(tài)說明:

TO STANDBY : 沒有session連接,可以直接switchover
SESSIONS ACTIVE :還有session連接,不能直接switchiver

如果SWITCHOVER_STATUS為to standby則可直接進(jìn)行switchover,如果為session active則執(zhí)行以下步驟:

(1)檢查是否standby沒接收到最新的日志,如果沒有則在primary手動(dòng)切換
  SQL> alter system switch logfile;
  系統(tǒng)已更改。

  然后在standby恢復(fù)

  SQL> alter database recover managed standby database cancel;
  數(shù)據(jù)庫已更改。

(2)檢查是否有活動(dòng)的sql session
  SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION
  2 WHERE TYPE = 'USER'
  3 AND SID <>(SELECT DISTINCT SID FROM V$MYSTAT);
  未選定行


  如果有則將session kill

2。如果上述步驟都已執(zhí)行而primary的switchover_status還是為session active則在正常switchover語句后加上WITH SESSION SHUTDOWN;
  

(1)primary進(jìn)行switchover

SQL> alter database commit to switchover to physical standby WITH SESSION SHUTDOWN;   ---在沒有活動(dòng)的session下,不帶WITH SESSION SHUTDOWN 選項(xiàng),我也測(cè)試switchover成功

數(shù)據(jù)庫已更改。


(2)重啟原primary數(shù)據(jù)庫到mount

SQL> select open_mode from v$database;
select open_mode from v$database
                      *
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01507: 未裝載數(shù)據(jù)庫


SQL> shutdown immediate;
ORA-01507: 未裝載數(shù)據(jù)庫


ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount;
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             176163716 bytes
Database Buffers          427819008 bytes
Redo Buffers                7135232 bytes
數(shù)據(jù)庫裝載完畢。
SQL>


查看原primary的switchover的角色

SQL> select database_role,switchover_status from v$database;

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

SQL>

(3)檢查原standby的switchover_status


SQL> select database_role,switchover_status from v$database;

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


(4)置于恢復(fù)模式

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

數(shù)據(jù)庫已更改。

SQL>


3。切換原standby to primary
  
   如果上述standby的SWITCHOVER_STATUS為to primary則正常切換,否則檢查是否有活動(dòng)sql session,有則kill掉
  再次檢查SWITCHOVER_STATUS,如果仍然不為to primary則在切換語句后加with session shutdown.

  (1)切換standby to primary(standby需要置于接收日志的mount狀態(tài))


SQL> alter database commit to switchover to primary with session shutdown;

數(shù)據(jù)庫已更改。

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED

SQL> shutdown immediate;
ORA-01109: 數(shù)據(jù)庫未打開


已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             234883972 bytes
Database Buffers          369098752 bytes
Redo Buffers                7135232 bytes
數(shù)據(jù)庫裝載完畢。
數(shù)據(jù)庫已經(jīng)打開。
SQL>

查看原standby庫switchover后的角色

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

SQL>

最后還要查看兩個(gè)庫的alert.log內(nèi)容,看是否正常


dataguard保護(hù)模式:

在更改dataguard的保護(hù)模式,一定要在primary庫上執(zhí)行;在primary更改的保護(hù)模式都會(huì)應(yīng)用到standby庫
在更改保護(hù)模式時(shí), 還要注意修改 log_archive_dest_n

SQL> alter system set log_archive_dest_2='SERVICE=orcldg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';


實(shí)際操作: 

在primary庫上:

SQL> select open_mode,protection_mode,protection_level from v$database;

OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

SQL> alter database set standby database to maximize protection;
alter database set standby database to maximize protection
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01126: 數(shù)據(jù)庫必須已裝載到此實(shí)例并且不在任何實(shí)例中打開


SQL> shutdown immediate;
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             239078276 bytes
Database Buffers          364904448 bytes
Redo Buffers                7135232 bytes
數(shù)據(jù)庫裝載完畢。


SQL> alter database set standby database to maximize protection;

數(shù)據(jù)庫已更改。

SQL> alter database open;

數(shù)據(jù)庫已更改。

SQL>

在standby庫上:

正常來說,當(dāng)primary更改完保護(hù)模式后,在standby也會(huì)隨著更改


SQL> select open_mode ,protection_mode,protection_level from v$database;

OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL
---------- -------------------- --------------------
MOUNTED    MAXIMUM PROTECTION   MAXIMUM PROTECTION


注意
當(dāng)保護(hù)模式更改順序:

maximize protection --->  maximize availability ----> maximize performance

當(dāng)在把dataguard的保護(hù)級(jí)別按這上面的順序減低的時(shí)候, 不需要primary庫在mount狀態(tài),
primary在open狀態(tài)就可以直接執(zhí)行保護(hù)模式更改命令

primary的保護(hù)模式:

SQL> select open_mode ,protection_mode,protection_level from v$database;

OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL
---------- -------------------- --------------------
MOUNTED    MAXIMUM PROTECTION   MAXIMUM PROTECTION


執(zhí)行保護(hù)模式更改:

SQL> alter database set standby database to maximize protection;

數(shù)據(jù)庫已更改。

SQL> alter database set standby database to maximize availability;

數(shù)據(jù)庫已更改。

在查看primary的保護(hù)模式:

SQL> select open_mode,protection_mode,protection_level from v$database;

OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

SQL>


當(dāng)保護(hù)模式更改順序:

maximize protection <---  maximize availability <---- maximize performance

當(dāng)在把dataguard的保護(hù)級(jí)別按這上面的順序升高的時(shí)候, 需要primary庫在mount狀態(tài),如果在open更改會(huì)報(bào)如下錯(cuò)誤:

SQL> select open_mode,protection_mode,protection_level from v$database;

OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL
---------- -------------------- --------------------
READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

SQL> alter database set standby database to maximize protection;
alter database set standby database to maximize protection
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-01126: 數(shù)據(jù)庫必須已裝載到此實(shí)例并且不在任何實(shí)例中打開

步驟:
1. primary庫先 shutdown immediate
2. startup mount
3. alter database set standby database to maximize protection;
4. alter database open

dataguard常用命令和視圖

查看當(dāng)前保護(hù)模式
SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

查看日志傳送方式
SQL> select dest_name,archiver from v$archive_dest;

首先停止standby的自動(dòng)恢復(fù)狀態(tài)
SQL> alter database recover managed standby database finish;

添加standby logfile
SQL> alter database add standby logfile group 4 ('/oracle/product/10.2.0/db_1/oradata/sjh20g/redo04.log') size 50m;

更改保護(hù)模式
alter database set standby database to maximize protection;
alter database set standby database to maximize availability;
alter database set standby database to maximize performancen;

更改傳輸方式
SQL> alter system set log_archive_dest_2='SERVICE=orcldg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';


解決方法:將主備庫的flashback打開:
啟動(dòng)到mount
SQL> select FLASHBACK_ON from v$database;
SQL> alter database flashback on;


取消自動(dòng)恢復(fù)模式:
alter database recover managed standby database cancel;
alter database recover managed standby database finish;
alter database recover managed standby database finish force;

switchover 到 primary
alter dattabase commit to switchover to primary;
alter database commit to switchover to primary with session shutdown;

switchover 到 standby
alter database commit to switchover to physical standby WITH SESSION SHUTDOWN;


flashback database to scn nnnnnn
alter database convert to physical standby
alter datbase recover managed standby database using current logfile disconnect from session;
alter database register physical standby 'logfile_patch'

常用視圖:

v$managed_standby
v$archive_dest
v$archive_dest_status
v$archive_gap
v$archiveg_log
v$dataguard_status
v$database
v$log_history
v$log
v$logfile

注意事項(xiàng):


1、如果在主庫執(zhí)行 alter database clear unarchived logfile或alter database open resetlogs ,則dataguard要重建。

2、在連續(xù)恢復(fù)模式下工作之前,需要保證之前所有的歸檔日志己經(jīng)應(yīng)用到備用庫上。因?yàn)樵谶B續(xù)恢復(fù)模式的情況下,oracle不會(huì)應(yīng)用之前的

歸檔日志,而只會(huì)應(yīng)用后面陸續(xù)到來的歸檔日志。

3、出現(xiàn)歸檔日志gap時(shí),需要找出相應(yīng)的歸檔日志, 然后將這些歸檔日志copy到備用節(jié)點(diǎn)的standby_archive_dest和

log_archive_dest目錄下面。需要注意的是log_archive_dest目錄下也需要copy。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;

4、新建表、表空間、datafile都能通過日志應(yīng)用到備庫,但新建一個(gè)臨時(shí)表空間,rename datafile 均不能應(yīng)用到備庫上.

5、應(yīng)當(dāng)實(shí)時(shí)察看standby庫的alert文件,就能清晰明了地知道主備更新的情況。這也是排錯(cuò)的重要方法,切記!!

 failover和switchover

Failover : 將主數(shù)據(jù)庫offline,備用數(shù)據(jù)庫online,這種操作由系統(tǒng)和軟件失敗引起。 即使在備用數(shù)據(jù)庫上應(yīng)用重做日志,也可能出現(xiàn)數(shù)

據(jù)丟失的現(xiàn)象,除非備用數(shù)據(jù)庫運(yùn)行在 guaranteed protection 模式。 原主數(shù)據(jù)庫重新使用時(shí)必須重新啟動(dòng)實(shí)例。 其它的備用數(shù)據(jù)庫也

需重新啟動(dòng)實(shí)例。

Switchover : 故意將主數(shù)據(jù)庫offline,而將另一備用數(shù)據(jù)庫online,它能夠切換到備用數(shù)據(jù)庫而不需同步操作。如:可使用 Switchover

完成系統(tǒng)的平滑升級(jí)。 即使在備用數(shù)據(jù)庫上不應(yīng)用重做日志,也不會(huì)造成數(shù)據(jù)的丟失。 數(shù)據(jù)庫不需重新啟動(dòng)實(shí)例。這使主數(shù)據(jù)庫幾乎能立即

在備用數(shù)據(jù)庫上恢復(fù)它的功能,因此可經(jīng)常進(jìn)行定期維護(hù)而不需中斷操作。   Failover和Switchover的區(qū)別為:當(dāng)Failover發(fā)生,備用

數(shù)據(jù)庫切換為主數(shù)據(jù)庫之后,它丟失了備用數(shù)據(jù)庫的所有能力,也就是說,不能再返回到備用模式;而Switchover可以,備用數(shù)據(jù)庫可切換

為主數(shù)據(jù)庫,也可從主數(shù)據(jù)庫再切換回備用數(shù)據(jù)庫。

上述就是小編為大家分享的如何進(jìn)行Dataguard日常管理了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI