《SQL 21日自学通(V3.0)(PDF格式)》第113章


的段 
每次扩展的信息 
INPUT 
SQL》 SELECT SUBSTR(SEGMENT_NAME;1;30) SEGMENT_NAME; 
2 SUBSTR(SEGMENT_TYPE;1;12) SEGMENT_TYPE; 
3 BYTES; 
4 EXTENTS; 
5 FROM SYS。DBA_SEGMENTS 
6 WHERE OWNER = "TWILLIAMS" 
7 AND ROWNUM 《 5 
345 
…………………………………………………………Page 346……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
OUTPUT 
SEGMENT_NAME SEGMENT_TYPE BYTES EXTENTS 
INVOICE_TBL TABLE 163840 10 
PLAINT_TBL TABLE 4763783 3 
HISTORY_TBL TABLE 547474996 27 
HISTORY_INX INDEX 787244534 31 
分析 
看一下从 DBA_SEGMENTS 的输出 你可以很容易地通常 EXTENTS 的数字来确定增 
长最多的表的情况 在本例子 HISTORY_TBL 和 HISTORY_INX 的增长要比另外的两个表 
快得多 
现在你可以看一下表每次增长的情况 我们以 INVOICE_TBL 为例 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(OWNER;1;10) OWNER; 
2 SUBSTR(SEGMENT_NAME;1;30) SEGMENT_NAME; 
3 EXTENT_ID; 
4 BYTES 
5 FROM SYS。DBA_EXTENTS 
6 WHERE OWNER = "TWILLIAMS" 
7 AND SEGMENT_NAME = "INVOICE_TBL" 
8 ORDER BY EXTENT_ID 
OWNER SEGMENT_NAME EXTENT_ID BYTES 
TWILLIAMS INVOICE_TBL 0 16384 
TWILLIAMS INVOICE_TBL 1 16384 
TWILLIAMS INVOICE_TBL 2 16384 
TWILLIAMS INVOICE_TBL 3 16384 
TWILLIAMS INVOICE_TBL 4 16384 
TWILLIAMS INVOICE_TBL 5 16384 
TWILLIAMS INVOICE_TBL 6 16384 
TWILLIAMS INVOICE_TBL 7 16384 
TWILLIAMS INVOICE_TBL 8 16384 
TWILLIAMS INVOICE_TBL 9 16384 
分析 
这个例子显求了该表每次的增长 EXTEND_ID 和每次增长的字节大小情况 这里每 
346 
…………………………………………………………Page 347……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
次的增长只有 16K 而且已经增长了 10 次了 你也许应该重建数据库并重新生成表并增加 
initial_extent 的大小以优化空间的使用 重新生成表将可以将表中的数据放放一个单一的片 
断中 所以也就还会有碎片产生了 
空间分配 
ORACLE 是使用数据文件来分配数据库的空间的 空间在逻辑上以表空间的形式存 
在 但是它是以数据文件的物理形式存在于磁盘上的 在许多的解释器中 在数据文件中 
也可直接包括数据 尽管这些文件以能会以其它的名字来引用 视图 DBA_DATA_FILES 
可以让你看到表空间的实际分配 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(TABLESPACE_NAME;1;25) TABLESPACE_NAME; 
2 SUBSTR(FILE_NAME;1;40) FILE_NAME; 
3 BYTES 
4 FROM SYS。DBA_DATA_FILES; 
TABLESPACE_NAME FILE_NAME BYTES 
SYSTEM /disk01/system0。dbf 41943040 
RBS /disk02/rbs0。dbf 524288000 
TEMP /disk03/temp0。dbf 524288000 
TOOLS /disk04/tools0。dbf 20971520 
USERS /disk05/users0。dbf 20971520 
DATA_TS /disk06/data0。dbf 524288000 
INDEX_TS /disk07/index0。dbf 524288000 
分析 
你现在可以看到在数据库中存在的每个表空间实际上被分配了多大的空间 注意数据 
库文件的名称与它所属的表空间是一一对应的 
可用空间 
就像下边的例子所显示的一样 DBA_FREE_SPACE 视图可以告诉你在每个表格空中 
还有多少自由的空间可以使用 
INPUT 
347 
…………………………………………………………Page 348……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SQL》 SELECT TABLESPACE_NAME; SUM(BYTES) 
2 FROM SYS。DBA_FREE_SPACE 
3 GROUP BY TABLESPACE_NAME; 
OUTPUT 
TABLESPACE_NAME SUM(BYTES) 
SYSTEM 23543040 
RBS 524288000 
TEMP 524288000 
TOOLS 12871520 
USERS 971520 
DATA_TS 568000 
INDEX_TS 1288000 
分析 
上边的例子给出的所有的每个表空间的自由空间 如果你只是使用 SELECT 语句而没 
有使用 SUM 函数的话你也会看到每一段的自由空间情况 
ROLLBACK 段 
为事务所预留的 ROLLBACK 区域对数据库的性能影响是非常大的 你需要知道有多 
少的 ROLLBACK 段是可用的 视图 DBA_ROLLBACK_SEGS 可以为你提供这些信息 
INPUT 
SQL》 SELECT OWNER; 
2 SEGMENT_NAME 
3 FROM SYS。DBA_ROLLBACK_SEGS; 
OUTPUT 
OWNER SEGMENT_NAME 
SYS SYSTE
小说推荐
返回首页返回目录