首页 > 数据库 > Oracle > 数据库逻辑结构:表空间、段、区、块的字典
这里讲查看的是数据库逻辑结构中表空间、段、区、块相关的字典信息。其中数据库database是数据库中
最大的一个逻辑结构,往下分的就是表空间(tablespace)、段(segment)、区(extent)、块(block),
上一篇博文中已经提到了database的字典。一个数据库由多个表空间构成,一个表空间由一个或多个段构成,
一个段由多个区构成,一个区由多个块构成,一个数据库块由多个操作系统块构成,数据块的大小由创建数据库
的时候设定,大小不一,默认情况下是8192 bytes的大小。
----数据库逻辑结构相关的字典:
---查看表空间tablespace:
sys@PROD>select * from dba_tablespaces;
sys@PROD>select * from dba_tablespace_groups;
sys@PROD>select * from user_tablespaces;
sys@PROD>select * from v$tablespace;
---查看表空间权限相关信息:
desc dba_ts_quotas --使用的视图
Desc user_ts_quotas --使用的视图
---查看表空间的空闲信息:
Select * from dba_free_space;
SQL> desc dba_free_space;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLESPACE_NAME VARCHAR2(30)
FILE_ID NUMBER
BLOCK_ID NUMBER
BYTES NUMBER
BLOCKS NUMBER
RELATIVE_FNO NUMBER
---查看段信息:
SELECT * FROM DBA_SEGMENTS;
SELECT * FROM USER_SEGMENTS;
SELECT * FROM V$SORT_SEGMENT;
---查看区信息:
select * from dba_EXTENTS;
select * from user_EXTENTS;
susu@PROD>select SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,
2 BYTES,BLOCKS from user_extents;
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS
-------------------- ------------------ ------------------------------ ---------- ----------
T_LOCK TABLE USERS 65536 8
TEST TABLE USERS 65536 8
... ...
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS
-------------------- ------------------ ------------------------------ ---------- ----------
TEST TABLE USERS 1048576 128
TEST TABLE USERS 1048576 128
SUTAB TABLE USERS 65536 8
#在比较大的段里面,不是所有的区的大小都是一样的,但是各个区的大小都是最基本区的整数倍。
最大的段最多只能由128个块构成,可由以下中查看块的信息系中说到。
---查看块信息:
select value from v$parameter where name='db_block_size';
或者:
sys@PROD>show parameter block
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TYPICAL
db_block_size integer 8192
db_file_multiblock_read_count integer 128
sys@PROD>
#理论上,最大db_file_multiblock_read_count和系统IO能力应该有如下关系:
Max(db_file_multiblock_read_count) = MaxOsIOsize/db_block_size。所以这里
就很好解释以上查看段信息的时候遇到的情况:
--susu@PROD>select SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,
-- 2 BYTES,BLOCKS from user_extents;
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS
-------------------- ------------------ ------------------------------ ---------- ----------
T_LOCK TABLE USERS 65536 8
TEST TABLE USERS 65536 8
... ...
SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS
-------------------- ------------------ ------------------------------ ---------- ----------
TEST TABLE USERS 1048576 128
TEST TABLE USERS 1048576 128
SUTAB TABLE USERS 65536 8
#在比较大的段里面,不是所有的区的大小都是一样的,但是各个区的大小都是最基本区的整数倍。
最大的段最多只能由128个块构成,可由以下中查看块的信息系中说到。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2131220/ ,如需转载,请注明出处,否则将追究法律责任。