日期:2014-05-16  浏览次数:20516 次

Oracle DB 性能视图和数据字典
  • 动态性能视图
用于访问实例内存结构不断变化的状态信息。


在Oracle DB 中还维护着一个关于数据库实例操作和性能的动态数据集。这些动态性能视图以基于数据库服务器内部的内存结构构建的虚拟表为基础。也就是说,这些视图不是驻留在数据库中的传统意义上的表。这就是为什么部分视图在数据库装载或打开之前就能够使用的原因。
动态性能视图包含下列信息:
? 会话
? 文件状态
? 作业和任务的进度
? 锁
? 备份状态
? 内存使用率和内存分配
? 系统参数和会话参数
?SQL 执行
? 统计数据和度量
注:DICT 和DICT_COLUMNS视图也包含这些动态性能视图的名称。动态性能视图以前缀“v$”开头,其数量超过590。

  • 动态性能视图:用法示例



经常使用这些视图的是Enterprise Manager ,但其他用户也可以根据需要查询这些视图。

1. 哪些SQL 语句(及其相关的执行编号)所占用的CPU 时间大于200,000 微秒?
SQL> SELECT sql_text, executions FROM v$sql    WHERE cpu_time > 200000;
2. 在前一天内,哪些当前会话从EDRSR9P1 计算机登录?
SQL> SELECT * FROM v$session WHERE machine = 'EDRSR9P1' and logon_time > SYSDATE - 1;
3. 当前持有阻止其他用户的锁的那些会话的会话ID 是什么?这些锁已持有多长时间?
SQL> SELECT sid, ctime FROM v$lock WHERE block > 0;
  • 动态性能视图:注意事项
? 这些视图由SYS 用户所有。
? 不同场合可使用的视图也不同:
– 实例已启动。
– 数据库已装载。
– 数据库已打开。
? 可以通过查询V$FIXED_TABLE 查看所有视图名称。
? 这些视图通常称为“v$ 视图”。
? 因为其数据是动态的,所以在这些视图上不能保证读取一致性。
某些动态视图包含的数据并不适用于实例或数据库的所有状态。例如,如果实例刚启动,但未装载任何数据库,则可以通过查询V$BGPROCESS 来查看正在运行的后台进程的列表。但无法通过查询V$DATAFILE查看数据库数据文件的状态,因为要通过装载数据库来读取控制文件,此后才能找出数据库关联的数据文件。
一些V$视图包含的信息类似于相应DBA_ 视图中的信息。例如,V$DATAFILE类似于DBA_DATA_FILES。另请注意,V$视图名称通常是单数形式,而DBA_ 视图名称是复数形式。

  • 数据字典:概览
Oracle  数据字典是数据库的元数据,其中包含数据库中所有对象的名称和属性。创建或修改任何对象都会引起数据字典的更新,以反映这些更改。这些信息存储在由Oracle DB 维护的基表中,不过,可使用预定义视图访问这些表(而不是直接读取表)。
数据字典:
? 由Oracle DB 服务器使用,可用于查找关于用户、对象、约束条件和存储的信息
? 对象结构或定义修改时,Oracle DB 将做出相应维护
? 可供任意用户使用以查询关于数据库的信息
? 由SYS 用户拥有
? 不得使用SQL 直接进行修改
注:DICTIONARY数据字典视图(或其DICT 同义词)包含数据字典表和视图的名称和说明。使用DICT_COLUMNS视图可查看视图列及其定义。