解决转换溢出数据库备份

解决Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题

数据库教程 2021-12-13 09:04:39 38

导读

问题描述: 在进行数据库备份时候,导出dmp数据出现““ORA-01455:转换列溢出整数数据类型”的错误 Oracle版本号为11.2.0.1,操作系统为WindowsServer2008R2 问题排查解决: 换电脑以及服务器尝试,存在同样问题,在网上查询相关资料,发现问题原因主要……

问题描述:

在进行数据库备份时候,导出dmp数据出现““ORA-01455: 转换列溢出整数数据类型”的错误

Oracle版本号为11.2.0.1,操作系统为Windows Server2008R2

解决Oracle 11g 导出数据报 “ORA-01455: 转换列溢出整数数据类型”的问题

问题排查解决:

换电脑以及服务器尝试,存在同样问题,在网上查询相关资料,发现问题原因主要有下面几个方面,进行了一一排除。

1、存在空表,检查表中有数据,且没有特殊的数据类型(blob,clob等),就是一个普通的表,该问题排除;

2、统计信息问题,修改使用导出语句进行导出,添加Direct=y INDEXES=n STATISTICS=none等参数,问题依旧;

3、客户端和服务端版本不对应问题,我这里本地不存在这个问题,可以排除;

4、数据本身问题,检查数据无错误,未发现异常;

5、可能关联有物化视图、快照等导致,经检查,无相关内容,可以排除。

最终,未发现根本原因,通过expdb命令方式导出,导出正常,如果有遇到同样情况的可以参考一下,expdb命令在此不再进行详细说明。

补充:下面看下ORACLE 11g 导出数据的操作步骤:

ORACLE 11g 导出 表的时候 不会导出空表 

导出空表操作步骤 :(使用PLSQL)

1、打开SQL window 执行下面的 SQL

Select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created = 'NO'
 UNION ALL
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

2、获取到查询的数据,然后选择获取最后页(Alt+End),选中全部结果,复制。

3、粘贴到Command,然后执行。

这是对空表进行设定,这样在导出的时候就不会忽略空表。

1253067 TFnetwork_cn