【原創】一對雙引號引發的goldengate血案
一對雙引號引發的goldengate血案:
源是sql2005 ,目的是linux x64 下的db2 v9.7
因為是測試環境,所以只同步了一個sql2005的表(注意,此時我並沒有意識到sql2005是區分大小寫的)
源端和目的端配置完畢後,分別啟動兩端的mgr程式,狀態是running。ok!
extract 程式的狀態是running
datpump 程式的狀態是running
replicat程式的狀態是running
ok!
在源端插入一條記錄(此表已經被配置extract),
馬上就看到了源端trail檔案的修改時間變了。
馬上就看到了目的端trail檔案的修改時間也變了。
然後replicat程式的狀態是running
然後去目的庫檢視此條記錄是否存在,結果是不存在。
分析過程:
● If the system or database is case-sensitive, Oracle GoldenGate supports the case
sensitivity of database names, owner and schema names, object names, column names,
and user names.
● If the system or database is case-insensitive (or is configured for case-insensitivity),
Oracle GoldenGate converts all names to upper case.
1.使用logdump工具,分析目的端的trail檔案,確實能看到到在此trail檔案中包含了此條insert into 語句
2.經過詢問oracle 技術支援,發現是目的端replicat引數檔案中的寫法有問題。
MAP "dbo.bkb", TARGET 引數中,源端的表名 "dbo.bkb"一定要被雙引號引起來。因為源端的sql2005資料庫的排序規則是Chinese_PRC_BIN,此種排序規則是區分大小寫的。
加與不加雙引號,goldengate在 解釋MAP 引數時會發生差異:
不加的話,MAP dbo.bkb 會被解釋為MAP DBO.BKB
加的話,MAP "dbo.bkb" 會被解釋為MAP dbo.bkb
由於源端sql2005區分大小寫,所以,傳到目的端的trail檔案中,涉及到table名的部分,肯定是dbo.bkb(而不是DBO.BKB)
而若是replicat引數檔案中不加雙引號,MAP dbo.bkb 會被解釋為MAP DBO.BKB
這樣的話,map 的是DBO.BKB,傳到目的端的trail檔案只有dbo.bkb,不匹配。所以,目的端的replicat程式running,但是沒有複製任何東西。
[@more@]
源是sql2005 ,目的是linux x64 下的db2 v9.7
因為是測試環境,所以只同步了一個sql2005的表(注意,此時我並沒有意識到sql2005是區分大小寫的)
源端和目的端配置完畢後,分別啟動兩端的mgr程式,狀態是running。ok!
extract 程式的狀態是running
datpump 程式的狀態是running
replicat程式的狀態是running
ok!
在源端插入一條記錄(此表已經被配置extract),
馬上就看到了源端trail檔案的修改時間變了。
馬上就看到了目的端trail檔案的修改時間也變了。
然後replicat程式的狀態是running
然後去目的庫檢視此條記錄是否存在,結果是不存在。
分析過程:
● If the system or database is case-sensitive, Oracle GoldenGate supports the case
sensitivity of database names, owner and schema names, object names, column names,
and user names.
● If the system or database is case-insensitive (or is configured for case-insensitivity),
Oracle GoldenGate converts all names to upper case.
1.使用logdump工具,分析目的端的trail檔案,確實能看到到在此trail檔案中包含了此條insert into 語句
2.經過詢問oracle 技術支援,發現是目的端replicat引數檔案中的寫法有問題。
MAP "dbo.bkb", TARGET 引數中,源端的表名 "dbo.bkb"一定要被雙引號引起來。因為源端的sql2005資料庫的排序規則是Chinese_PRC_BIN,此種排序規則是區分大小寫的。
加與不加雙引號,goldengate在 解釋MAP 引數時會發生差異:
不加的話,MAP dbo.bkb 會被解釋為MAP DBO.BKB
加的話,MAP "dbo.bkb" 會被解釋為MAP dbo.bkb
由於源端sql2005區分大小寫,所以,傳到目的端的trail檔案中,涉及到table名的部分,肯定是dbo.bkb(而不是DBO.BKB)
而若是replicat引數檔案中不加雙引號,MAP dbo.bkb 會被解釋為MAP DBO.BKB
這樣的話,map 的是DBO.BKB,傳到目的端的trail檔案只有dbo.bkb,不匹配。所以,目的端的replicat程式running,但是沒有複製任何東西。
[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161195/viewspace-1054784/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 中一個雙引號的錯位引發的血案MySql
- 事故現場:MySQL 中一個雙引號的錯位引發的血案MySql
- Maven依賴版本號引發的血案Maven
- SwipeRefreshLayout 引發的一場血案
- 【原創】經驗分享:一個Content-Length引發的血案(almost....)
- Golang的單引號、雙引號與反引號Golang
- PHP中對單引號和雙引號的區別(好文)PHP
- ORACLE 單引號 雙引號Oracle
- .Net版本引發的血案
- linux 單引號,雙引號,反引號Linux
- 一個 Handler 面試題引發的血案!!!面試題
- 一個map函式引發的血案函式
- 一道面試題引發的“血案”面試題
- Linux Shell 中的反引號,單引號,雙引號Linux
- HTML 單引號與雙引號HTML
- Oracle中的 單引號 和 雙引號Oracle
- oracle 裡的單引號與雙引號Oracle
- RestTemplate超時引發的血案REST
- JDBC亂碼引發的"血案"JDBC
- latex的雙引號 ``'
- 一個ES設定操作引發的“血案”
- 實戰|一個表白牆引發的“血案”
- 一場由postcss-bem引發的血案CSS
- 一個全形空格引發Jquery取值的“血案”jQuery
- 一場 Kafka CRC 異常引發的血案Kafka
- Jquery單引號和雙引號的使用注意jQuery
- SQL語句中的單引號與雙引號SQL
- grep 後加單引號、雙引號和不加引號的區別
- shell 指令碼中雙引號、單引號、反引號的區別指令碼
- Python中 單引號,雙引號和三引號的區別Python
- 關於 json 單引號和雙引號區別--請使用雙引號JSON
- js中關於單引號和雙引號的一點用法JS
- python中單引號,雙引號,多引號區別Python
- shell中單引號、雙引號、反引號、反斜槓的區別
- oracle 中使用單引號(')和雙引號(")Oracle
- vue watch陣列引發的血案Vue陣列
- _nop_()函式引發的血案函式
- Oracle中單引號和雙引號的區別Oracle