江湖开发者 | Java粉
网站地图
首页> 数据库> ​11g新特性延时段导致空表无法导出
2017
02-23

​11g新特性延时段导致空表无法导出

11g新特性'延时段'导致空表无法导出


客户端是10g的,服务端oracle是11g,使用exp导出表时,发现好多表没有导出来,查到这些表都是空表。

查看空表sql

select table_name from user_tables where NUM_ROWS=0;

对比空表和有数据的表的区别

SELECT T.TABLE_NAME, T. TABLESPACE_NAME,T.* FROM USER_TABLES T  where T.table_name   IN ('BS_T_WF_EVENTDEF','BS_T_WF_ENTRY','BS_T_BPP_F_ROLLBACKLIST')

空表的 MAX_EXTENTS 是null

1.png


这是因为11g新特性 延时段:

在oracle11g中,每张表在起初创建时,默认是不分配区段给此对象。当首次插入数据时,会分配对应的区段。

        对应控制参数为deferred_segment_creation=true 

        如果要保持跟低版本保持一致的属性,可以设定此参数值为flase

        alter system set deferred_segment_creation=false scope=both;

        在后续创建的新表中,会默认分配区段。


解决方法: 生成为空表分配空间的sql,然后执行一下就可以。

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

执行之后再查一下MAX_EXTENTS.

2.png



Java江湖     
全部评论:

表情验证码,看不清楚,换一张

随机文章

云标签

公众号

微信

分享:分享我们的知识;专注:专注个人技术的提升;