1 动态性能视图
1.1 概览
Oracle数据库服务器还维护一组关于数据库实例的操作和性能的动态数据。这些动态性能视图是基于数据库服务器内部的内存结构构建的虚拟表。也就是说,它们不是驻留在数据库中的传统表。这就是为什么它们中的一些在挂载或打开数据库之前也可以使用的原因。
动态性能视图包括以下信息:
Sessions
File states
Progress of jobs and tasks
Locks
Backup status
Memory usage and allocation
System and session parameters
SQL execution
Statistics and metrics
示例:
SELECT sql_text, executions FROM v$sql WHERE cpu_time > 200000;
CPU时间消耗超过200,000微秒的SQL语句及其相关的执行次数的
SELECT * FROM v$session WHERE machine = ‘EDXX9P1’ AND logon_time > SYSDATE - 1;
昨天从EDXX9P1计算机登录会话信息
SELECT sid, ctime FROM v$lock WHERE block > 0;
当前持有阻塞其他用户的锁的会话id及这些锁持有的时间
1.2 与数据库启动阶段相关
这些视图属于SYS用户。可以在不同的阶段查看:实例已经启动,挂载数据库,数据库是open的。可以查询V$FIXED_TABLE来查看所有视图名称。这些视图通常被称为“v$视图”。“读一致性并不能保证这些特性,因为数据是动态的。
一些动态视图包含的数据并不适用于实例或数据库的所有状态。例如,如果一个实例刚刚启动,但是没有挂载数据库,您可以查询V$BGPROCESS以查看正在运行的后台进程列表。但是您不能查询V$DATAFILE来查看数据库数据文件的状态,因为它是一个数据库的挂载,它读取控制文件以查找与数据库关联的数据文件。一些V$视图包含的信息与对应的DBA_视图中的信息类似。例如,V$DATAFILE类似于DBA_DATA_FILES。还要注意,V$视图名称通常是单数,而DBA_视图名称是复数。
例如,如果一个实例刚刚启动,但是没有挂载数据库,可以查询V$BGPROCESS以查看正在运行的后台进程列表。但是不能查询V$DATAFILE来查看数据库数据文件的状态,因为它是一个在数据库的挂载状态下,读取控制文件以查找数据文件的信息。一些V$视图包含的信息与对应的DBA_视图中的信息类似。例如,V$DATAFILE类似于DBA_DATA_FILES。还要注意,V$视图名称通常是单数,而DBA_视图名称是复数。
2 静态数据字典
2.1 基本概念
Oracle数据字典是数据库的元数据,包含数据库中所有对象的名称和属性,用户、对象、约束和存储的信息。任何对象的创建或修改都会相应的更新数据字典信息。这些信息存储在由Oracle数据库服务器维护的基本表中,但是可以通过使用预定义的视图而不是直接读取表来访问这些信息。
注意:DICTIONARY数据字典视图(或它的DICT同义词)包含数据字典表和视图的名称和描述。使用DICT_COLUMNS视图查看视图列及其定义。
2.1 DBA_XXX,ALL_XXX,USER_XXX
视图前缀表示给定用户可以看到的数据(以及数据的多少)。
所有内容的全局视图只能由具有DBA特权的用户使用DBA_前缀访问。
下一个权限级别是ALL_ prefix级别,它表示查询用户有权查看的所有对象,无论用户是否拥有这些对象。例如,如果USER_A被授予对USER_B拥有的表的访问权,那么USER_A会在任何处理表名的ALL_视图中看到列出的表。
USER_前缀表示可见性的最小范围。这种类型的视图只显示查询用户拥有的那些对象(即出现在用户自己的模式中的对象)。
只有使用SYSDBA、SELECT ANY DICTIONARY或SELECT_CATALOG_ROLE特权的用户才能查询DBA_视图。并非所有字典视图都以前缀DBA_、ALL_和USER_开头。
3 练习题
如下哪个数据字典可以查看整个数据库中所有的表?
A USER_TABLES
B ALL_TABLES
C DBA_TABLES
D ANY_TABLES
【答题小贴士】:
1、以墨天轮文章的形式解析题目并给出答案
2、将墨天轮文章链接发送到此文的评论区




