[發明專利]一種Oracle數據庫同步環境下批量主鍵更新處理方法及系統有效
| 申請號: | 202110636234.5 | 申請日: | 2021-06-08 |
| 公開(公告)號: | CN113282600B | 公開(公告)日: | 2022-08-30 |
| 發明(設計)人: | 王縣玲;高志會;陳勇銓;周華 | 申請(專利權)人: | 上海英方軟件股份有限公司 |
| 主分類號: | G06F16/23 | 分類號: | G06F16/23;G06F16/2455;G06F16/27 |
| 代理公司: | 上海國智知識產權代理事務所(普通合伙) 31274 | 代理人: | 潘建玲 |
| 地址: | 200011 上海市黃*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 oracle 數據庫 同步 環境 批量 主鍵 更新 處理 方法 系統 | ||
本發明公開了一種Oracle數據庫同步環境下批量主鍵更新處理方法及系統,該方法包括:步驟S1,當源端執行批量主鍵更新操作時,備端根據源端的批量主鍵更新操作解析成URP序列;步驟S2,對所述URP序列的第一條URP操作執行普通URP操作處理;步驟S3,依序執行下一條URP操作,以該URP操作中的源鍵值查詢沖突歷史,在查詢到有記錄且該記錄的源Rowid與當前URP操作的源Rowid不一致時,將更新操作變為插入操作,當查詢到有記錄且該記錄的源Rowid與當前URP操作的源Rowid一致時,則執行普通URP操作處理。
技術領域
本發明涉及Oracle數據庫同步技術領域,特別是涉及一種Oracle數據庫同步環境下批量主鍵更新處理方法及系統。
背景技術
Oracle數據庫是使用非常廣泛的計算機軟件,在生產環境中為了滿足容災和讀寫分離等需求,經常會部署數據庫同步軟件,將源庫實時同步到目標庫。源庫的數據在實時變化,目標庫也隨之實時更新。在此需先說明的是,為了方便描述處理過程,后續的描述則將記錄的修改,刪除和插入操作分別標記為URP(Update Row Piece)、DRP(Delete RowPiece)和IRP(Insert Row Piece)。
目前的Oracle數據庫同步軟件,當源庫修改主鍵時,經常會出現以下幾種情況:
1)在生產端,即源庫,當通過創建表語句create table tab1(key1 int primarykey,age number,name varchar2(10))創建了表tab1,假設現往表中插入了十五條數據,使用‘Update tab1 set key1=key1+1 where key110’類似語句同時更新多條符合where條件的記錄,因為在源庫是一次性執行,不會引起問題,但是在目標庫,因為Oracle同步軟件抓取到redo數據中的多行數據更改,但是不能解析出原始數據中的where條件,不能把where條件拼湊成一條語句,而是解析成一行一行的sql語句去執行,這就會引起目標端裝載的主鍵沖突。例如:當備端執行解析出來的第一行語句修改主鍵key1字段的記錄值11為12時,因為備端原始記錄里面已經存在key1的值為12這條記錄,這時就會產生主鍵沖突,此時雖然可以打開備庫表的延遲約束選項,使得第一條語句可以順利執行,但是在第一條記錄已經產生重復鍵值的情況下,后面的更新語句將無法定位正確的記錄,從技術上,雖然現有技術可以通過全字段索引+延遲約束裝載臨時去解決該問題,但是這個前提是開啟全字段附加日志和延遲約束,然而首先開啟全字段附加日志在生產上會使性能大大降低,生產上不太可能開全字段附加日志,其次,開延遲約束裝載時萬一在事務結束時還有沖突,整個事務會被回滾,比如備庫有更改,代價是很大的,不好處理;
2)更復雜的情況:假設對于生產端的源庫,用戶設置了延遲約束裝載,可以隨意在一個事務中更改主鍵內容,只要事務提交時不沖突即可,這種情況備庫也會開延遲約束,但是主鍵映射仍舊面臨上面的問題。
舉例說明:根據建表語句create table tab1(key1 int primary key,agenumber,name varchar2(10))建表tab1,現往該tab1表中插入兩條數據:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海英方軟件股份有限公司,未經上海英方軟件股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110636234.5/2.html,轉載請聲明來源鉆瓜專利網。





