按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
系统工程师是有着创建和设计数据库的模块 应用程序的开发以及应用程序的管理任
务的用户 在一些公司中会使用另外一种称呼 如程序员 程序分析员 数据模块师来称
呼他们的系统工程师 系统工程师是直接地使用数据字典来管理和开发过程的 当访问一
个已经存在的工程的时候 访问也可以通过数据库前终应用程序 开发工具以及计算机工
程帮助工具来获得 对于这些用户来说常用的系统目录是查询处于他的计划组中的模块
查询应用任务及权限和查询模块开发情况的统计 在特定的计划中系统工程师也可以将数
据字典应用于系统工程师的专用对象上
数据库管理员 DBAS 是数据字典中所定义的具有最大权限的用户 与其它的两组
用户偶而也会使用系统目录不同 DBAS 将使用数据字典作为他们的日常工作 访问通常
是通过查询的 但也可以通过数据库管理工具如 ORACLE 的 SERVER MANGER DBA 使
用数据字典中的信息来管理用户和资源以达到数据库优化运行的目的
如你所见 所有的数据库用户都需要使用数据字典 更为重要的是 关系型数据库系
统没有数据字典就无法存在了
数据字典中的内容
这一部分使用两种关系型数据库系统的系统目录 Oracle 和 Sybase 的 尽管这两种数
329
…………………………………………………………Page 330……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
据库系统都有着他自己的特点 但是他们提供的功能是相同的 不要关心它们在名字上的
不同 你只要明白数据字典的概念和它的内容就行了
Oracle 的数据字典
由于每一个表都必须有一个所有者 系统目录在数据字典中的所有者是 SYS Oracle
的数据字典可以分为三个基本类 用户访问视图 DBA 视图 以及动态执行表— — 它也会
以视图的形式出现 视图可以查询用户在数据字典中的用户账号信息 如权限和目录表的
创建 DBA 可以帮助数据库管理员完成日常的工作 它允许 DBA 来管理用户和数据库中
的其它对象 在 ORALCE 中的动态执行表也可以为 DBA 所使用并提供了对数据库的更深
层的监视 这些视图提供了储如对过程的执行 对 ROLLBACK 段的动态使用 内存的使
用等储如此类的统计信息 动态执行表都以 V为前缀
Sybase 的数据字典
与 ORACLE 一样 Sybase 中系统表的所有者也是 SYS 该表可以被分为两个部分
系统表和数据库表
系统表只能为数据库所有者所拥有 这些表定义的对象 如表和索引 为多个数据库
所共有 另一部分表在 Sybase SQL Server 中的称为数据库表 这些表只与每个特定的数据
库相关联
ORACLE 数据字典的内部结构
这一部分的例子会告诉你如何从数据字典中获得信息以及如何将它应用于广大关系型
数据库的用户也就是 最终用户 系统工程师和 DBA ORACLE 数据字典中有大量的关
于所有类型的数据库用户的表和视图 这是为什么我们要进一步研究 ORACLE 数据字典的
原因
用户视图
用户视图是在数据字典中的可以为全部用户所拥有的视图 一个用户对其它的用户只
有 CREATE SESSION 的权限 所有的用户都是这样
330
…………………………………………………………Page 331……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
你是谁
在进行对数据库的无穷尽的知识的探险之前 你应该确切地知道你是谁 在数据库中
的字眼 和你能做什么 下边的两个例子中给出两个表中的 SELECT 语句 其中一个会告
诉你是谁而另一个会告诉你可以使用哪些数据库
INPUT
SQL》 SELECT * FROM USER_USERS
OUTPUT
USERNAME USER_ID DEFAULT_TABLESPACE TEMPORARY TABLESPACE CREATED
JSMITH 29 USERS TEMP 14…MAR…97
分析
USER_USERS 视图可以告诉你你在 ORACLE 中的 ID 是如何设置的 它也可以显示其
它用户的详细情况 以及对用户的统计 默认的表大小和临时表的大小也可以被显示 默
认的 USER 的表的大小是指由该用户所创建的表的大小 临时表大小是对 JSMITH 所指定
的进行排序和分组空间的大小
INPUT/OUTPUT
SQL》 SELECT * FROM ALL_USERS;
USERNAME USER_ID CREATED
SYS 0 01…JAN…97
SYSTEM 5 01…JAN…97
SCOTT 8 01…JAN…97
JSMITH 10 14…MAR…97
TJONES 11 15…MAR…97
VJOHNSON 12 15…MAR…97
正如你在上边的查询结果中所看到的那样 你可以使用 ALL_USERS 视图你可以看到
所有存在于数据库中的用户 但是 它不会给出像上边的那个视图那么详细的信息 因为
对于这一级用户来说是没有必要的 只有对于系统级用户才会需要更详细的信息
你有哪些权限
现在你已经知道你是谁了 如果你可以知道你能做什么就太好了 有好几个视图都可
以为你提供这样的信息 USER_SYS_PRIVS 视图和 USER_ROLE_PRIVS 视图可以给你最
331
…………………………………………………………Page 332……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
为权威的信息
你可以使用 USER_SYS_PRIVS 来查看系统的权限 切记 系统权限是指你对于特定
数据库的整体权限 这些权限并不针对任何一个对象或对象集
INPUT
SQL》 SELECT * FROM USER_SYS_PRIVS;
OUTPUT
USERNAME PRIVILEGE ADM
JSMITH UNLIMITED TABLESPACE NO
JSMITH CREATE SESSION NO
分析
JSMITH 已经被赋予了两种系统级权限 除了获准的任务以外 请注意第二部分 创
建会话 CREATE SESSION 它包括在 ORACLE 的标准任务 CONNECT 这将会在下边
的例子中提到
你可以使用 USER_ROLE_PRIVS 视图来查看你在数据库中被允许的任务信息 数据库
任务与系统任务非常相似 当任务为权限所许可之后 可以将任务许可给该用户 切记
在任务中可能会有对象级权限
INPUT/OUTPUT
SQL》 SELECT * FROM USER_ROLE_PRIVS;
USERNAME GRANTED_ROLE ADM DEF OS_
JSMITH CONNECT NO YES NO
JSMITH RESOURCE NO YES NO
分析
USER_ROLE_PRIVS 视图可以让你查看允许你执行的任务 在早些时候曾经说过
CONNECT 包含着系统权限 CREATE SESSION 与其它的权限一样 RESOURCE 也有为
数不多的权限 你可以查看一下给予用户的缺省任务 用户不能将这些任务再给予其它的
用户 这对于 ADM 来说非常重要 而且该任务也不能为操作系统所允许 参见第 12 天
的 数据库安全
你可以访问哪些东西
现在你也许会问 我可以访问哪些内容呢 我已经知道了我是谁 我也知道了我的权
332
…………………………………………………………Page 333……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
限 但是我在哪里可以将到我的数据 你可以通常查看在数据字典中的不同的可用用户视
图来回答这个问题 这一部分的内容对于一些视图来说很有帮助
也许最为基本的用户视图就是 USER_CATALOG 了 它是一个表 视图 同义字和当
前所有的次序的简明目录
INPUT
SQL》 SELECT * FROM USER_CATALOG;
OUTPUT
TABLE_NAME TABLE_TYPE
MAGAZINE_TBL TABLE
MAG_COUNTER SEQUENCE
MAG_VIEW VIEW
SPORTS TABLE
分析
这个例子中给出了为你所有的所有表和相关对象的清单 出于简明的目的你也可以使
用 USER_CATALOG 中的公共同义字 那就是 试一下 SELECT * FROM CAT
另外一个有用的视图是 ALL_CATALOG 它可以让你看到其他人拥有的表
INPUT/OUTPUT
SQL》 SELECT * FROM ALL_CATALOG;
OWNER TABLE_NAME TABLE_TYPE
SYS DUAL TABLE
PUBLIC DUAL SYNONYM
JSMITH MAGAZINE_TBL TABLE
JSMITH MAG_COUNTER SEQUENCE
JSMITH MAG_VIEW VIEW
JSMITH SPORTS