按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
决这个问题你需要将 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 可
以快速地查看所有的表
下边的查询给出了对于特定的数据库都存在哪种类型的对象
技巧 出于测试的目的你可以使用 ROWNUM 来限制查询返回特定数目的行 它与 ROWID
一样可以在任何数据库表和视图中使用
INPUT/OUTPUT
SQL》 SELECT DISTINCT(OBJECT_TYPE)
2 FROM SYS。DBA_OBJECTS;
341
…………………………………………………………Page 342……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
OBJECT_TYPE OBJECT_TYPE
CLUSTER PROCEDURE
DATABASE LINK SEQUENCE
FUNCTION SYNONYM
INDEX TABLE
PACKAGE TRIGGER
PACKAGE BODY VIEW
分析
在上边的查询中 DISTINCT 功能可以让存在于数据库中的对象只出现一次 在数据库
的设计和开发时使用这个查询来发现数据库中都有哪些对象是非常好的
DBA_TABLES 视图给出了关于数据库表和大多数与存储有关的数据库对象的信息
INPUT/OUTPUT
SQL》 SELECT SUBSTR(OWNER;1;8) OWNER;
2 SUBSTR(TABLE_NAME;1;25) TABLE_NAME;
3 SUBSTR(TABLESPACE_NAME;1;30) TABLESPACE_NAME
4 FROM SYS。DBA_TABLES
5 WHERE OWNER = 'JSMITH';
OWNER TABLE_NAME TABLESPACE_NAME
JSMITH MAGAZINE_TBL USERS
JSMITH HOBBY_TBL USERS
JSMITH ADDRESS_TBL SYSTEM
JSMITH CUSTOMER_TBL USERS
分析
除了 ADDRESS_TBL 以外 所有的表都在 USER 表空间中 ADDRESS_TBL 是在系
统表空间中的 因为这是唯一的一个你可能存储于系统表空间中的表 作为 DBA 需要知
道这件事 这个查询对你的帮助不小
JSMITH 应该马上把这个表移到其它符合条件的表空间中去
DBA_SYNONYMS 给出了所有存在于数据库中的同义字的清单