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

ORACLE 11G DATA GUARD基本原理是什么

141次閱讀
沒有評論

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

本篇內容主要講解“ORACLE 11G DATA GUARD 基本原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“ORACLE 11G DATA GUARD 基本原理是什么”吧!

1、DATAGUARD 原理  

DATAGUARD 是通過建立一個 PRIMARY 和 STANDBY 組來確立其參照關系。

STANDBY 一旦創建,DATAGUARD 就會通過將主數據庫 (PRIMARY) 的 REDO 傳遞給 STANDBY 數據庫,然后在 STANDBY 中應用 REDO 實現數據庫的同步。

有兩種類型的 STANDBY:物理 STANDBY 和邏輯 STANDBY 

物理 STANDBY 提供與主數據庫完全一樣的拷貝(塊到塊),數據庫 SCHEMA,包括索引都是一樣的。它是直接應用 REDO 實現同步的。 

邏輯 STANDBY 則不是這樣,在邏輯 STANDBY 中,邏輯信息是相同的,但物理組織和數據結構可以不同,它和主庫保持同步的方法是將接收的 REDO 轉換成 SQL 語句,然后在 STANDBY 上執行 SQL 語句。邏輯 STANDBY 除災難恢復外還有其它用途,比如用于用戶進行查詢和報表。

DATAGUARD 包含三個服務(日志傳輸、日志應用、角色轉換) 

日志傳輸服務控制 REDO 數據的傳輸(傳輸日志,實施數據庫保護模式)————–STANDBY 上通過起用 RFS 進程接收 REDO 數據。 

日志應用服務則一方面自動應用日志,另一方面自動檢測 STANDBY 缺少的 REDO,并從主數據庫或其它 STANDBY 中自動查詢出丟失的 REDO。

DATAGUARD 的幾種保護模式:最大保護,最大可用,最大性能  

最大保護是指除非 REDO 在至少一個 STANDBY 中可用,否則事務不能提交。如果在某個 STANDBY 中不可用,則主數據庫的操作被停止。通常受制約比較多,在生產環境中不是很常用(性價比不好)。 

最大可用是指如果 STANDBY 不可用,主數據庫仍然可以處理事務,只是在問題被糾正后,STANDBY 和主數據庫進行再同步。這樣的一個問題是:當再同步之前有 FAILOVER 時,有些數據可能會丟失。 

最大性能是指主數據庫的提交操作不等待 STANDBY。PRIMARY 和 STANDBY 松耦合,數據保護級別較低。

物理 STANDBY 可能的模式:只讀模式(OPEN READONLY)和恢復模式(MANANGED RECOVERY)

2、物理 DATAGUARD 實施簡要過程  

主數據庫的準備工作:FORCE LOGGING,ENABLE ARCHIVING,一個本地歸檔目的地。 

創建 STANDBY 數據庫: 

1. 關閉主庫,冷備份主庫數據文件、日志文件和密碼文件,然后啟動主庫,在主庫上創建 STANDBY 的控制文件:alter database create standby controlfile as‘文件名’ 

2. 準備參數文件,將參數文件、備份的主庫文件和 STANDBY 控制文件拷貝到 STANDBY 系統。 

需要更改的參數有:standby_archive_dest—–接收的歸檔日志存放處  

db_file_name_convert 和 log_file_name_convert—–僅當主庫和 STANDBY 庫在同一系統下時用  

log_archive_dest_1—–本地歸檔目的地  

log_archive_dest_2=’service=standby’—–歸檔到 STANDBY 的目的地  

standby_file_management=auto 

remote_archive_enable=true 

fal_server 

fal_client 

instance_name—–當主庫和 STANDBY 庫在同一系統下時該參數用于區分主庫  

lock_name_space—–當主庫和 STANDBY 庫在同一系統下時指定 STANDBY 的實例名和 INSTANCE_NAME 相同  

3. 如果是 WINDOWS 系統,需要創建 WINDOWS 服務。 

4. 配置兩臺機器的 tnsnames.ora, 雙方都能 tnsping 通  

5. 在主庫和 STANDBY 庫上配置監聽  

6. 起用 STANDBY 系統上的死連接檢測:sqlnet.ora 中設置 sqlnet.expire_time=2 

7. 在 STANDBY 上創建 SPFILE 

8. 啟動 STANDBY: 

startup nomount 

alter database mount standby database 

9. 初始化日志應用服務  

alter database recover managed standby database disconnect from session;

3DATAGUARD 維護

1. 日志傳送服務  

有些情況下,你可能需要在歸檔日志和應用日志之間有個時間間隔,此時可以通過在 STANDBY 上指定參數 log_archive_dest_n 中指定 delay=minutes 屬性。 

STANDBY 上的日志應該與主庫上的日志大小相同,另外 STANDBY 上的日志組應該比主庫多,因為這樣歸檔操作才有時間完成。也就是 RFS(日志接收)進程在使用 STANDBY 的日志前,不用等待該日志被歸檔。最簡單判斷日志組是否夠的方法是查看警告日志和 RFS 的 TRACE 文件。 

增加 STANDBY 日志文件的方法: 

alter database 語句中使用 add standby logfile 子句。相關視圖 vstandbylog,vlogfile 

增加 STANDBY 日志組的方法: 

alter database add standby logfile group 10 (‘文件名 1’,’文件名 2’) size 100M 對于多個 STANDBY 共享歸檔日志文件目的地,有些情況下需要指定 log_archive_dest_n 參數的 dependency 屬性,該屬性的作用是說明該目的地依賴于父目的地的成功歸檔。 

參數 log_archive_dest_n 還可以指定 reopen、max_failures、sync、async 屬性。通過給該參數指定 LGWR 或者 ARCH 屬性以選擇是用 LGWR 還是 ARCH 進程傳送日志。 

用于日志接收的幾個進程是:LGWR,ARCH,RFS,FAL。FAL 進程用于解決日志縫。 

設置數據保護模式的語句為:alter database set standby database to maximun(protection|availability|performance)

2. 日志應用服務  

對于物理 STANDBY,日志應用服務涉及到下面幾個進程:RFS,ARC,MRP。MRP 是管理恢復進程。 

啟動 STANDBY 的恢復操作的幾個命令:alter database recover managed standby database(啟動前臺會話);alter database recover managed standby database disconnect from session(啟動后臺會話,也就是說會話可以繼續干別的事情);alter database recover managed standby database cancel(停止日志應用). 

可以通過查詢視圖 v$managed_standby 查看日志應用情況。

3. 數據文件管理  

當主庫新創建數據文件,可定義參數 standby_file_management 為 auto,讓 standby 也自動創建數據文件。如果主庫和 standby 的數據文件的目錄結構不一樣,可以設定 db_file_name_convert 將主庫上的文件名轉換成 standby 上的文件名。如果 standby_file_management 設為 auto,則不能在 standby 上重命名或創建數據文件、日志文件。 

每分鐘主庫會詢問 standby 是否有 gap,該行為被稱為 heartbeat. 

可以查詢視圖 varchivedgap,如果發現有 GAP,則可以從主庫上將日志文件拷貝到 standby,然后將相關文件注冊到 standby,具體方法是:alterdatabaseregisterlogfile‘文件名′。當然也可以通過設置參數 falserver,falclient,讓日志應用服務自動處理 gap 問題。對于 STANDBY 日志應用服務,下面幾個視圖有助于監控:vmanaged_standby,varchiveddeststatus,varchived_log,vlogstatus,vdataguard_status. 

可以設置參數 log_archive_trace 對歸檔進行不同級別的跟蹤。

4. 角色轉換  

ORACLE 支持兩種形式的角色轉換—-switchover 和 failover 

switchover 包含兩個步驟,首先主庫被轉換成 STANDBY,然后 STANDBY 被轉換成主庫  

switchover 的準備工作:完成角色轉換需要改變的參數(必須改變所有 STANDBY 上的 log_archive_dest_n 和 log_archive_dest_state_n); 確保主庫和所有 STANDBY 都有連接; 確認沒有用戶連接到數據庫; 對于 RAC 環境確保只有一個實例是活動狀態; 角色轉換之前,主庫實例應該是 OPEN 狀態,而 STANDBY 實例是 MOUNT 狀態,因為這樣的話,轉換過程中 STANDBY 數據庫也可以應用歸檔日志,如果 STANDBY 為 READONLY,切換操作仍然可以進行,只是要花一點額外的時間; 如果切換操作包含邏輯 STANDBY,那么,主庫實例和 STANDBY 實例都必須為 OPEN 狀態; 將要轉換成主庫的 STANDBY 變成歸檔模式; 取消在該 STANDBY 庫上的日志延遲。 

switchover 的步驟:在當前主庫上,首先確認可以執行 switchover 操作(select switchover_status from vdatabase, 如果值為 TOSTANDBY 則可以切換,否則需要檢查當前 DATAGUARD 配置是否運行正常),然后將主庫切換為 STANDBY(執行 ALTERDATABASECOMMITTOSWITCHOVERTOPHYSICALSTANDBY; 這樣原控制文件被備份并生成新的 STANDBY 控制文件,然后只要重新啟動該庫為 STANDBY 模式就可以了); 以上操作完成后,在原 STANDBY 數據庫上,需要查詢原主庫的切換信息是否被目標 STANDBY 接收到(SELECTSWITCHOVERSTATUSFROMVDATABASE; 如果結果為 SWITCHOVER PENDING 說明 STANDBY 切換為 PRIMARY 是可行的,否則需要檢查 DATAGUARD 的配置是否運行正常),然后執行 ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 將 STANDBY 轉換成 PRIMARY,并重新啟動該庫。這里需要說明的是如果該庫在線重做日志不存在,該切換語句會自動創建它們,然而這樣一來,會花費很長的時間。因此 ORACLE 建議手工增加在線重做日志。手工增加在線重做日志的方法有兩種:第一種是將原主庫的日志拷貝到原 STANDBY,并且定義參數 log_file_name_convert,讓它將 standby 和新的日志聯系起來。第二種方法是 DROP 所有目標 STANDBY 上存在的日志,并且用命令 ALTER DATABASE ADD STANDBY LOGFILE 創建新的日志。switchover 的最后一步是將新生成的 STANDBY 轉換成恢復模式,并將新 PRIMARY 進行一次歸檔操作。

failover 的準備工作:完成角色轉換需要改變的參數(必須改變所有 STANDBY 上的 log_archive_dest_n 和 log_archive_dest_state_n); 確保主庫和所有 STANDBY 都有連接; 對于 RAC 環境確保只有一個實例是活動狀態; 如果要進行 failover 操作的 STANDBY 當前運行于最大保護模式,則應該將它轉換成最大性能模式(通過命令 ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;)

failover 的步驟:首先發現并解決日志 GAP 的問題,然后從其它庫中將日志號高于本庫的日志拷貝過來并應用這些日志,如果你沒有手工注冊新的日志,那么可以執行下面的語句 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 否則需要執行的語句為 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE; 接下來執行 ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 完成切換并重新啟動新的主庫,可能的話對主庫進行一次備份。

5. 啟動 STANDBY 

STARTUP NOMOUNT; 

ALTER DATABASE MOUNT STANDBY DATABASE; 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

6. 關閉 STANDBY 

首先確認是否處于恢復狀態:SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY; 

取消恢復操作:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

SHUTDOWN IMMEDIATE;

7. 讓 standby 運行于只讀訪問模式  

啟動 STANDBY 為只讀模式: 

STARTUP NOMOUNT; 

ALTER DATABASE MOUNT STANDBY DATABASE; 

ALTER DATABASE OPEN READ ONLY; 

將恢復模式的 STANDBY 轉換成 read only 模式: 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

ALTER DATABASE OPEN READ ONLY;

8. 讓 STANDBY 從 READ ONLY 轉變成恢復模式  

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

i. 讓為只讀模式的 STANDBY 執行排序操作應該注意的問題: 

排序操作不能使用非臨時表空間,臨時表空間必須是本地管理的,并且只包含臨時文件  

如果在創建 STANDBY 時主庫沒有臨時表空間,則需要在主庫上創建臨時表空間,并執行 ALTER SYSTEM SWITCH LOGFILE; 將 redo 傳給 STANDBY。如果要給 STANDBY 的臨時表空間增加臨時文件,需要先將 STANDBY 轉換成 READ ONLY 模式,并執行命令 ALTER TABLESPACE temp1 ADD TEMPFILE‘/disk1/oracle/dbs/s_temp1.dbf’SIZE 10M REUSE; 增加臨時文件。

9. 可以通過對 STANDBY 的備份實現對數據庫的備份。

10. 主庫上的操作和 STANDBY 的應對: 

如果你執行 ALTER DATABASE CLEAR UNARCHIVED LOGFILE 或者打開數據庫時使用 RESETLOGS,那么必須重新創建 STANDBY。 

如果你在主庫上執行 ALTER DATABASE ENABLE|DISABLE, 如果你改變表空間的狀態,如果你設置了參數 STANDBY_FILE_MANAGEMENT 為 AUTO 并創建表空間或者增加數據文件,則不需要對 STANDBY 進行操作。 

如果你在主庫上刪除了表空間或者數據文件,你需要在 STANDBY 上等日志應用后在操作系統上刪除相關數據文件。 

如果你在主庫上重命名了數據文件,你也要在 STANDBY 上重命名(因為是對控制文件的改變,所以沒有日志傳過去,因此兩邊都要進行相同的操作) 

如果你在主庫上改變了控制文件,你就要重新創建 STANDBY 控制文件或者重建 STANDBY 數據庫。 

如果你在主庫上增加或刪除日志文件,你也需要在 STANDBY 上進行同步變化。 

具體方法為:先取消恢復,如果 STANDBY_FILE_MANAGEMENT 為 AUTO,則改為 MANUAL,然后使用命令 ALTER DATABASE ADD STANDBY LOGFILE‘prmy3.log’SIZE 100K; 增加日志文件或者用命令 ALTER DATABASE DROP STANDBY LOGFILE‘prmy3.log’DROP 掉日志文件,最后恢復參數 STANDBY_FILE_MANAGEMENT 的值。 

如果你在主庫上進行了 nologging|unrecoverable 等操作,則應該將包含這些變化的表空間拷貝到 STANDBY。 

如果你改變了主庫的參數文件,那么你也應該改變 STANDBY 的參數文件。

三、監控進程  

SELECT PROCESS, CLIENT_PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;

m. 監控恢復操作的進程  

SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#, APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS;

 DATA GUARD 的最主要的功能是冗災。當然根據配置的不同,DATA GUARD 還可以具備以下特點:高可用、性能提升、數據保護以及故障恢復等。

 DATA GUARD 可以分為物理 STANDBY 和邏輯 STANDBY 兩種。二者的最大差別在于,物理 STANDBY 應用的是主庫的歸檔日志,而邏輯 STANDBY 應用的是主庫的歸檔日志中提取的 SQL 語句。由于二者這一點的區別,決定了物理 STANDBY 無論從邏輯結構和物理結構都是和主庫保持一致,而邏輯 STANDBY 則只需保證邏輯結構一致,且邏輯 STANDBY 在應用 SQL 語句的時候,數據庫可以處于打開的狀態。

    如果從 DATA GUARD 的保護模式分,可以分為三種不同的保護模式:

    保護最大化:這種模式的配置可以保證主庫和備庫的同步,任何情況下主庫的損毀都不會導致已提交數據的丟失。如果主庫和備庫之間的網絡出現問題,或者備庫本身出現問題,都會導致主庫停止數據處理。

  可用最大化:這種模式和上面一種類似,也是會保證主庫和備庫的同步,區別在于,當網絡或備庫不可用時,主庫仍然可以繼續處理。

  性能最大化:主庫和備庫是異步的。這種模式可能在主庫出現損毀時,丟失一部分數據。但是這種模式對主庫負荷最小,因此具有最好的性能。

到此,相信大家對“ORACLE 11G DATA GUARD 基本原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計7618字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁陵县| 高要市| 雅江县| 朝阳市| 佛坪县| 宁河县| 板桥市| 南阳市| 阜阳市| 静海县| 望城县| 犍为县| 特克斯县| 银川市| 广饶县| 桂东县| 峨山| 察哈| 无锡市| 大足县| 江城| 获嘉县| 深水埗区| 渝中区| 桃园县| 宜兴市| 阿合奇县| 腾冲县| 义马市| 镇巴县| 北流市| 莱芜市| 西充县| 西平县| 盐池县| 尼玛县| 沿河| 青海省| 光山县| 金沙县| 平和县|