关于延迟段创建-P1

1 疑问点

P1页有句话说道:

在Oracle 11.2.0.3.0以上版本中,创建新表时默认一个区都不会分配。

其实SYS用户是不遵循这个规则的。

2 环境创建

以版本11.2.0.4.0为例子。

2.1 创建用户

授权,创建表空间,更改默认表空间。

SYS@zkm1> create user zkm identified by oracle;

User created.

SYS@zkm1> grant dba to zkm;

Grant succeeded.

SYS@zkm1> create tablespace tbs1 datafile '+data' size 10m;

Tablespace created.

SYS@zkm1> alter user zkm default tablespace tbs1;

User altered.

2.2 创建表test

新的用户zkm和sys用户下均创建表test。

SYS@zkm1> create table test(id int);

Table created.

SYS@zkm1> create table zkm.test(id int);

Table created.

SYS@zkm1> desc test
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)

SYS@zkm1> desc zkm.test
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)

2.3 查看表的段信息

可以看到用户sys的表没有遵循延迟段创建的规则。

SYS@zkm1> set linesize 500
SYS@zkm1> select owner,segment_name from dba_segments where owner in ('SYS','ZKM') and segment_name='TEST';

OWNER                          SEGMENT_NAME
------------------------------ ---------------------------------------------------------------------------------
SYS                            TEST

SYS@zkm1> insert into zkm.test values(1);

1 row created.

SYS@zkm1> select owner,segment_name from dba_segments where owner in ('SYS','ZKM') and segment_name='TEST';

OWNER                          SEGMENT_NAME
------------------------------ ---------------------------------------------------------------------------------
ZKM                            TEST
SYS                            TEST

SYS@zkm1> commit;

Commit complete.

2.4 延迟段创建相关参数

默认是启用的,可以动态修改为禁用后,只对修改后的表起作用。
对于已经延迟段创建并且还没有insert过数据的表,exp是不导出这些表的,expdp则不受影响。

SYS@zkm1> show parameter deferred_segment_creation

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE
SYS@zkm1> alter system set deferred_segment_creation=false sid='*' scope=both;

System altered.

SYS@zkm1> create table zkm.test1(id int);

Table created.

SYS@zkm1> select owner,segment_name from dba_segments where owner='ZKM' and segment_name='TEST1';

OWNER                          SEGMENT_NAME
------------------------------ ---------------------------------------------------------------------------------
ZKM                            TEST1
posted @   PiscesCanon  阅读(237)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示