這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何進(jìn)行Dataguard日常管理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站制作、宣漢網(wǎng)絡(luò)推廣、成都微信小程序、宣漢網(wǎng)絡(luò)營銷、宣漢企業(yè)策劃、宣漢品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供宣漢建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
dataguard日常管理
1.fail over
2.switchover
3.更改保護(hù)模式
4.常用命令和視圖
fail over:
1.如果在dataguard中做了fail over,那么原來的standby 要成為primary要執(zhí)行如下命令
A
首先查看v$archive_gap,然后手動將卻是的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;
對于老的primary 數(shù)據(jù)庫需要轉(zhuǎn)化為standby 有兩種情況:
A.對于打開flashback 功能的數(shù)據(jù)庫比較簡單,現(xiàn)在新的primary數(shù)據(jù)庫上執(zhí)行這個命令
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的時候,最好讓兩個庫不要再有新的session進(jìn)來,這樣可以快速switchover,避免發(fā)生異常
在switchover應(yīng)注意的幾點:
1.在primary庫要有standby logfile。
2.檢查v$archive_gap,核查是否日志都已經(jīng)歸檔到standby庫
實際操作:
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手動切換
SQL> alter system switch logfile;
系統(tǒng)已更改。
然后在standby恢復(fù)
SQL> alter database recover managed standby database cancel;
數(shù)據(jù)庫已更改。
(2)檢查是否有活動的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; ---在沒有活動的session下,不帶WITH SESSION SHUTDOWN 選項,我也測試switchover成功
數(shù)據(jù)庫已更改。
(2)重啟原primary數(shù)據(jù)庫到mount
SQL> select open_mode from v$database;
select open_mode from v$database
*
第 1 行出現(xiàn)錯誤:
ORA-01507: 未裝載數(shù)據(jù)庫
SQL> shutdown immediate;
ORA-01507: 未裝載數(shù)據(jù)庫
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount;
ORACLE 例程已經(jī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則正常切換,否則檢查是否有活動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)啟動。
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>
最后還要查看兩個庫的alert.log內(nèi)容,看是否正常
dataguard保護(hù)模式:
在更改dataguard的保護(hù)模式,一定要在primary庫上執(zhí)行;在primary更改的保護(hù)模式都會應(yīng)用到standby庫
在更改保護(hù)模式時, 還要注意修改 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';
實際操作:
在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)錯誤:
ORA-01126: 數(shù)據(jù)庫必須已裝載到此實例并且不在任何實例中打開
SQL> shutdown immediate;
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jī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也會隨著更改
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ù)級別按這上面的順序減低的時候, 不需要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ù)級別按這上面的順序升高的時候, 需要primary庫在mount狀態(tài),如果在open更改會報如下錯誤:
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)錯誤:
ORA-01126: 數(shù)據(jù)庫必須已裝載到此實例并且不在任何實例中打開
步驟:
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的自動恢復(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打開:
啟動到mount
SQL> select FLASHBACK_ON from v$database;
SQL> alter database flashback on;
取消自動恢復(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
注意事項:
1、如果在主庫執(zhí)行 alter database clear unarchived logfile或alter database open resetlogs ,則dataguard要重建。
2、在連續(xù)恢復(fù)模式下工作之前,需要保證之前所有的歸檔日志己經(jīng)應(yīng)用到備用庫上。因為在連續(xù)恢復(fù)模式的情況下,oracle不會應(yīng)用之前的
歸檔日志,而只會應(yīng)用后面陸續(xù)到來的歸檔日志。
3、出現(xiàn)歸檔日志gap時,需要找出相應(yīng)的歸檔日志, 然后將這些歸檔日志copy到備用節(jié)點的standby_archive_dest和
log_archive_dest目錄下面。需要注意的是log_archive_dest目錄下也需要copy。然后ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;
4、新建表、表空間、datafile都能通過日志應(yīng)用到備庫,但新建一個臨時表空間,rename datafile 均不能應(yīng)用到備庫上.
5、應(yīng)當(dāng)實時察看standby庫的alert文件,就能清晰明了地知道主備更新的情況。這也是排錯的重要方法,切記!!
failover和switchover
Failover : 將主數(shù)據(jù)庫offline,備用數(shù)據(jù)庫online,這種操作由系統(tǒng)和軟件失敗引起。 即使在備用數(shù)據(jù)庫上應(yīng)用重做日志,也可能出現(xiàn)數(shù)
據(jù)丟失的現(xiàn)象,除非備用數(shù)據(jù)庫運行在 guaranteed protection 模式。 原主數(shù)據(jù)庫重新使用時必須重新啟動實例。 其它的備用數(shù)據(jù)庫也
需重新啟動實例。
Switchover : 故意將主數(shù)據(jù)庫offline,而將另一備用數(shù)據(jù)庫online,它能夠切換到備用數(shù)據(jù)庫而不需同步操作。如:可使用 Switchover
完成系統(tǒng)的平滑升級。 即使在備用數(shù)據(jù)庫上不應(yīng)用重做日志,也不會造成數(shù)據(jù)的丟失。 數(shù)據(jù)庫不需重新啟動實例。這使主數(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)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。