關於oracle中ora 00600的報錯

2021-08-03 02:50:57 字數 2029 閱讀 7645

今天起,打算把工作中遇到的各種問題和解決方法記錄下來,會比較囉嗦,初學所以盡量詳細,會寫下思考過程,方便自己回憶和分享給需要的人。

一、問題描述

在處理金投4.0資料線對接測試中發生錯誤: 

1、這個表是dmp過來的資料,查詢這個order_date欄位時,就會報這個錯誤。並且查這張表的其餘欄位是不會報錯的。

2、如果dmp過來的時候,只單獨匯出這張表的話,就正常,沒有任何問題。

3、dmp全資料過程中沒有報錯和任何異常

二、解決嘗試:

1、從alert日誌中找到ora-00600對應trace檔案,先執行sql> show parameter dump,找到background_dump_dest 對應的位址 /mnt/home/oracle/diag/rdbms/crm/crm/trace,再cd這個目錄下,找到檔案 alert_crm.log,檢視這個檔案。

好吧,從日誌裡面看不出什麼,網上解釋600的錯誤基本上都是oracle自己的bug。

2、懷疑是資料庫版本或者是字符集不一致造成的,比較兩個資料庫的版本:

匯出庫的版本:

導入庫的版本:

從網上查到,11.2.0.1.0版本的oracle資料庫bug比較多,一般要公升級到11.2.0.4.0。那麼第一種的解決方法就是公升級資料庫了,不過這個相對特別麻煩,特別是要動生產庫存在風險。

匯出庫的字符集和導入庫的字符集是一樣的,都是simplified chinese_china.zhs16gbk

因為匯出匯入使用的是 expdp和impdp,所以匯出匯入的命令中不需要單獨指定字符集,只要比較兩個庫客戶端的字符集就可以了,比較結果是兩個庫是相同的字符集。

3、有可能和字段長度或者型別有關係?查查看吧

order_date      varchar(20)

結果肯定是沒關係的,因為單獨匯出這個表,是不會有問題的,源表資料字段長度為8,我改為20仍然報錯。

三、解決方案:

經過諮詢dba大神,找到了解決方案。

1、匯入時去掉 content=data_only,drop掉有問題的表,讓它自己通過dmp生成。

2、單獨匯入這張表的表結構和資料:

impdp oracle/oracle directory=load_data_test dumpfile=ktrade_20170622.dmp remap_schema=ktrade:oracle  tables=ktrade.trd_bond_order remap_tablespace=ktrade:crm_tb

3、再嘗試全量匯入所有資料:

impdp oracle/oracle content=data_only directory=load_data_test dumpfile=ktrade_20170622.dmp table_exists_action=truncate logfile=ktrade_20170622.log remap_schema=ktrade:oracle  

再查詢資料發現問題已經解決(是不是好神奇?還簡單)

oracle 觸發器中ORA 04091原因及解決

最近已經做好很久的已經很久的專案有個新需求,a表資源是歸屬於b表,所以a中有引用b表的bid。且b表中有個字段用於統計隸屬於他的a資源。當b表中某個資源更換他的隸屬關係是,則這個資源原隸屬的b資源統計字段需要重新計算。a表 xtbh bidacd status12 101422 131432 209...

關於oracle中in和exists

今天看sql語句的時候發現了exists這個關鍵字,記得剛用這個關鍵字的時候只知道它和關鍵字in的作用是一樣的,當時覺得無非就是我的條件匹配到子結果集裡面的資料。今天打算把這兩個關鍵字具體怎麼回事區分一下,上網上看了一下,懂了一些兩者的區別,其中還涉及到了效能問題,很吃驚!2018 11 8再次更新...

Oracle中關於 的用法

就是連線 譬如select a.b.from a b就是乙個右連線,等同於select a.b.from a right join b select a.b.from a b 就是乙個左連線,等同於select a.b.from a left join b 即 所在位置的另一側為連線的方向,通常將全...