您好,登錄后才能下訂單哦!
這期內(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è)資訊頻道。
免責(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)容。