友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第62部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
2 BYTES;
3 MAX_BYTES
4 FROM SYS。DBA_TS_QUOTAS
5 WHERE USERNAME = 'JSMITH'
TABLESPACE_NAME BYTES MAX_BYTES
DATA_TS 134111232 …1
INDEX_TS 474390528 …1
分析
JSMITH 对于可供他访问和使用的表空间是没有限制的 在这种情况下空间的使用是
本着先入为主的原则进行的 举例来说 如果 JSMITH 在 DATA_TS 中使用了所有的表空
间 那么其它的用户就不能在这里创建对象了
数据库的生长
在这一部分有两个视图可以对管理数据库的生长情况进行控制 它 们 是
DBA_SEGMENTS 和 DBA_EXTENTS DBA_SEGMENTS 提供了关于每一段或数据对象
如存储分配 空间使用和扩展的信息 每次当表和索引的增长超过了预先的指定就会开始
下一次的扩展 采用这种方法增长的表通常会有碎片的产生 DBA_EXTENTS 则给出的段
每次扩展的信息
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 SYSTEM
SYS R0
SYS R01
SYS R02
SYS R03
SYS R04
SYS R05
348
…………………………………………………………Page 349……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
分析
这个例子中通过运行一个简单的查询列出的所有 ROLLBACK 段的名字 其实它还有
更多的对你有用的数据
动态执行视图
ORACLE 的数据库管理经常会访问动态执行视图因为它对提供了比其它的数据字典视
图更为详细的对内部性能的量度 在 DBA 视图中也包括了一些相同的信息
这些视图涉及到了相当多的细节 — — 依据特定的解释器而定 这一部分给出在数据字
典中包括的大体上的信息
会话信息
对 VSEEEION 视图执行 DESCRIBE 在第 20 天的 SQL*PLUS 中会详细讨论 命
令 你可以看到这个视图中的详细内容
INPUT
SQL》 DESCRIBE VSESSION
OUTPUT
Name Null? Type
SADDR RAW(4)
SID NUMBER
SERIAL# NUMBER
AUDSID NUMBER
PADDR RAW(4)
USER# NUMBER
USERNAME VARCHAR2(30)
MAND NUMBER
TADDR VARCHAR2(8)
LOCKWAIT VARCHAR2(8)
STATUS VARCHAR2(8)
SERVER VARCHAR2(9)
SCHEMA# NUMBER
SCHEMANAME VARCHAR2(30)
OSUSER VARCHAR2(15)
349
…………………………………………………………Page 350……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Name Null? Type
PROCESS VARCHAR2(9)
MACHINE VARCHAR2(64)
TERMINAL VARCHAR2(10)
PROGRAM VARCHAR2(48)
TYPE VARCHAR2(10)
SQL_ADDRESS RAW(4)
SQL_HASH_VALUE NUMBER
PREV_SQL_ADDR RAW(4)
PREV_HASH_VALU NUMBER
E
MODULE VARCHAR2(48)
MODULE_HASH NUMBER
ACTION VARCHAR2(32)
ACTION_HASH NUMBER
CLIENT_INFO VARCHAR2(64)
FIXED_TABLE_SEQ NUMBER
UENCE
ROW_WAIT_OBJ# NUMBER
ROW_WAIT_FILE# NUMBER
ROW_WAIT_BLOC NUMBER
K#
ROW_WAIT_ROW# NUMBER
LOGON_TIME DATE
LAST_CALL_ET NUMBER
如果你想得到关于当前数据库的会话信息 你可以对 VSESSION 写像下边这样的一
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!