欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

oracle00011,oracle11g 导出表报EXP-00011:table不存在。

发布时间:2023/12/2 编程问答 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 oracle00011,oracle11g 导出表报EXP-00011:table不存在。 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

oracle11g,在用exp命令备份数据库时,如果表中没有数据报EXP-00011错误,对应的表不存在。这导致对应的空表无法备份。

原因:11g默认创建一个表时不分配segment,只有在插入数据时才会产生(当然也可以强制分配),以节省磁盘空间。

对于已经存在的空表解决办法:

就是想办法让空表有segment,第一种:可以通过插入数据的方式(不想要这些数据可以回滚),只要有insert动作就会分配segment;

第二种:就是强制分配:alter table tablename allocate extent;

如果采用第二种可以用以下方法:

1、用以下这句查找空表:select ‘alter table ‘||table_name||’ allocate extent;’ from user_tables where num_rows=0;

2、把查询结果导出,执行导出的语句(是执行查询结果,不是执行你查询的结果集,即执行alter那个部分);

为了后面创建的表能直接分配segment:

用系统账户登录数据库,修改参数deferred_segment_creation(11g新增的)。该参数即指是否延迟创建segment,默认为true。如果想让表创建时就分配segment,那么就应该修改该参数为false即alter system set deferred_segment_creation=false。如下所示:

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

总结

以上是生活随笔为你收集整理的oracle00011,oracle11g 导出表报EXP-00011:table不存在。的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。