ORA-01455: converting column overflows integer datatype

甲骨文技術支援發表於2018-09-19

今天在用exp匯出一個表的時候,報了1455的錯誤,服務端oracle的版本是11.2.0.4,客戶端是10.2.0.4,開始以為是版本不一致的問題,但是根據經驗以前也這麼匯出過沒遇到這個問題呢,後來查到是這個表是空表導致的。

[oracle@RACdbTestServer ~]$ exp hxxx/xxxxx@192.168.128.xx/oraxxx  
file=/home/oracle/Mxxxxx.dmp tables=Mxxxx
Export: Release 10.2.0.4.0 - Production on Wed Sep 19 10:28:03 2018
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
EXP-00008: ORACLE error 1455 encountered
ORA-01455: converting column overflows integer datatype
EXP-00000: Export terminated unsuccessfully

這個是Oracle 11g R2的新特性,當表建立後一直沒有插入資料的情況下,為節省空間,預設是不分配segment;它是由deferred_segment_creation這個引數控制的,預設是TRUE。

SQL> show parameter deferred_segment_creation
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation     boolean TRUE

解決辦法:

1.把引數改為false

alter system set deferred_segment_creation=false scope=both;

2.把空表找出來

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

3.執行這個alter table語句即可。

4.匯出之後可以把deferred_segment_creation改回為true


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

相關文章