oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
2012-04-25 15:42
375 查看
先来看一下例子。我们创建一张表T2。
Sql代码
SQL> create table t2 (n number);
Table created.
SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------------------
N NUMBER
尝试使用exp将此表导出。
Sql代码
D:\Temp>exp kamus/oracle tables=t2
Export: Release 11.2.0.1.0 - Production on Fri Apr 16 18:11:51 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, Data Mining and Real Application Testing opt
ions
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
EXP-00011: KAMUS.T2 does not exist
Export terminated successfully with warnings.
报错说这张表并不存在。这是让很多客户费解的地方,在测试库中创建应用的表结构,然后再将表结构exp到产品库中去,这是很多客户常用的方法,但是在11gR2中如果这些表是新创建的没有插入过任何一条记录,那么将会碰到上面这样的错误。
原因在于11gR2中的新功能 – Deferred Segment Creation(延迟段创建),默认情况下这个功能是启用的。
Sql代码
SQL> show parameter DEFERRED_SEGMENT_CREATION
NAME TYPE VALUE
------------------------------------ -------------------- --------------------
deferred_segment_creation boolean TRUE
SQL>
延迟段创建的含义是当此新创建一个可能会有Segment的对象时(比如表、索引、物化视图等),如果这个对象中还没有任何记录需要消耗一个Extent,那么将不会在创建对象时自动创建Segment,这样做的好处无疑是在创建对象时大大提高了速度。
对于上例中的T2表,我们在创建结束就立刻检查DBA_SEGMENTS视图,会发现没有任何记录。
Sql代码
SQL> select segment_name from user_segments where segment_name='T2';
rows selected
而对于exp程序而言,当仅仅存在Object的定义而没有相应的Segment时,就会报出EXP-00011对象不存在的错误。
解决方法就很简单了,以下方法任选其一。
1. 设置DEFERRED_SEGMENT_CREATION为FALSE,这样创建对象时就会自动创建Segment
2. 在创建对象时,明确指定立刻创建Segment
create table t2 (n number) SEGMENT CREATION IMMEDIATE;
3. 使用expdp替代exp(Datapump本身就是Oracle10g以后的推荐工具)
Sql代码
D:\Temp>expdp kamus/oracle tables=t2
Export: Release 11.2.0.1.0 - Production on Fri Apr 16 18:14:41 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, Data Mining and Real Application Testing opt
ions
Starting "KAMUS"."SYS_EXPORT_TABLE_01": kamus/******** tables=t2
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "KAMUS"."T2" 0 KB 0 rows
Master table "KAMUS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for KAMUS.SYS_EXPORT_TABLE_01 is:
D:\ORACLE\ADMIN\ORCL\DPDUMP\EXPDAT.DMP
Job "KAMUS"."SYS_EXPORT_TABLE_01" successfully completed at 18:15:10
Sql代码
SQL> create table t2 (n number);
Table created.
SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------------------
N NUMBER
尝试使用exp将此表导出。
Sql代码
D:\Temp>exp kamus/oracle tables=t2
Export: Release 11.2.0.1.0 - Production on Fri Apr 16 18:11:51 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, Data Mining and Real Application Testing opt
ions
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
EXP-00011: KAMUS.T2 does not exist
Export terminated successfully with warnings.
报错说这张表并不存在。这是让很多客户费解的地方,在测试库中创建应用的表结构,然后再将表结构exp到产品库中去,这是很多客户常用的方法,但是在11gR2中如果这些表是新创建的没有插入过任何一条记录,那么将会碰到上面这样的错误。
原因在于11gR2中的新功能 – Deferred Segment Creation(延迟段创建),默认情况下这个功能是启用的。
Sql代码
SQL> show parameter DEFERRED_SEGMENT_CREATION
NAME TYPE VALUE
------------------------------------ -------------------- --------------------
deferred_segment_creation boolean TRUE
SQL>
延迟段创建的含义是当此新创建一个可能会有Segment的对象时(比如表、索引、物化视图等),如果这个对象中还没有任何记录需要消耗一个Extent,那么将不会在创建对象时自动创建Segment,这样做的好处无疑是在创建对象时大大提高了速度。
对于上例中的T2表,我们在创建结束就立刻检查DBA_SEGMENTS视图,会发现没有任何记录。
Sql代码
SQL> select segment_name from user_segments where segment_name='T2';
rows selected
而对于exp程序而言,当仅仅存在Object的定义而没有相应的Segment时,就会报出EXP-00011对象不存在的错误。
解决方法就很简单了,以下方法任选其一。
1. 设置DEFERRED_SEGMENT_CREATION为FALSE,这样创建对象时就会自动创建Segment
2. 在创建对象时,明确指定立刻创建Segment
create table t2 (n number) SEGMENT CREATION IMMEDIATE;
3. 使用expdp替代exp(Datapump本身就是Oracle10g以后的推荐工具)
Sql代码
D:\Temp>expdp kamus/oracle tables=t2
Export: Release 11.2.0.1.0 - Production on Fri Apr 16 18:14:41 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, Data Mining and Real Application Testing opt
ions
Starting "KAMUS"."SYS_EXPORT_TABLE_01": kamus/******** tables=t2
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "KAMUS"."T2" 0 KB 0 rows
Master table "KAMUS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for KAMUS.SYS_EXPORT_TABLE_01 is:
D:\ORACLE\ADMIN\ORCL\DPDUMP\EXPDAT.DMP
Job "KAMUS"."SYS_EXPORT_TABLE_01" successfully completed at 18:15:10
相关文章推荐
- EXP-00011: XX.tab does not exist
- Linux 安装*src.rpm的时候出现:warning: user mandrake does not exist - using root warning
- hadoop机群 运行wordcount出现 Input path does not exist: hdfs://ns1/user/root/a.txt
- mybatis+spring MVC启动的时候 4000 出现Mapped Statements collection does not contain value for
- 在为应用集成微博第三方登录获取用户信息的时候出现异常com.weibo.sdk.android.WeiboException: {"error":"User does not exists!","er
- Oracle 9i exp导出10g R2出现错误:EXP-00003: 未找到段 (4,131) 的存储定义
- 测试apache时出现[error] [client 192.168.6.1] File does not exist: /etc/httpd/htdocs
- navicat premium出现PostgreSQL: column “rolcatupdate” does not exist error?
- oracle11g 导出表报EXP-00011:table不存在。
- Oracle11G R2用exp无法导出空表解决方法
- 自建Yii项目进入shell 出现Error: index.php does not exist or is not an entry script file.
- eclipse启动项目时Tomcat出现 :The specified JRE installation does not exist
- 启动tomcat时出现The specified JRE installation does not exist 如何解决?
- django 1.8 出现 TemplateDoesNotExist 错误
- 打开hive客户端出现错误create does not exist
- 解决opensips启动时出现PID file /var/run/opensips.pid does not exist 的错误 2014-05-14 16:04:11
- navicat premium出现PostgreSQL: column “rolcatupdate” does not exist error?
- 移动硬盘安装centos7出现 /dev/root does not exist 的解决方案
- U盘在服务器安装Redhat7.2出现 /dev/root does not exist 的解决方案
- mysql 备份导出 ('root'@'%') does not exist