ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Oracle数据库DBA高级工程师培训视频
Oracle数据库培训-备份恢复-性能优化-集群容灾
mysql数据库视频教程

Oracle逻辑导出时出现EXP ORA-01455故障排查

内容发布:风哥| 发布时间:2015-11-2 12:32:08
Oracle逻辑导出时出现EXP ORA-01455故障排查


一、Exp导出日志报错
. . 正在导出表             tmp_T_SHEET
导出了                                                             0 行
. 正在导出同义词
. 正在导出视图
. 正在导出存储过程
. 正在导出运算符
. 正在导出引用完整性约束条件
. 正在导出触发器
. 正在导出索引类型
. 正在导出位图, 功能性索引和可扩展索引
. 正在导出后期表活动
. 正在导出实体化视图
. 正在导出快照日志
EXP-00008: 遇到 ORACLE 错误 1455
ORA-01455: 转换列溢出整数数据类型
EXP-00000: 导出终止失败
解决问题方法如下:

1.1 版本问题

客户端和服务器采用的是不相同的版本,所以要一致。

1.2 Direct=y

用了这个参数可能导致问题

1.3 statistics参数

ORA-01455: 转换列溢出整数数据类型 ,Export 命令会将表的statistics 值转成成整形。 当这个statistics值超过2^31-1时,就会报这个错误。
最后在exp命令后加 “INDEXES=n STATISTICS=none”这两个参数,exp就可以成功导出了。
最后结果:
按照网上的说法,加上INDEXES=n STATISTICS=none参数,依然报错,显然不是统计信息的原因。


二、Insert报错
除了exp报错外,突然发现有一张表不能够insert。
现象:
INSERT INTO T_MOD_INFO (ID, INFO_SUBJECT) VALUES (seq_mod_info.nextval,'123123');
ORA--00942表或试图不存在
检查:
检查表和索引的状态和权限都对,都是该执行用户下的对象,状态都对。


三、重命名报错
3.1 ORA-26563错误
我试着用create table tab01 as select * from tab;发现新建的tab01表操作完全正常,于是想把原来的表重新命名,然后删除tab表。可是发现该表重命名也报错:ORA-26563: 不允许重命名此表
SQL> alter table tab rename to tab _2;
alter table tab rename to tab _2
*
ERROR 位于第 1 行:
ORA-26563: 不允许重命名此表
3.2 查找原因
如果在重命名表的时候出现ORA-26563: 不允许重命名此表错误,试着将表上的物化视图日志drop就可以了。


四、删除表上的物化视图日志
SQL> DROP MATERIALIZED VIEW log ON tab;
删除表上的物化视图日志后,对表再进行insert操作,一切正常;然后,在运行exp脚本导出数据,也不再报ORA-01455错误。



五、大多数记录数为0的正式表(不是临时表)没有被导出
出现此错误之前,大多数记录数为0的正式表(不是临时表)没有被导出.
查阅资料,得到原因是Oracle11g增加了参数deferred_segment_creation,参数默认值是TRUE,这样,新建的表无记录时,是滞后分配段的,甚至连DDL定义也无法获取,所以EXP无法导出空表.
解决方法:用本用户登录,下面三个语句查看,结果是不是0行记录(通常第一个肯定不是0条)
(1)select 'alter table '||table_name||' allocate extent;'
from user_tables WHERE SEGMENT_CREATED='NO';
(2)select * from user_indexes WHERE SEGMENT_CREATED='NO';
(3)select * from user_lobs where segment_created='NO';
按照第一个语句构造出来的语句(一组alter table TAB_XX allocate extent;语句)执行,之后再查看,三个语句结果都是0行记录了.
之后,进行EXP正常.
注:上述Oracle参数如果设置为FALSE(alter system set deferred_segment_creation=FALSE;),则之后新建的空表会自动分配段,之前建的空表(未经过曾经有数据的环节)仍是没有分配段的,仍然需要上述方法处理一下.





上一篇:Oracle数据库回收数据文件空间时报ORA-03297的解决方法
下一篇:Oracle中Inventory目录作用以及如何重建Inventory目录
189070296,150201289

专业提供Oracle数据库服务、主机、存储、备份、中间件等相关技术支持服务,QQ号:176140749
关注ITPUX技术网微信公众号itpux_com  ,了解本站最新技术资料的分享.

欢迎加QQ群,提供超多高质量Oracle/Unix/Linux技术文档与视频教程的下载。

Oracle/MySQL/Linux群4-5:189070296  150201289  
Oracle/MySQL/Linux群6-8:244609803   522261684   522651731
备注:请勿重复加群,另请注明 from itpux

加群分享视频教程部分如下:

1、公开课视频:Oracle/MySQL数据库工程师职业发展前景讲解(免费)
http://edu.51cto.com/course/7015.html

2、51CTO学院Oracle数据库高级工程师培训(高薪就业.课程介绍)
http://edu.51cto.com/px/train/131?xiaotu

3、Oracle DBA数据库高级工程师培训视频课程1.1(系列78套+七大阶段+上千案例)
套餐视频地址: http://edu.51cto.com/topic/1121.html

4、MySQL数据库(终身门徒)套餐:http://edu.51cto.com/sd/1e1a6

回复

使用道具 举报

内容发布:weiyanwei412| 发布时间:2015-12-8 17:52:02
谢谢分享。。。。。。。
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表