Oracle块,区,段
NEXT_EXTENT??? NUMBER????? Y? Size,of the next extent to be allocated to the segment???????????????????????????????????????????????????????????????????? MIN_EXTENTS??? NUMBER????? Y?????????????? Minimum number of extents allowed in the segment????????????????????????????????????????????????????????????????????????????????????? MAX_EXTENTS??? NUMBER????? Y?????????????? Maximum number of extents allowed in the segment????????????????????????????????????????????????????????????????????????????????????? PCT_INCREASE?? NUMBER????? Y? Percent by which to increase the size of the next extent to be allocated????????????????????????????????????????????????????????????? FREELISTS????? NUMBER????? Y? Number of process freelists allocated in this segment???????????????????????????????????????????????????????????????????????????????? FREELIST_GROUPS NUMBER????? Y? Number of freelist groups allocated in this segment?????????????????????????????????????????????????????????????????????????????????? RELATIVE_FNO?? NUMBER????? Y???? Relative number of the file containing the segment header???????????????????????????????????????????????????????????????????????????? BUFFER_POOL??? VARCHAR2(7) Y???? The default buffer pool to be used for segments blocks??????????
从segment_type列的comment信息中,可以看出数据段的类型是多样的。任何种类的数据库对象,本质上都是一种数据段。数据表、索引、回滚、聚集这些都是数据段的一种表现形式。同时,数据段是在数据对象创建的时候就已经创建出来,随着对象体积的增大,而不断分配多个extents进行管理。
另一部分信息可以从dba_segments中读出的,就是该数据对象分配的空间大小和数据块、分区个数。使用这个视图,可以方便的获取到指定schema的所有对象大小。
SQL> select owner,sum(bytes)/1024/1024 as vol,sum(blocks) as totalblocks,sum(extents) as totalextents from dba_segments group by owner having wner=‘SYS‘;
OWNER??????????? VOL TOTALBLOCKS TOTALEXTENTS ------------------------------ ---------- ----------- ------------ SYS??????????????? 585.5????? 74944??????? 3248
上面查询,说明SYS的schema,所占用空间585.5MB,包括74944个数据块和3248个分区。
一个对象创建出来之后,在segment层次上是分配一个分区extent和八个数据块block。
有一个问题需要注意,通常我们的数据段是与数据对象相关。一个数据对象对应一个segment。但是,分区表的时候,一个分区要对应一个segment对象。还有就是,segment对象是可以指定存储在那个表空间里,实现存储划分的基础也就在于此。不同类型的segment划分建立在不同的表空间里,才有可能存放在不同的文件中,最后分布在不同的物理存储。
分区实际上就是存在分开存储的可能。一般一个对象是不会跨物理存储进行存放的,分区表是对应的多个segment。所以,分区表分开存储空间是可能的。
表空间tablespace
TableSpace是存储结构中的最高层结构。建立一个表空间的时候,是需要指定存储的文件。一个表空间可以指定多个数据文件,多个文件可以在不同的物理存储上。也就是说,表空间是可以跨物理存储的。但是有一点就是,表空间下一级对象数据段的存储,是不能指定存储在那个文件里的。所以,要想让数据对象访问IO负载均衡,需要指定不同的数据对象在不同的表空间里。这也就是为什么将数据表和索引建立在不同的表空间的原因。
表空间通过v$tablespace进行访问。
SQL> desc v$tablespace; Name?????????????????????? Type??????? Nullable Default Comments --------------------------- ------------ -------- ------- -------- TS#??????????????????????? NUMBER????? Y??????????????????????? NAME?????????????????????? VARCHAR2(30) Y??????????????????????? INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3) Y??????????????????????? BIGFILE??????????????????? VARCHAR2(3) Y??????????????????????? FLASHBACK_ON?????????????? VARCHAR2(3) Y??????????????????????? ENCRYPT_IN_BACKUP????????? VARCHAR2(3) Y?????????????????????
相对于前面的结构视图,表空间视图的结构要简单的多,只是一些描述信息。其中两个参数需要注意一下。
(编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |