数据字典和数据字典视图
数据字典是由Oracle服务器创建和维护的一组系统表。SYS用户拥有所有的数据字典表。考虑到系统效率,Oracle服务器以最简捷(最快)的方式来操作数据字典的基表,所以,数据字典的基表中所存的数据就像天书一样,几乎是没什么人能看得懂。因此很少有人直接访问这些基表。取而代之的是,绝大多数用户包括数据库管理员(DBA)在内都是通过访问数据字典视图来得到数据库的相关信息。数据字典视图把数据字典基表的信息转换成了人们较为容易理解的形式。它们包括了用户名、用户的权限、对象名、约束和审计等方面的信息。
数据字典视图分为三大类。它们用前缀来区别,其前缀分别为USER、ALL和DBA。许多数据字典视图包含相似的信息。为了帮助读者理解,我们利用图 9-1 来解释这些数据字典视图。
USER_*:有关用户所拥有的对象的信息,即用户自己创建的对象的信息。
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息再加
上其他用户创建的对象但该用户有权访问的信息。DBA:有关整个数据库中对象的信息。
可以为TABLES、INDEXES、OBJECTS等。这里的*
一定想知道在您的账号(用户名)下有哪些表。数据字典user_tables
里就存有这些信息。可以用例9-41的查询语句来得到您所需要的信息(假设您现在是以SCOTT用户登录的)。
从例9-43显示的结果可以看出,一个用户可用user_catalog看到他所拥有的所有表的名字和类型。与使用user_tables相比也许使用user_catalog更简单。如例9-44。
数据字典 user_catalog 有一个别名叫 cat。用户可以用它得到和 user_catalog完全相同的信息。如例9-45。
如果您刚被某公司聘为Oracle数据库管理员,想知道您所管理的Oracle数据库的名字和创建日期等信息,可使用数据字典vSdatabase来得到有关的信息。以v$开始的数据字典为动态表,即Oracle服务器要随时修改它们,只有Oracle数据库管理员(DBA)可以访问这些数据字典。为了使用数据字典 vSdatabase,您需要以SYS或SYSTEM用户登录Oracle 数据库,如例9-46。
例9-47
SQL> SELECT name,created,log_mode
2 FROM v$database;
作为一名新的Oracle数据库管理员您也应该知道有关Oracle实例的信息。可以使用例9-48的查询语句从数据字典vSinstance中得到相关的信息。
例9-48
SQL> SELECT instance_name,host_name,version,archiver
2 FROM v$instance;
另外也应该知道在您的系统上到底有多少用户和都是什么时候创建的,可以使用例9-49的查询语句来完成这一工作。
例9-49
SQL> SELECT username, created
2 FROM dba_users;