久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行Dataguard日常管理

120次閱讀
沒有評論

共計 8519 個字符,預計需要花費 22 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關如何進行 Dataguard 日常管理,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

dataguard 日常管理

1.fail over

2.switchover

3. 更改保護模式

4. 常用命令和視圖

fail over:

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

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

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 數據庫需要轉化為 standby 有兩種情況:

A. 對于打開 flashback 功能的數據庫比較簡單,現在新的 primary 數據庫上執行這個命令

select standby_became_primary_scn from v$database;

接著在新的 standby 的數據庫上執行

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

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

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

select applied from v$archived_log;

B. 如果沒有開啟 flashback 功能的話,重新創建 dataguard

switchover:

在 switchover 的時候,最好讓兩個庫不要再有新的 session 進來,這樣可以快速 switchover,避免發生異常

在 switchover 應注意的幾點:

1. 在 primary 庫要有 standby logfile。
2. 檢查 v$archive_gap, 核查是否日志都已經歸檔到 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

狀態說明:

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

如果 SWITCHOVER_STATUS 為 to standby 則可直接進行 switchover,如果為 session active 則執行以下步驟:

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

然后在 standby 恢復

SQL alter database recover managed standby database cancel;
數據庫已更改。

(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。如果上述步驟都已執行而 primary 的 switchover_status 還是為 session active 則在正常 switchover 語句后加上 WITH SESSION SHUTDOWN;

(1)primary 進行 switchover

SQL alter database commit to switchover to physical standby WITH SESSION SHUTDOWN;  — 在沒有活動的 session 下,不帶 WITH SESSION SHUTDOWN 選項,我也測試 switchover 成功

數據庫已更改。

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

SQL select open_mode from v$database;
select open_mode from v$database
  *
第 1 行出現錯誤:
ORA-01507: 未裝載數據庫

SQL shutdown immediate;
ORA-01507: 未裝載數據庫

ORACLE 例程已經關閉。
SQL startup mount;
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size  1250428 bytes
Variable Size  176163716 bytes
Database Buffers  427819008 bytes
Redo Buffers  7135232 bytes
數據庫裝載完畢。
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)置于恢復模式

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

數據庫已更改。

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 狀態)

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

數據庫已更改。

SQL select open_mode from v$database;

OPEN_MODE
———-
MOUNTED

SQL shutdown immediate;
ORA-01109: 數據庫未打開

已經卸載數據庫。
ORACLE 例程已經關閉。
SQL startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size  1250428 bytes
Variable Size  234883972 bytes
Database Buffers  369098752 bytes
Redo Buffers  7135232 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL

查看原 standby 庫 switchover 后的角色

SQL select database_role from v$database;

DATABASE_ROLE
—————-
PRIMARY

SQL

最后還要查看兩個庫的 alert.log 內容,看是否正常

dataguard 保護模式:

在更改 dataguard 的保護模式,一定要在 primary 庫上執行;在 primary 更改的保護模式都會應用到 standby 庫
在更改保護模式時,還要注意修改 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 行出現錯誤:
ORA-01126: 數據庫必須已裝載到此實例并且不在任何實例中打開

SQL shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL startup mount
ORACLE 例程已經啟動。

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

SQL alter database set standby database to maximize protection;

數據庫已更改。

SQL alter database open;

數據庫已更改。

SQL

在 standby 庫上:

正常來說,當 primary 更改完保護模式后,在 standby 也會隨著更改

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

OPEN_MODE  PROTECTION_MODE  PROTECTION_LEVEL
———- ——————– ——————–
MOUNTED  MAXIMUM PROTECTION  MAXIMUM PROTECTION

注意
當保護模式更改順序:

maximize protection —   maximize availability —- maximize performance

當在把 dataguard 的保護級別按這上面的順序減低的時候,不需要 primary 庫在 mount 狀態,
primary 在 open 狀態就可以直接執行保護模式更改命令

primary 的保護模式:

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

OPEN_MODE  PROTECTION_MODE  PROTECTION_LEVEL
———- ——————– ——————–
MOUNTED  MAXIMUM PROTECTION  MAXIMUM PROTECTION

執行保護模式更改:

SQL alter database set standby database to maximize protection;

數據庫已更改。

SQL alter database set standby database to maximize availability;

數據庫已更改。

在查看 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

當保護模式更改順序:

maximize protection —  maximize availability —- maximize performance

當在把 dataguard 的保護級別按這上面的順序升高的時候,需要 primary 庫在 mount 狀態,如果在 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 行出現錯誤:
ORA-01126: 數據庫必須已裝載到此實例并且不在任何實例中打開

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

dataguard 常用命令和視圖

查看當前保護模式
SQL select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

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

首先停止 standby 的自動恢復狀態
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;

更改保護模式
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;

取消自動恢復模式:
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、如果在主庫執行 alter database clear unarchived logfile 或 alter database open resetlogs , 則 dataguard 要重建。

2、在連續恢復模式下工作之前,需要保證之前所有的歸檔日志己經應用到備用庫上。因為在連續恢復模式的情況下,oracle 不會應用之前的

歸檔日志,而只會應用后面陸續到來的歸檔日志。

3、出現歸檔日志 gap 時,需要找出相應的歸檔日志,然后將這些歸檔日志 copy 到備用節點的 standby_archive_dest 和

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

4、新建表、表空間、datafile 都能通過日志應用到備庫,但新建一個臨時表空間,rename datafile 均不能應用到備庫上.

5、應當實時察看 standby 庫的 alert 文件,就能清晰明了地知道主備更新的情況。這也是排錯的重要方法, 切記!!

 failover 和 switchover

Failover:將主數據庫 offline,備用數據庫 online,這種操作由系統和軟件失敗引起。即使在備用數據庫上應用重做日志,也可能出現數

據丟失的現象,除非備用數據庫運行在 guaranteed protection 模式。原主數據庫重新使用時必須重新啟動實例。其它的備用數據庫也

需重新啟動實例。

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

完成系統的平滑升級。即使在備用數據庫上不應用重做日志,也不會造成數據的丟失。數據庫不需重新啟動實例。這使主數據庫幾乎能立即

在備用數據庫上恢復它的功能,因此可經常進行定期維護而不需中斷操作。Failover 和 Switchover 的區別為:當 Failover 發生,備用

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

為主數據庫,也可從主數據庫再切換回備用數據庫。

上述就是丸趣 TV 小編為大家分享的如何進行 Dataguard 日常管理了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計8519字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 泾川县| 毕节市| 望谟县| 灵川县| 长乐市| 夹江县| 湟中县| 正定县| 达拉特旗| 定安县| 邵阳市| 敦化市| 伊金霍洛旗| 雅江县| 南宫市| 新兴县| 卢龙县| 池州市| 洱源县| 和顺县| 葫芦岛市| 永仁县| 建水县| 建昌县| 海伦市| 黑龙江省| 远安县| 宝山区| 延津县| 江山市| 上栗县| 锦州市| 公主岭市| 赤峰市| 吉木萨尔县| 咸宁市| 商都县| 陆河县| 尉氏县| 黔西| 沂源县|