999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Oracle streams雙庫同步的沖突處理方法

2018-03-23 11:59:34顧鵬程
電子技術與軟件工程 2018年4期

顧鵬程

摘 要Oracle Streams是Oracle官方提供的一種免費、靈活的數據庫同步機制,只需通過配置官方的存儲過程即可部署。由沖突事務導致的穩定性不足,是Streams部署中最難以處理的問題。Oracle建議的常規的沖突處理方法需要按表綁定存儲過程,不利于處理新表沖突,其提供的自定義沖突處理存儲過程功能較為簡單,適用性低。本文針對Streams雙向同步中常見的沖突,提出一種不需要綁定表且具有一般適用性的沖突處理部署方法,能夠自動化處理錯誤事務,實驗證明該方法具備一定的可靠性。

【關鍵詞】Oracle Streams 沖突處理 錯誤事務

Oracle Streams 是 Oracle提供的流復制技術,可以實現數據容災和數據共享。其基本思想來源于 Oracle 高級隊列,是其應用的延伸,它還可以傳遞消息隊列,具有免費、靈活的優勢。其缺點是穩定性差。在生產實踐中,主要發現有兩種沖突影響Streams同步,分別為刪除沖突和更新沖突,均由被修改行在目標數據庫找不到對應記錄導致。

對于刪除沖突,一般Oracle建議采取對目標行標記的方法,但這會導致兩個數據庫不一致。對于更新沖突,Oracle提供了預置的自動存儲過程來作簡單的處理。該存儲過程需要指定參數表名、方法名等,配置繁瑣。此外,Oracle還提供自定義存儲過程來配置刪除或更新沖突。該方法需要指定表名以及對應的存儲過程,需要對每張表進行設定,這不利于對新增表的維護。對于這些問題,本文提出一種結合Oracle定時任務和不需要綁定表的自定義存儲過程的方法,讓Oracle自動修正沖突,以確保兩個數據庫的一致性。

1 定制處理沖突的存儲過程

處理沖突的存儲過程本質上是根據發生streams同步錯誤的事務號,找到對應沖事務LCR,結合錯誤類型,調整LCR中的事務內容,使其正確執行。

1.1 處理刪除沖突的存儲過程

有兩種方式處理這種沖突:

(1)可以選擇不使用事務在物理上刪除行,而是更新一個“刪除”列,將行表標記為“已刪除”,這樣不會發生刪除沖突,但可能引發更新沖突,需要另置存儲過程處理。

(2)可以簡單的舍棄掉刪除失敗的事務,并移除錯誤,使后續同步繼續。本文以第二種方法為例實現存儲過程。

首先通過DBMS_APPLY_ADM.GET_ERROR_MESSAGE存儲過程獲得錯誤事務的LCR,然后用GET_COMMAND_TYPE函數可以獲得該操作的增、刪、改類型。

舍棄該刪除操作其實就意味著直接移除事務,執行DBMS_APPLY_ADM.DELETE_ERROR,最后讓同步重新啟動:DBMS_APPLY_ADM.START_APPLY。

1.2 處理更新沖突的存儲過程

考慮在生產環境中,一個更新沖突往往意味著目標數據庫缺失對應記錄,因此,本文采用將更新事務的LCR修改為插入事務的方式。同時為了避免插入事務在雙向同步中反同步到源數據庫,將為Oracle會話增加一個標記,使同步忽略來自標記事務。

獲取錯誤事務LCR以及事務類型的方式與上一節相同。下面假設錯誤事務已被判別為DML操作中的UPDATE類型。

首先調用DBMS_STREAMS_ADM.SET_TAG存儲過程為該會話加一個標記,本文采取十六進制0作為標記。這樣存儲過程中的事務將不會被復制到另一個數據庫。

由于更新語句可能只包含部分字段值,所有需要獲得所有字段值,以插入完整記錄。假設已獲取LCR。用GET_VALUES('OLD') 獲取未被更新的舊值。為了將UPDATE類型的LCR完整的轉變為INSERT類型,需要用SET_VALUES將舊值設為NEW。然后將修改后的LCR用EXECUTE(TRUE)執行。

最后用和上一節相同的語句移除錯誤事務并開啟同步即可。

為了使存儲過程的調用變得簡潔,將可上述兩種存儲過程合為一個。

2 處理流程

首先定義一個存儲過程,定時查詢DBA_APPLY_ERROR表,一旦發現錯誤事務,就調用沖突處理存儲過程。定時觸發采用DBMS_JOB.SUBMIT程實現,每3分鐘查詢一次。

實際應用中主存儲過程的調用頻率可根據需要調整。一般情況,沖突并非配置了雙向Streams同步的數據庫所應當出現的,因而可認為是低概率事件,配置幾分鐘一次的檢查即可。

3 模擬測試

在實驗中,模擬連續100個刪除沖突,按本文方法部署的沖突處理能夠在20分鐘內全部處理完畢,并使同步復原。模擬連續1000個更新沖突,本文方法用大約4小時10分鐘修復完畢。從量級上來說,顯然比人工處理節約人力與時間。此外,一般若生產環境中的數據庫使用得當,不會一次性有這么多沖突,本文方法對大量的同步沖突有一定的適應性。

4 結論

本文針對Oracle雙向streams同步中的沖突問題,指出常規方法的局限性:需要綁定表以及人工處理。為了解決這兩種不足,首先定義了一個具有廣泛適用性的沖突事務處理存儲過程,能夠將錯誤事務的LCR修正并執行,以使同步繼續。然后定義了一個查詢沖突事務的存儲過程,配合Oracle定時任務,實現沖突事務的自動化處理。經過沖突事務的模擬實驗,該方法對平臺沒有依賴性。對于頻率較低的沖突事務,具有較好的處理時效;對于大量沖突事務,亦具備一定的承載能力。在生產環境中,按本文部署沖突處理策略,能夠在節省人力和時間同時加強streams雙向同步的穩定性。

參考文獻

[1]蔡小祥,李曉華.Oracle STREAMS數據同步復制技術應用[J].醫學信息學雜志,2015,36(02):38-40+60.

[2]肖述.Oracle流復制技術在省級數據中心中的應用[J].無線互聯科技,2016(04):136-137.

[3]成雅.基于Oracle Streams的數據庫實時備份與恢復技術研究[D].南京航空航天大學,2012.

作者單位

南京國電南自電網自動化有限公司研發中心 江蘇省南京市 211100

主站蜘蛛池模板: jizz国产视频| 很黄的网站在线观看| 91成人在线免费观看| 午夜福利无码一区二区| 欧美在线网| 成人伊人色一区二区三区| 亚洲人成亚洲精品| 91亚洲精品第一| 国产精品密蕾丝视频| 久久黄色一级视频| 精品乱码久久久久久久| 秘书高跟黑色丝袜国产91在线 | 美女国产在线| 欧美国产在线精品17p| 国产成人高清在线精品| 91精品免费高清在线| 亚洲美女一区| 国产资源免费观看| 欧美日韩亚洲综合在线观看| 国产精品视频观看裸模| 国产区免费精品视频| 久久国产精品国产自线拍| 无码网站免费观看| 亚洲无码电影| 国产亚洲精久久久久久久91| 欧美中文一区| 88av在线看| 无码福利日韩神码福利片| 久久国语对白| 国产精品视频久| 红杏AV在线无码| a毛片免费在线观看| 亚洲精品福利视频| 久操线在视频在线观看| 大陆精大陆国产国语精品1024| 久久黄色毛片| 久久成人18免费| 日韩二区三区无| 久久久久久尹人网香蕉| 国产清纯在线一区二区WWW| 最新日韩AV网址在线观看| 亚洲三级a| 亚洲第一在线播放| 婷婷中文在线| 爆操波多野结衣| 97视频免费在线观看| 亚洲日韩国产精品综合在线观看| 免费国产黄线在线观看| 国产成人无码Av在线播放无广告| 亚洲视频一区| 国产亚洲一区二区三区在线| 国产精品无码AV中文| 制服丝袜在线视频香蕉| 亚洲小视频网站| 99手机在线视频| 国产精品永久在线| 亚洲无码电影| 国产农村精品一级毛片视频| 中文字幕日韩久久综合影院| 亚洲高清在线天堂精品| 亚洲AV永久无码精品古装片| 久久综合干| 伊人无码视屏| 视频在线观看一区二区| 国产三级韩国三级理| 国产成人狂喷潮在线观看2345| www.亚洲天堂| 日韩欧美中文在线| a毛片免费观看| 日韩精品欧美国产在线| 最新国产你懂的在线网址| 成人a免费α片在线视频网站| 欧美成人午夜影院| 67194亚洲无码| 天堂网亚洲系列亚洲系列| 色网站在线免费观看| 精品久久久久久中文字幕女 | 国产男女免费完整版视频| 国产美女免费| 青草视频在线观看国产| 国产精品自拍合集| 色噜噜久久|