欢迎投稿

今日深度:

Oracle 中deferred_segment_creation 的用法以及exp时解决

Oracle 中deferred_segment_creation 的用法以及exp时解决办法,oraclesegment


SYS@ORCL>show parameter segment

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE
rollback_segments                    string
transactions_per_rollback_segment    integer     5

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

查看sql语句,是否已经分配空间;
select dbms_metadata.get_ddl('TABLE','T1') from dual;
   --设置输出格式(set long 99999)

deferred_segment_creation在11.2.0.4版本的Oracle数据库新增参数,默认是true。

这会导致在exp时,没有segment的对象不会导出。

解决:

(1)设置deferred_segment_creation的值为false
     此方法只对以后的表有效,之前的表还是没分配空间。

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

     create table table_name segment creation immediate;

(3)对于已经创建但是还没有Segment的表来说,
   可以执行alter table table_name allocate extent来使其创建出分配空间,
   当然也可以插入一条数据,使其创建分配空间;


Oracle 11g怎没有deferred_segment_creation

这是11gR2的新特性、你的莫非是11gR1版本?

select version from v$instance;
 

oracle数据导入导出问题解

1、EXP/IMP 会忽略“空表”操作,如果你想对空表也操作,可以使用EXPDP/IMPDP命令实现,用法和EXP/IMP差不多,只是使用之前要建立个目录!

【相关知识扩展--------------只为分享,共同成长】
ORACLE 11g
新增了一个参数:deferred_segment_creation,默认值是
true。具体是如果deferred_segment_creation为true,当新建表并且没有向其中插入数据的时候,这个表不会立即分配
extent,即不占数据空间,只有insert数据后才分配空间,这样做可以节省少量的空间!为了防止再次出现EXP/IMP导出表不全,所以在使用11g时,把这个参数默认设置为“false”!
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3332.html NewsArticle Oracle 中deferred_segment_creation 的用法以及exp时解决办法,oraclesegment SYS@ORCLshow parameter segment NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ deferred_segment_creation b...
评论暂时关闭