我们都知道Oracle数据字典文档中静态数据字典的视图共分为三类,动态Oracle数据字典的相关视图又分为哪几类呢?以及Oracle数据字典的相关视图又有什么样的作用呢?这些问题在此篇文章中都会找到答案。
动态数据字典>是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
当前锁住的对象
静态数据字典:这类数据字典主要是由表和视图组成
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
- user_*
该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
- all_*
该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
- dba_*
该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限
- select * from dictionary;
查询该用户拥有哪些表
user_tables主要描述当前用户拥有的所有表的信息,
主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些
- desc user_tables;
- select table_name from user_tables;
- select * from user_tables;
查询该用户拥有哪些索引
- select index_name from user_indexes;
查询该用户拥有哪些视图
- select view_name from user_views;
查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等。
- select object_name from user_objects;
主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
- select * from user_users;
user_/all_区别:
all_列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。
查询某一用户下的所有表、过程、函数等信息。
- select owner , object_name ,
object_type from all_objects
对于dba_开头的需要管理员权限,
查询表空间的信息(当前用户必须拥有DBA角色)。
- select * from dba_data_files
动态Oracle数据字典
Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图.
v$access
该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
- select * from v$access
- v$session
该视图列出当前会话的详细信息。
- v$active_instance
该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。
v$context
该视图列出当前会话的属性信息。比如命名空间、属性值等。
以上的相关内容就是对Oracle数据字典的相关内容的介绍,望你能有所收获。
【编辑推荐】