ORACLE EXP不能导出空表的原因分析及解决方法_oracle

一、不能导出空表的原因

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

查看:

SQL>show parameter deferred_segment_creation;

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

二、解决办法

可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题

①select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null

使用上面的语句 会拼接处给空表分配Extent的语句

但是,有很多空表 在视图user_tables中的num_rows不等于0(原因:表中以前有数据,删除后oracle没有统计,视图user_tables中的数据没有更新),所以通过上面的方法并不能为所有的空表分配数据段,解决方法如下

②select 'analyze table '||table_name||' compute statistics;' from user_tables

analyze table tablename compute statistics
等同于 analyze table tablename compute statistics for table for all indexes for all columns
for table的统计信息存在于视图:user_tables 、all_tables、dba_tables
for all indexes的统计信息存在于视图: user_indexes 、all_indexes、dba_indexes
 for all columns的统计信息存在于试图:user_tab_columns、all_tab_columns、dba_tab_columns

执行完后,视图user_tables中的num_rows值会更新,此时再执行①,能够给所有的空表分配数据段

然而,在执行 analyze table tablename compute statistics 时,oracle会报  object statictis are locked (这些表的统计被锁了),通过下面的方式解锁

 ③select 'exec dbms_stats.unlock_table_stats('||'''JXDEMO'''||','''||table_name||''');' from user_tables

(③得到的结果需要在sqlplus上执行,在pl/sql developer 中的sql窗口执行报错)

③执行后得到的结果执行完了之后再去执行②就没有object statictis are locked错误提示了

时间: 2024-11-01 15:16:57

ORACLE EXP不能导出空表的原因分析及解决方法_oracle的相关文章

Oracle 11gR2 用exp无法导出空表解决方法

Oracle 11gR2 用exp无法导出空表解决方法        在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:一.insert一行,再rollback就产生segment了.该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数  该参数值默认是TRUE,当改为FALSE时,无无是空表

如何在oracle 11g 中导出空表

  如何在oracle 11g 中导出空表 由于oracle 11g的 延迟段创建的新特性,导致在没有数据插入时,oracle是不会分配数据段的,进而导致exp 是不能导出11g数据库的空表的. 当然采用expdp就不存在这个问题了. expdp hr/hr schemas=hr dumpfile=expdp.dmp directory=dbtest conn hr/hr select TABLE_NAME,NUM_ROWS from user_tables; TABLE_NAME NUM_RO

Oracle11G R2 用exp无法导出空表解决方法

Oracle11G R2 用exp无法导出空表解决方法 作者:吴伟龙  Name:Prudence Woo QQ:286507175 msn:happy-wuweilong@hotmail.com         在11G R2中有个新特性,当表无数据时,不分配segment,以节省空间Oracle当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法:   一.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生seg

[20170315]11.2.0.4 exp可以导出空表.txt

[20170315]11.2.0.4 exp可以导出空表.txt --链接http://www.itpub.net/thread-2084282-1-1.html,11.2.0.4可以使用exp导出空表,没有问题,测试看看.   SCOTT@book> @ &r/ver BANNER -------------------------------------------------------------------------------- Oracle Database 11g Ente

注册表被修改的原因分析和解决方法

注册表被修改的原因分析和解决方法: 其实,该恶意网页是含有有害代码的ActiveX网页文件,这些广告信息的出现是因为浏览者的注册表被恶意更改的结果. 1.IE默认连接首页被修改 IE浏览器上方的标题栏被改成"欢迎访问******网站"的样式,这是最常见的篡改手段,受害者众多. 受到更改的注册表项目为: HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMainStart Page HKEY_CURRENT_USERSoftwareM

jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法_jquery

jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传. 最近在使用jquery.form.js提交包含文件的表单时,碰到了一个问题:当碰上网速较慢时,而我们又设置了timeout时,例如: var options = { timeout: 3000 //限制请求的时间,当请求大于3秒后,跳出请求 } 我们的页面会死在这里,贴上F12开发者工具返回的结果: 此时,我们并没有处理错误的回调函数,而百度出来的例子中也只有这两个回调函数: beforeSubmit: s

win7蓝屏的原因分析及解决方法

蓝屏很多时候都是突然发生的,大多数是发生在你玩游戏的时候.很多时候是由于CPU一下子处理不过来,或者电脑脑脾气了.像中毒.中木马之类的蓝屏现在已经很好很好了,当然除非你的电脑是裸机,这才有可能. 1 如果是在玩游戏或者电脑弄很多东西的时候,蓝屏而且只有一.两次,当然你如果下次还开那么多东西,那么肯定是再次蓝屏了. 一般情况下都是由于CPU超频,或者内存不足,你可以买条大的内存装上去,基本上就没问题了.也有的时候是你电脑太热了导致CPU一直超频,然后蓝屏了. 2 有的时候也有可能是一些软件的不兼容

电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法

  电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法 1.函数调用层次过深,每调用一次,函数的参数.局部变量等信息就压一次栈; 2.局部静态变量体积太大. 解决方法: 1.按win+r打开运行,输入cmd,并按回车; 2.打开命令提示符后,分别输入并执行以下命令: regsvr32 atl.dll regsvr32 shdocvw.dll regsvr32 urlmon.dll regsvr32 browseui.dll regsvr32 oleaut32.dll regsvr32 shel

Win7蓝牙驱动安装失败的原因分析与解决方法

  蓝牙是一种支持设备短距离通信的无线电技术,现在不管是手机还是电脑都已经普遍的使用蓝牙功能了.如果Win7系统电脑没有安装蓝牙驱动的话,是需要安装后才能使用的.最近,有用户在安装蓝牙驱动的时候,发现安装失败.怎么办?出现这样的问题要怎么解决?现在就和大家说一下Win7蓝牙驱动安装失败的原因分析与解决方法. 步骤如下: 一.原因分析: 优化软件将系统INF文件夹自带文件误删了. 二.解决方法: 1.进入C盘系统分区的Windowsinf目录,查看是否有"bth.inf"文件,备注:如果