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


JSMITH MAGAZINE_TBL DELETE 
JSMITH SPORTS SELECT 
JSMITH SPORTS INSERT 
JSMITH SPORTS UPDATE 
JSMITH SPORTS DELETE 
VJOHNSON TEST1 SELECT 
VJOHNSON TEST1 INSERT 
VJOHNSON TEST1 UPDATE 
VJOHNSON TEST1 DELETE 
VJOHNSON HOBBIES SELECT 
VJOHNSON CLASSES SELECT 
分析 
如你所见 你可以操纵在一些表中的数据 然后对于其它的一些表你则只拥有只读访 
问权限 
当你创建一个对象的时候 如果你不想把它存于默认的地点你通常需要知道你可以把 
336 
…………………………………………………………Page 337……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
它存放于何处 ORACLE 的表空间的分散的 它们中的每一个都可以存储对象 每一个表 
空间都被分配了一定数据的磁盘空间 这要根据你的系统的可用性而定 磁盘空间通常是 
从数据管理员处获得的 
下面的查询是从一个叫 USER_TABLESPACES 的视图中进行查询的 它会给出你访问 
的表空间 分配对象的初始大小和它们的下一个大小以及它们的状态 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(TABLESPACE_NAME;1;30) TABLESPACE_NAME; 
2 INITIAL_EXTENT; 
3 NEXT_EXTENT; 
4 PCT_INCREASE; 
5 STATUS 
6 FROM USER_TABLESPACES 
TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT PCT_INCREASE STATUS 
SYSTEM 32768 16384 1 ONLINE 
RBS 2097152 2097152 1 ONLINE 
TEMP 114688 114688 1 ONLINE 
TOOLS 32768 16384 1 ONLINE 
USERS 32768 16384 1 ONLINE 
分析 
这在当你创建一个需要存储空间的对象如表和索引时 这个查询是非常有用的 当表 
或查询建立以后 如果没有在 DDL 中指定它的初始和后续存储参数 这些表和索引会采 
用这些数值的默认值 相同的概念也可以应用于 PCT INCREASE 它是一个 ORACLE 参 
数用以指定当一个对象的大小在增长时为它分配空间的百分比 如果当表和索引在创建是 
没有指定这个数值 数据库服务程序会为它分派默认的数值 通过查看这些默认值你可以 
决定是否应该在创建表和索引时使用存储子句来指定它的初始及后续大小 
但是在有些时候 你需要对你访问的表空间知道得更多 那就是在底层生成一个表的 
时候 例如 你需要知道你在表空间方面所受的限制以使你可以更好地创建和组合你的对 
象 USER_TS_QUOTAS 视图会提供你所需要的信息 下边的查询给出了在数据库中创建 
对象时用户空间的限制 
INPUT/OUTPUT 
SQL》 SELECT SUBSTR(TABLESPACE_NAME;1;30) TABLESPACE_NAME; 
337 
…………………………………………………………Page 338……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
2 BYTES; MAX_BYTES 
3 FROM USER_TS_QUOTAS; 
TABLESPACE_NAME BYTES MAX_BYTES 
SYSTEM 0 0 
TOOLS 5242880 16384 
USERS 573440 …1 
分析 
上边的输出是典型的从 ORACLE 数据字典中的输出 以字节的形式给出了可由用户支 
配的表空间 MAX_BYTES 给出了用户配额的最大值 在这一列中的头两个数据无需说明 
在第三列中的…1 的意思是最大值不受限制 也就是说用户使用的表空间没有最大限制 
注 在 SUBSTR 函数中出现了许多上边的查询中的数据字典视图 在数据返回后你可以使 
用许多你以前学过的函数来对返回的数据进行控制以使其更具有可读性 你也可以对 
你所返回数据的输出长度进行限制 就像我们在这些例子中所做的那样 
所有的这些例子给出的常规的用户如何从数据字典中取得有用的信息 这些视图只是 
存在于 ORACLE 数据字典中的很少的一部分 检查你的数据库解释器以看它是否在你的数 
据库字典中可用是非常重要的 切记 你应该使用数据字典来管理你的数据库 尽管对于 
不同的数据库系统目录是不相同的 你只需要明白这个概念以及如何取得你所需要的数据 
来支持你的工作就行了 
系统数据库管理员视图 
在 ORACLE 数据字典中 DBA 视图通常是最为重要的 在大多数情况下它是由 DBA 
来访问的 这些视图对于 DBA 来说是至关重要的 如果 DBA 没有这些视图就如何木匠没 
有的锤子 
如你所料 你必须具有 SELECT_ANY_TABLE 的系统权限才能访问这些表 该权限包 
含在 DBA 规则中 例如 如果你是 JSMITH 那么你就没有访问 DBA 表的权限 
INPUT 
SQL》 SELECT * 
2 FROM USER_ROLE_PRIVS 
OUTPUT 
USERNAME GRANTED_ROLE ADM DEF OS_ 
338 
…………………………………………………………Page 339……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
JSMITH CONNECT NO YES NO 
JSMITH RESOURCE NO YES NO 
INPUT/OUTPUT 
SQL》 SELECT * 
2 FROM SYS。DBA_ROLES; 
FROM SYS。DBA_ROLES; 
ERROR at line 2: 
ORA…00942: table or view does not exist 
分析 
如果你没有得到合适的权限却想访问这些表 那么返回的错误会说这个表不存在 这 
个信息容易让人产生误解 事实上这个表不存在是因为该用户不能 看到 这个表 要解 
决这个问题你需要将 DBA 规则应用于 JSMITH 当然这必须要得到 DBA 的许可 
小说推荐
返回首页返回目录