静态数据字典视图的分类

Eygle 2019-07-24
14
0 0
摘要:静态数据字典视图的分类

静态数据字典视图按照前缀的不同通常被分为三类:

1.USER_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息。

2.ALL_ 类视图包含了用户有权限访问的所有对象的信息。

3.DBA_ 类视图包含了数据库所有相关对象的信息,用户需要SELECT ANY TABLE权限才能访问。

这三者的关系大致可以用如下示意图描述:

 

通过三类视图在本质上是为了实现权限的控制。在Oracle数据库中,每个用户与方案(Schema)是对应的,Schema是用户所拥有的对象的集合。数据库通过Schema将不同用户的对象隔离开来,用户可以自由访问自己Schema的对象,但是对于其他Schema对象的访问则需要获得授权。

以下通过常用的字典视图做一个简单的示范说明。

USER_TABLES视图是USER类视图的一个典型代表。这个视图中记录了当前用户所拥有的所有表的信息:

SQL> connect eygle/eygle
Connected.
SQL> select table_name,tablespace_name from user_tables;  
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
CUSTOM                         USERS

而对于ALL_TABLES视图,不仅包含用户所拥有的表,还包括用户有权限能够访问的表,这些表可能来自其他用户的授权:

SQL> connect gqgai/eygle
Connected.
SQL> grant select on sales to eygle;
Grant succeeded.

获得授权之后,用户就能够通过ALL_TABLES视图获得这些表的信息:

SQL> select table_name,owner from all_tables where owner in ('EYGLE','GQGAI');
TABLE_NAME                     OWNER
------------------------------ ------------------------------
CUSTOM                         EYGLE
SALES                          GQGAI

而DBA_TABLES则是一个超级集合,包含了数据库所有的表对象,查询这个视图需要DBA的权限或者SELECT ANY TABLE的系统权限。通过以下查询可以简要统计不同用户拥有的表对象数量:

SQL>  select owner,count(*) from dba_tables group by owner order by 2;
OWNER                            COUNT(*)
------------------------------ ----------
EYGLE                                   1
GQGAI                                   1
……………………
SYSTEM                                150
SYS                                   837
23 rows selected.


「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
Oracle
订阅
欢迎订阅Oracle频道,订阅之后可以获取最新资讯和更新通知。
墨值排行
今日本周综合
热门文章
近期活动
全部
相关课程
全部