Oracle11GR2用exp无法导出空表解决方法Oracle11G在用EXPORT导出时,空表不能导出原因:11GR2中有个新特性,当表无数据时,不分配segment,以节省空间解决方法:一、insert一行,再rollback就产生segment了。该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。二、设置deferred_segment_creation参数该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:altersystemsetdeferred_segment_creation=falsescope=both;需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。三、用以下这句查找空表select'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0;把查询结果导出,执行导出的语句,强行修改segment值,然后再导出即可导出空表,注意:数据库插入数据前,修改11g_R2参数可以导出空表查找空表select'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0四、Oracle10g以后增加了expdp和impdp工具,用此工具也可以导出空的表五、oracleexpdp/impdp用法详解1)创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。createdirectorydb_bakas'd:\test\dump';2)查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)select*fromdba_directories;3)给system用户赋予在指定目录的操作权限,最好以system等管理员赋予。grantread,writeondirectorydb_baktosystem;4)导出数据a)按用户导expdpsystem/manager@orclschemas=systemdumpfile=expdp.dmpDIRECTORY=db_bakb)并行进程parallelexpdpsystem/manager@orcldirectory=db_bakdumpfile=system3.dmpparallel=40job_name=systemc)按表名导expdpsystem/manager@orclTABLES=emp,deptdumpfile=expdp.dmpDIRECTORY=db_bak;d)按查询条件导expdpsystem/manager@orcldirectory=db_bakdumpfile=expdp.dmpTables=empquery='WHEREdeptno=20';e)按表空间导expdpsystem/managerDIRECTORY=db_bakDUMPFILE=tablespace.dmpTABLESPACES=temp,example;f)导整个数据库expdpsystem/mtmadminDIRECTORY=db_bakDUMPFILE=full.dmpFULL=y5)还原数据a)导到指定用户下impdpsystem/managerDIRECTORY=db_bakDUMPFILE=expdp.dmpSCHEMAS=system;b)改变表的ownerimpdpsystem/managerDIRECTORY=db_bakDUMPFILE=expdp.dmpTABLES=system.deptREMAP_SCHEMA=system:system;c)导入表空间impdpsystem/managerDIRECTORY=db_bakDUMPFILE=tablespace.dmpTABLESPACES=example;d)导入数据库impdbsystem/mtmadminDIRECTORY=db_bakDUMPFILE=full.dmpFULL=y;e)追加数据impdpsystem/managerDIRECTORY=db_bakDUMPFILE=expdp.dmpSCHEMAS=systemTABLE_EXISTS_ACTION=append;六、Expdp/Impdp的相关参数EXPDP命令行选项1.ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdpsystem/managerATTACH=system.export_job2.CONTENT该选项用于指定要导出的内容.默认值为ALLCONTENT={ALL|DATA_ONLY|METADATA_ONLY}当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dumpCONTENT=METADATA_ONLY3.DIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATEDIRECTORY语句建立的对象,而不是OS目录Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dump建立目录:CREATEDIRECTORYdumpas‘d:dump’;查询创建了那些子目录:SELECT*FROMdba_directories;4.DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmpDUMPFILE=*directory_object:+file_name*,….+Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象Expdpsystem/managerDIRECTORY=dump1DUMPFILE=dump2:a.dmp5.ESTIMATE指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKSEXTIMATE={BLOCKS|STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间Expdpsystem/managerTABLES=empESTIMATE=STATISTICSDIRECTORY=dumpDUMPFILE=a.dump6.EXTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为NEXTIMATE_ONLY={Y|N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.Expdpsystem/managerESTIMATE_ONLY=yNOLOGFILE=y7.EXCLUDE该选项用于指定执行操作时释放要排除对象类型或相关对象EXCLUDE=object_type*:name_clause+*,….+Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dupEXCLUDE=VIEW8.FILESIZE指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)9.FLASHBACK_SCN指定导出特定SCN时刻的表数据FLASHBACK_SCN=scn_valueScn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_SCN=35852310.FLASHBACK_TIME指定导出特定时间点的表数据FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_TIME=“TO_TIMESTAMP(’25-08-200414:35:00’,’DD-MM-YYYYHH24:MI:SS’)”11.FULL指定数据库模式导出,默认为NFULL={Y|N}为Y时,标识执行数据库导出.12.HELP指定是否显示EXPDP命令行选项的帮助信息,默认为N当设置为Y时,会显示导出选项的帮助信息.Expdphelp=y13.INCLUDE指定导出时要包含的对象类型及相关对象INCLUDE=object_type*:name_clause+*,…+14.JOB_NAME指定要导出作用的名称,默认为SYS_XXXJOB_NAME=jobname_string15.LOGFILE指定导出日志文件文件的名称,默认名称为export.logLOGFILE=[directory_object:]file_nameDirectory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.Expdpsystem/managerDIRECTORY=dumpDUMPFILE=a.dmplogfile=a.log16.NETWORK_LINK指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.17.NOLOGFILE该选项用于指定禁止生成导出日志文件,默认值为N.18.PARALLEL指定执行导出操作的并行进程个数,默认值为119.PARFILE指定导出参数文件的名称PARFILE=[directory_path]file_name20.QUERY用于指定过滤导出数据的where条件QUERY=[schema.][table_name:]query_clauseSchema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用.Expdpsystem/managerdirectory=dumpdumpfiel=a.dmpTables=empquery=’WHEREdeptno=20’21.SCHEMAS该方案用于指定执行方案模式导出,默认为当前用户方案.22.STATUS指定显示导出作用进程的详细状态,默认值为023.TABLES指定表模式导出TABLES=*schema_name.+table_name*:partition_name+*,…+Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.24.TABLESPACES指定要导出表空间列表25.TRANSPORT_FULL_CHECK该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.当设置为Y时,导出作用会检查表空间直