按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
的段
每次扩展的信息
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