在Oracle中,下列SQL语句共创建了多少个段?
CREATE TABLE TEST_SEG_LHR(ID NUMBER PRIMARY KEY,NAME VARCHAR2(5),MESG CLOB);
创建了0个或4个段。
如果数据库环境是Oracle 11g,且参数DEFERRED_SEGMENT_CREATION的值为TRUE(默认为TRUE,表示开启了延迟段创建),那么这个时候上面的SQL语句不会创建任何段。
如果数据库环境是Oracle 10g或者数据库环境是Oracle 11g且数据库参数DEFERRED_SEGMENT_CREATION设置为FALSE,那么题目中的SQL语句将会创建4个段,分别为1个TABLE类型的段,1个索引段(有主键),一个LOB段(字段里包含CLOB类型),一个LOB索引段(CLOB类型的字段会自动创建其对应的索引段)。
下面给出示例:
SQL> SELECT * FROM V$VERSION WHERE ROWNUM<=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SQL> CREATE TABLE TEST_SEG_LHR(ID NUMBER PRIMARY KEY,NAME VARCHAR2(5),MESG CLOB);
Table created.
SQL> SELECT COUNT(1) FROM USER_SEGMENTS;
COUNT(1)
----------
0
SQL> SHOW PARAMETER DEFERRED_SEGMENT_CREATION
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
SQL> INSERT INTO TEST_SEG_LHR(ID,NAME) VALUES(1,'a');
1 row created.
SQL> SELECT COUNT(1) FROM USER_SEGMENTS;
COUNT(1)
----------
4
SQL> SET LINE 9999
SQL> SELECT SEGMENT_NAME,SEGMENT_TYPE FROM USER_SEGMENTS;
SEGMENT_NAME SEGMENT_TYPE
-------------------------------- ------------------
TEST_SEG_LHR TABLE
SYS_IL0000077657C00003$$ LOBINDEX
SYS_C0011600 INDEX
SYS_LOB0000077657C00003$$ LOBSEGMENT
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。




