签到成功

知道了

CNDBA社区CNDBA社区

oracle deferred_segment_creation参数

2022-07-06 22:01 1185 0 原创 oracle
作者: hbhe0316

一、导入时少表
1.Oracle EXP导出,再IMP导入时,发现导入后,出现少表,有一些数据为空的表结构没有被导入,原因是于导出时,这些空表没有被导出。http://www.cndba.cn/hbhe0316/article/108525

SQL> show parameter deferred_segment_creation;

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
deferred_segment_creation            boolean                           TRUE

deferred_segment_creation参数,在11.2.0.4g才有的参数,
创建一个表,在没有插入数据时是否分配空间,为true时,不分配空间,但在sys用户下不支持;
deferred_segment_creation=ture;
1.在sys用户下,创建一个没有数据的表时,同时自动分配空间;
2.在普通用户下,创建一个没有数据的表时,不会分配空间;http://www.cndba.cn/hbhe0316/article/108525

查看sql语句,是否已经分配空间;http://www.cndba.cn/hbhe0316/article/108525

select dbms_metadata.get_ddl('TABLE','T1') from dual;

deferred_segment_creation在11.2.0.4版本的Oracle数据库新增参数,默认是true。
这会导致在exp时,没有segment的对象不会导出。http://www.cndba.cn/hbhe0316/article/108525

解决:
1.设置deferred_segment_creation的值为false
此方法只对以后的表有效,之前的表还是没分配空间http://www.cndba.cn/hbhe0316/article/108525

http://www.cndba.cn/hbhe0316/article/108525

2.创建表的时候声明立即创建Segment

create table tablename segment creation immediate;

3.对于已经创建但是还没有Segment的表来说,
可以执行http://www.cndba.cn/hbhe0316/article/108525http://www.cndba.cn/hbhe0316/article/108525

alter table tablename allocate extent

来使其创建出分配空间,当然也可以插入一条数据,使其创建分配空间;http://www.cndba.cn/hbhe0316/article/108525http://www.cndba.cn/hbhe0316/article/108525

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1040690次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ