Oracle存储过程实例开发
1,???????需求
登錄App的賬號是從兩個不同的系統過來,一個是zy,一個是mh。
2,???????實現機制
最初采用的是全量同步,即將本系統的信息一條條的與其他系統對比,沒有就新增多余就刪除。這樣全量同步導致的結果是過程時間執行太久,需要30分鐘左右。
然后考慮用增量同步,即其他系統送操作標識過來,每張表都新增一個op_flag,A代表新增,D代表刪除,M代表修改,根據這些標識進行更新。這樣修改后大大提高了同步效率,只需5分鐘即可完成,但出現另一個問題,維護成本太大。因為增量同步只涉及到本次的數據,上次出錯的數據是不會處理的。剛上線時,肯定大大小小會存在問題,所以每次修復問題后還要對歷史數據進行處理,工作量巨大,而且后續如果有新增的崗位信息,這也是個問題。
最后采用的是差集比較,全量同步和增量同步融合方式,對于具有有意義的唯一標識的表,如人員表,可將staff_id進行差集比較。對于關系表,如人員與小區的關系表,進行全量對比(staff_id必須加索引)。于非關鍵信息,進行增量同步,如人員的地址和姓名(只處理M)。這樣處理后,執行效率高,只需5分鐘左右;維護成本低,無需修復歷史數據;定位問題快,可直接定位到具體的記錄。
?
3,???????具體
1)必須建立回退和備份機制
回退:當突然出現大批量賬號問題導致無法登錄App時,首先將所有涉及的表回退,使之能正常登錄,然后才是分析和查找問題。
備份:賬號信息同步出錯時,必須分析是自己同步過程有誤還是賬號從其他系統過來就是錯的,所以必須建立備份機制才能分析到底是哪一方的問題。
?
2)必須建立同步日志和監控機制
日志:新建一張日志表,字段至少要有時間,具體的過程名,報錯或更新的信息,便于快速定位問題。
監控:將報錯的具體信息插入短信表,有個短信進程每隔半個小時會掃描,將短信發給負責人,負責人能實時監控同步過程的異常信息。
?
3)新建一個Package包,將所有過程放到包里,便于管理
?
4)新建一個過程用于job執行
該過程可控制不同過程的執行順序,如果新增或刪除,就不需要修改job,直接修改該過程即可生效。
5)問題的唯一標識
進入到每個游標里時,將唯一標識記錄下來,出錯時把唯一標識寫到表里,這樣拋錯的時候,不用一行行的去調試,直接定位問題所在,大大提升查找問題的效率
6)Insert語句
采用insert into table(字段)values(值)形式,不要用insert into table values()方式。因為table是鏈路過來的表的話,如果新增字段,沒有處理的話,則會報錯,采用第一種形式的話,就不會報錯。
7)Update、delete語句
不要寫沒有where條件的update或delete語句
?
4,???????其他
涉及到公司機密,具體代碼就不上傳了。
?
?
?
總結
以上是生活随笔為你收集整理的Oracle存储过程实例开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机组成原理ACC中文含义,计算机组成
- 下一篇: mapgis 6.7视频教程