成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

處理GoldenGate添加附加日志報錯ORA-02257

IT那活兒 / 1153人閱讀
處理GoldenGate添加附加日志報錯ORA-02257
一. 背景介紹

去年協(xié)助客戶某云化項目(將部分老舊的Oracle數據庫(Uinx + 9i)遷移至Linux + MySQL 5.7),其中部分數據庫使用導出導入的方式可以搞定(數據量小、可停機時間長),但是其中部分數據庫遷移要求盡量停機時間短,數據質量要求高, 割接當晚需要驗證目標端及源端的數據一致,故針對這部分數據庫遷移選擇使用GoldenGate作為同步工具來實現。


二. 報  錯 

在源端配置GoldenGate的時候,使用add trandata為需要同步的表添加表級附加日志,檢查輸出日志發(fā)現部分表報錯 OGG-00706 && ORA-02257,添加附加日志不成功。


三. 報錯處理

通過MOS搜索相關文檔得知,該報錯只發(fā)生在Oracle 9i 且沒有主鍵的情況下為超過33列的表添加表級附加日志時會出現報錯(參考Doc ID 1357001.1 ,Doc ID 1357001.1)),從MOS上得知該報錯解決的辦法也很簡單,只需要將原來的添加一個supplemental log group 拆分成多個日志組,一個日志組包含33個列,剩余列放在另一個日志組,如下:


四. 進階處理

處理過程中發(fā)現這些業(yè)務表的列設計的非常多,甚至大大超過了33列,上百個或者幾百個列,而且是有很多表都存在這個情況,如下圖查詢所示(T001表為建立的測試表),顯示很多表列的個數已經超過了100個,在GoldenGate同步的時候如果每一張表都手工來處理實在是費時費力,效率太低。

于是想辦法通過拆分表的列,用SQL來拼接添加附加日志的腳本,經過一番折騰過后,最終成品如下圖所示,當然最后可以用shell腳本循環(huán)跑一下需要的表,就可以全部輕松搞定:


附拆分column腳本:

Set line 32767 pages 0
set long 99999999
set feedback off
set heading off 
--set wrap off
set tab off
set trimspool on
set trimout on
set termout off
col ddl for a300
Select alter table  || Owner || . || Table_Name ||
        add supplemental log group  || Table_Name || _ || Max_Id || ( ||
       Column_Name || ) always; As Ddl
  From (Select Owner,
               Table_Name,
               Substr(Column_Name, 1, Length(Column_Name) - 1) As Column_Name,
               Max(Col_Id) As Max_Id
          From (Select Owner,
                       Table_Name,
                       Ceil(Column_Id / 30) As Col_Id,
                       Replace(Replace(Replace(To_Char(Xmlagg(Xmlelement(e, Column_Name, ,).Extract(//text()) Order By Column_Id)
                                                       .Getclobval()),
                                               Chr(13),
                                               ),
                                       Chr(10),
                                       ),
                               Chr(9),
                               ) As Column_Name
                  From Dba_Tab_Columns
                 Where Table_Name = T001
                   And Owner = PERFSTAT
                 Group By Owner, Table_Name, Ceil(Column_Id / 30)
                 Order By 3)
         Group By Owner, Table_Name, Column_Name
         Order By 4);

END


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/129833.html

相關文章

  • 集成安裝之Oracle12C補丁升級數據字典更新報錯處理

    集成安裝之Oracle12C補丁升級數據字典更新報錯處理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏795
  • 一步一步搭建前端監(jiān)控系統(tǒng):JS錯誤監(jiān)控篇

    摘要:摘要徒手寫錯誤監(jiān)控。為什么用定時器呢,因為在單頁應用中,路由的切換和地址欄的變化是無法被監(jiān)控的,我確實沒有想到特別好的辦法來監(jiān)控,所以用了這種方式,如果有人有更好的辦法,請給我留言,謝謝。 摘要: 徒手寫JS錯誤監(jiān)控。 作者:一步一個腳印一個坑 原文:搭建前端監(jiān)控系統(tǒng)(二)JS錯誤監(jiān)控篇 Fundebug經授權轉載,版權歸原作者所有。 背景:市面上的監(jiān)控系統(tǒng)有很多,大多收費,對于...

    EdwardUp 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<