查看: 8614|回复: 30

[备份恢复] 【大话IT】Oracle 11G在用EXP 导出时,空表不能导出?

[复制链接]
论坛徽章:
1
优秀写手
日期:2014-12-12 06:00:15
发表于 2015-1-7 18:28 | 显示全部楼层 |阅读模式
按照网上说的:   在sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

   1、先查询一下当前用户下的所有空表

select table_name from user_tables where NUM_ROWS=0;


        2、用以下这句查找空表

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0


都执行了,但是导出还和原来一样,到底是怎么回事啊?请高手分析指点一下!
论坛徽章:
1
优秀写手
日期:2014-12-12 06:00:15
 楼主| 发表于 2015-1-7 20:05 | 显示全部楼层
没人知道吗

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-1-7 21:31 | 显示全部楼层
網站上都是騙人的!!

在11g會遇到使用exp時,默認無法導出空表。導入時也無法指定表空間。
查看是否能導出空表
show parameter deferred_segment_creation
deferred_segment_creation=TRUE表示空表不創建數據段,這是就不能導出表了。
只有在這個參數設置為FALSE後新建的表才能導出。
ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE;  --  (但是已經存在資料表不適用。)

解決方法一: 給空表增加一條記錄,然後再刪除,然後就能導出了。

解決方法二: CREATE TABLE 加上 SEGMENT CREATION IMMEDIATE 預設是 SEGMENT CREATION DEFERRED 建立後沒得改。
CREATE TABLE "TEST"."HI"
( "GOGO" VARCHAR2(16) DEFAULT NULL,
  "CODE" VARCHAR2(30)
) SEGMENT CREATION IMMEDIATE;
但是已經存在資料表不適用,基本沒概念也不會知道有這樣差異。

解決方法三: ALTER TABLE TEST.HI ALLOCATE EXTENT;
需要取得有需要,不然EXTENT空間會無限大。
可查詢方式
select DT.OWNER, DT.TABLE_NAME from dba_tables dt WHERE DT.OWNER = v_owner and (DT.MIN_EXTENTS is null or DT.MAX_EXTENTS is null );
這個方法比較好。
BLOCKS_ZERO_PLSQL.SQL (2.61 KB, 下载次数: 27)

使用道具 举报

回复
论坛徽章:
36
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48马上有对象
日期:2014-02-18 16:44:08马上有车
日期:2014-03-31 09:57:52马上有房
日期:2014-08-04 20:04:35青年奥林匹克运动会-游泳
日期:2014-09-23 16:31:11祖国65周年纪念徽章
日期:2014-10-08 16:56:53马上有对象
日期:2014-10-17 10:14:07马上加薪
日期:2015-01-20 09:20:262015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
发表于 2015-1-8 09:03 | 显示全部楼层
11g 新特性 延时段

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-12-12 06:00:15
 楼主| 发表于 2015-1-9 16:10 | 显示全部楼层
taomct 发表于 2015-1-7 21:31
網站上都是騙人的!!

在11g會遇到使用exp時,默認無法導出空表。導入時也無法指定表空間。

好像不行啊,兄弟联系方式是什么帮忙看看

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
33
生肖徽章2007版:狗
日期:2009-07-20 17:10:18茶鸡蛋
日期:2013-05-23 16:34:43茶鸡蛋
日期:2013-07-19 14:39:22ITPUB社区千里马徽章
日期:2013-08-22 09:58:03雪铁龙
日期:2013-08-23 13:04:11林肯
日期:2013-09-04 14:07:20兰博基尼
日期:2013-09-16 13:45:20马上有钱
日期:2014-05-14 14:07:392014年世界杯参赛球队: 波黑
日期:2014-07-03 13:24:39马上有对象
日期:2014-10-30 14:04:32
发表于 2015-1-9 16:19 | 显示全部楼层
楼主修改deferred_segment_creation=false后,之前创建的空表最好插入一条记录再删除或删除表后重新建表。当然楼主可以使用数据泵EXPDP导出数据,就不存在导出空表时报错的问题。

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:狗
日期:2008-11-17 11:15:41
发表于 2015-1-9 17:08 | 显示全部楼层
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

生成的alter语句需要执行

另外使用expdp 更好一些,需要与时俱进了 expdp比exp好用很多

使用道具 举报

回复
论坛徽章:
189
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
发表于 2015-1-9 17:11 | 显示全部楼层
问题仅仅存在11.1.版本,11.2没有,你可以分配段,就没有这个问题了。

使用道具 举报

回复
论坛徽章:
3
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18天蝎座
日期:2016-05-14 12:00:32
发表于 2015-1-9 21:28 | 显示全部楼层
bangde414 发表于 2015-1-9 16:10
好像不行啊,兄弟联系方式是什么帮忙看看

忘了提醒要修改 BLOCKS_ZERO_PLSQL.SQL
user OWNER
line 17: WHERE DT.OWNER IN ('ATEST','BTEST')
line 37: WHERE DT.OWNER IN ('ATEST','BTEST')
line 43: WHERE DE.OWNER IN ('ATEST','BTEST')
改成你要的 OWNER IN (exp user owner ...)

使用道具 举报

回复
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:07:272011新春纪念徽章
日期:2011-02-18 11:42:50ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
发表于 2015-1-9 21:36 | 显示全部楼层
1、先查询一下当前用户下的所有空表

select table_name from user_tables where NUM_ROWS=0; 这句话有问题,我看了,NUM_ROWS有为 null 的。写成
select table_name from user_tables where NUM_ROWS=0 or  num_rows is null; --就可以了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表