【聽海日誌】之ORA-01455故障排查

聽海★藍心夢發表於2012-06-14
一、Exp匯出日誌報錯

. . 正在匯出表             tmp_T_SHEET

匯出了                                                             0

. 正在匯出同義詞

. 正在匯出檢視

. 正在匯出儲存過程

. 正在匯出運算子

. 正在匯出引用完整性約束條件

. 正在匯出觸發器

. 正在匯出索引型別

. 正在匯出點陣圖, 功能性索引和可擴充套件索引

. 正在匯出後期表活動

. 正在匯出實體化檢視

. 正在匯出快照日誌

EXP-00008: 遇到 ORACLE 錯誤 1455

ORA-01455: 轉換列溢位整數資料型別

EXP-00000: 匯出終止失敗

從網上搜了很多方法:

1.1 版本問題

客戶端和伺服器採用的是相同的版本,所以不存在版本問題。而且之前指令碼一直都執行的很好,突然就報這個錯誤,所以應該是和版本無關。

1.2 Direct=y

ITPUB裡有人說是設定了direct這個引數導致:

http://www.itpub.net/forum.php?mod=viewthread&tid=1595537

我根本沒用這個引數,所以也不是這個問題。

1.3 statistics引數

網上例子:

ORA-01455: 轉換列溢位整數資料型別 ,Export 命令會將表的statistics 值轉成成整形。 當這個statistics值超過2^31-1時,就會報這個錯誤。

最後在exp命令後加 INDEXES=n STATISTICS=none”這兩個引數,exp就可以成功匯出了。

最後結果:

按照網上的說法,加上INDEXES=n STATISTICS=none引數,依然報錯,顯然不是統計資訊的原因。

二、Insert報錯

現象:

INSERT INTO tmp_T_SHEET(ID, INFO_SUBJECT) VALUES (seq_mod_info.nextval,'123123');

ORA--00942表或試圖不存在

檢查:

檢查表和索引的狀態和許可權都對,都是該執行使用者下的物件,狀態都對。

三、重新命名報錯

3.1 ORA-26563錯誤

我試著用create table tab01 as select * from tmp_T_SHEET;發現新建的tab01表操作完全正常,於是想把原來的表重新命名,然後刪除tmp_T_SHEET表。可是發現該表重新命名也報錯:ORA-26563: 不允許重新命名此表

SQL> alter table tab rename to tmp_T_SHEET;

alter table tab rename to tmp_T_SHEET

*

ERROR 位於第 1 :

ORA-26563: 不允許重新命名此表

3.2 查詢原因

如果在重新命名錶的時候出現ORA-26563: 不允許重新命名此表錯誤,試著將表上的物化檢視日誌drop就可以了。

四、刪除表上的物化檢視日誌

SQL> DROP MATERIALIZED VIEW log ON tmp_T_SHEET;

刪除表上的物化檢視日誌後,對錶再進行insert操作,一切正常;然後,在執行exp指令碼匯出資料,也不再報ORA-01455錯誤。

五、總結

最後詢問,有位同事說他在學建物化檢視時用過這表,不過建立完之後他把物化檢視已經刪了---可是物化檢視日誌沒有清理。

因為是測試庫,所以問題一直拖了好幾天。正式庫的許可權我一般都會收回來,增刪改查都由一個人統一管理。測試庫就開放了許可權,導致所有的人可以做任何操作。很多人對資料庫管理工作感覺很難,很深奧,其實很多工作都是需要你從管理和技術兩方面配合,即便你水平很高,管理不到位,一樣會讓你忙的團團轉。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/751371/viewspace-732763/,如需轉載,請註明出處,否則將追究法律責任。

相關文章