Oracle 11g deferred_segment_creation 段延迟创建

oracle11g新特性,在创建表、索引等对象的时候,oracle不会立即为该对象创建相应的段,而是会在insert的时候,才会创建相应的段,分配区等。

但是 sys用户除外,sys用户创建的对象,会立即为其分配段,区。

sys用户在system表空间创建的任何对象,都立即为其分配区。

此处讨论非sys用户在非system表空间的情况。

scott用户  users表空间

scott:

create table ttt(id  number);


select * from user_segments where segment_name='TTT';

--没有相应的段;


insert into ttt values(2);      --就算此处,我们使用rollback回滚了插入操作,依然会为ttt创建段。


select SEGMENT_NAME from user_segments where segment_name='TTT';

SEGMENT_NAME

TT

可以看出,在oralce 11g中,段并不是立即被创建的。

段的是否立即创建,由参数deferred_segment_creation 控制

                                                                                                                                                              deferred_segment_creation                     boolean     TRUE     


在这种情况下,所有用户中,创建之后没有插入过数据的表,用EXP将无法导出。

但是expdp则不会出现该情况。expdp会导出sechema的所有metedata。

如果像改成立即创建段,可以将deferred_segment_creation改成flase。

alter system set deferred_segment_creation=false scope=both;


或者在创建通过alter table ttt  allocate extent 语句立即为其分配extent:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值