按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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 的许可
数据库用户信息
USER_USER 与 ALL_USER 视图将会给你最少的关于用户的信息 DBA 视图被称为
DBA_USERS 它为 SYS 所拥有 所有的关于所有用户的信息 前提是你有 DBA 规则或
SELECT_ANY_TABLE 权限 如下例如示
INPUT
SQL》 SELECT * FROM SYS。DBA_USERS;
OUTPUT
USERNAME USER_ID PASSWORD DEFAULT_TABLESPACE
SYS 0 4012DA490794C16B SYSTEM
JSMITH 5 A4A94B17405C10B7 USERS
实际为一个表格 这里由于排版需要改为两个
USERNAME TEMPORARY_TABLESPACE CREATED PROFILE
SYS TEMP 06…JUN…96 DEFAULT
JSMITH TEMP 06…JUN…96 DEFAULT
分析
当你选择了 DBA_USERS 视图中的所有内容 你会看到对于每个用户来说至为重要的
信息 注意这里的 PASSWORD 是经过加密处理的 这个视图是 DBA 管理其它用户的重要
339
…………………………………………………………Page 340……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
视图
数据库安全
在数据字典中有三个基本的视图与数据库安全相关的 尽管想得到完整的信息你必须
还要查阅其它相关的信息 这三个视图与数据库的规则 规则对用户的授权以及系统权限
对用户的授权相关 这三个视图会在 DBA_ROLES DBA_ROLE_PRIVS 和DBA_SYS_PRIVS
这三个部分中介绍 下边的查询显示了如何去获得相关的数据库安全信息
INPUT
SQL》 SELECT * FROM SYS。DBA_ROLES;
OUTPUT
ROLE PASSWORD
CONNECT NO
RESOURCE NO
DBA NO
EXP_FULL_DATABASE NO
IMP_FULL_DATABASE NO
END_USER_ROLE NO
分析
视图 DBA_ROLES 给出了所有在数据库中创建的规则的信息 它给出的规则的名字以
及规则是否存在密码
INPUT
SQL》 SELECT *
2 FROM SYS。DBA_ROLE_PRIVS
3 WHERE GRANTEE = 'RJENNINGS'
GRANTEE GRANTED_ROLE ADM DEF
RJENNINGS CONNECT NO YES
RJENNINGS DBA NO YES
RJENNINGS RESOURCE NO YES
分析
DBA_ROLE_PRIVS 给出的关于赋给用户的数据库规则的信息 第一列为被授权人
第二列显示了被授予的规则 注意 对用户所授予的每一个规则都会占用表中的一个记录
340
…………………………………………………………Page 341……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
ADM 通过后边的 ADM 选项来确定这个规则是否是允许的 也就是说该用户是否有权将该
规则授予其它的用户 最后一列为默认 表明这个规则是否是用户的默认规则
分析
DBA_SYS_PRIVS 给了所有授予用户的系统权限 这个视图与 DBA_ROLE_PRIVS 视
图类似 你可以通过把系统权限授予规则来把这些系统权限包括在规则中 就像你是一个
用户一样
数据库对象
数据库对象是 DBA 所关心了又一个重要内容 在数据字典中有几个视图提供了有关
数据库对象如表和索引的信息 通常这些视图你可以获得常用的信息或详细的信息
INPUT
SQL》 SELECT *
2 FROM SYS。DBA_CATALOG
3 WHERE ROWNUM 《 5;
OUTPUT
OWNER TABLE_NAME TABLE_TYPE
SYS CDEF TABLE
SYS TAB TABLE
SYS IND TABLE
SYS CLU TABLE
分析
DBA_CATALOG 所做的事与 USER_CATALOG 是一样的 只显示了所有者的表 与
之相对比 USER_CATALOG 则用于显示当前用户的表 用 DBA_CATALOG 视图 DBA 可
以快速地查看所有的表
下边的查询给出了对于特定的数