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

设置字体大小:

DBA_SYNONYMS 给出了所有存在于数据库中的同义字的清单 DBA_SYNONYMS 
给出了所有数据库用户的同义字清单 与 USER_SYNONYMS 不同 — — 它只是给出了当前 
用户私有的同义字 
INPUT/OUTPUT 
SQL》 SELECT SYNONYM_NAME; 
342 
…………………………………………………………Page 343……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
2 SUBSTR(TABLE_OWNER;1;10) TAB_OWNER; 
3 SUBSTR(TABLE_NAME;1;30) TABLE_NAME 
4 FROM SYS。DBA_SYNONYMS 
5 WHERE OWNER = "JSMITH"; 
SYNONYM_NAME TAB_OWNER TABLE_NAME 
TRIVIA_SYN VJOHNSON TRIVIA_TBL 
分析 
下边的例子表时 JSMITH 有对 VJOHNSON 所有的 TRIVIA_TBL 表有一个名字叫 
TRIVIA_SYN 的同义字 
现在假设你想得到所有的 JSMITH 的表和索引的清单 你也许会写出像下边这样的查 
询 它使用了 DBA_INDEXS 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(TABLE_OWNER;1;10) TBL_OWNER; 
2 SUBSTR(TABLE_NAME;1;30) TABLE_NAME; 
3 SUBSTR(INDEX_NAME;1;30) INDEX_NAME 
4 FROM SYS。DBA_INDEXES 
5 WHERE OWNER = "JSMITH" 
6 AND ROWNUM 《 5 
7 ORDER BY TABLE_NAME; 
TBL_OWNER TABLE_NAME INDEX_NAME 
JSMITH ADDRESS_TBL ADDR_INX 
JSMITH CUSTOMER_TBL CUST_INX 
JSMITH HOBBY_TBL HOBBY_PK 
JSMITH MAGAZINE_TBL MAGAZINE_INX 
分析 
像上边这样一个很容易的查询可以给出一个计划 工程 和与之相中所使用的表 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(TABLE_NAME;1;15) TABLE_NAME; 
2 SUBSTR(INDEX_NAME;1;30) INDEX_NAME; 
3 SUBSTR(COLUMN_NAME;1;15) COLUMN_NAME; 
4 COLUMN_POSITION 
343 
…………………………………………………………Page 344……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
5 FROM SYS。DBA_IND_COLUMNS 
6 WHERE TABLE_OWNER = "JSMITH" 
7 AND ROWNUM 《 10 
8 ORDER BY 1;2;3 
TABLE_NAME INDEX_NAME COLUMN_NAME COLUMN_POSITION 
ADDRESS_TBL ADDR_INX PERS_ID 1 
ADDRESS_TBL ADDR_INX NAME 2 
ADDRESS_TBL ADDR_INX CITY 3 
CUSTOMER_TBL CUST_INX CUST_ID 1 
CUSTOMER_TBL CUST_INX CUST_NAME 2 
CUSTOMER_TBL CUST_INX CUST_ZIP 3 
HOBBY_TBL HOBBY_PK SAKEY 1 
MAGAZINE_TBL MAGAZINE_INX ISSUE_NUM 1 
MAGAZINE_TBL MAGAZINE_INX EDITOR 2 
现在你已经选择一在每一个表中的索引过的列并根据索引出现的次序进行了排序 你 
已经学习了表 但是如何才能更好地把握表呢 表空间比表和索引之类的对象更高级 表 
空间是 ORACLE 为数据库分配空间的机制 要分配空间 你必须知道当前有多少空间可供 
使用 你可以对 DBA_TABLESPACES 视图执行一个查询来查看所有的表空间以及它们的 
状态 如下例所示 
INPUT/OUTPUT 
SQL》 SELECT TABLESPACE_NAME; STATUS 
2 FROM SYS。DBA_TABLESPACES 
TABLESPACE_NAME STATUS 
SYSTEM ONLINE 
RBS ONLINE 
TEMP ONLINE 
TOOLS ONLINE 
USERS ONLINE 
DATA_TS ONLINE 
INDEX_TS ONLINE 
分析 
上边的例子告诉了你当前有多少表空间处于在线状态 也就是说它对于你来说是可用 
的 如果它是离线状态 那么在它之中的数据库对象 也就是表 将是不可访问的 
344 
…………………………………………………………Page 345……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
那么对于 JSMITH 来说有多少配额可供他访问呢 也就是说 对于 JSMITH 来说他可 
以使用多少空间来存储数据库对象呢 
INPUT/OUTPUT 
SQL》 SELECT TABLESPACE_NAME; 
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 
小说推荐
返回首页返回目录