oracle11g 导出表报EXP-00011:table不存在。
2017-07-28 15:11
375 查看
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。如下所示:
原因: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。如下所示:
相关文章推荐
- oracle11g 导出表报EXP-00011:table不存在。
- oracle11g 导出表报EXP-00011:table不存在。
- oracle11g 导出表报EXP-00011:table不存在。
- oracle11g 导出表报EXP-00011:table不存在。
- oracle11g 导出表报EXP-00011:table不存在。
- Oracle11g的exp导出空表提示EXP-00011: 不存在
- oracle11gR2 导出表报EXP-00011:table不存在。
- oracle 导出时报错EXP-00011:table不存在
- oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
- 解决0racle11G 导出表的问题 EXP-00011: 不存在
- 11g的exp导出空表提示EXP-00011: SCOTT.TEST1 不存在
- Oracle11G R2用exp无法导出空表
- Oracle11g使用exp导出空表
- Oracle11g使用exp导出空表
- oracle11gR2使用exp导出命令时报EXP-00011错误的解决方法
- Oracle11g exp不能导出空表
- Oracle11g使用exp导出空表
- [解决]PL/SQL 导出表时出现EXP-00011
- 关于exp导出oracle11g的数据库问题 提示exp-00028这个错误