动态性能视图主要是Oracle数据的库自动收集并记录当前例程的活动信息当数据库管理员启动某个例程时数据库会自动建立动态性能视图;当停止某个例程时数据库又会自动删除这些动态性能视图这表面看起来跟数据字典有异曲同工之妙但是两者信息的来源还是有很大差异的数据字典的信息是从数据文件中取得;而动态性能视图的信息则是从SGA内存以及控制文件中取得所以两者所反映的信息还是有很大差异的数据库管理员利用这些动态性能视图可以了解数据库运行的一些基本信息为我们进行数据库维护以及数据库性能优化提供一些数据上的支持一般情况下我们可以通过动态性能数据掌握两类重要的数据库运行信息一是了解数据库运行相关的性能数据如内存的使用量磁盘排序发生的机率等等二是取得与磁盘和内存结构相关的其他信息这些信息将是我们进行数据库维护与数据库性能调整的主要参考依据
为了便于数据库管理员查询这些动态视图Oracle数据库中的动态性能视图跟其他数据库对象有着不同的命名规则通常情况下动态性能视图都是以V_$前缀开头的并且Oracle数据库维每个动态性能视图提供了相应的同义词下面笔者就介绍一些动态性能视图查询中的一些技巧以帮助广大数据库管理员提高对Oracle数据库动态性能视图的认识
一知道可用的动态性能视图
因为动态性能视图是随着例程的启动而启动随着例程的消亡而消亡其是动态变化的所以对于一些动态性能视图不怎么了解的数据库管理员来说第一步就是需要了解现在数据库中到底有哪些动态性能视图可以用Oracle数据库中有一张V_$fixed_table动态性能视图这张视图中纪录着当前所有可用的动态性能视图当数据库管理员对动态性能不怎么了解的话可以先通过这张视图了解动态性能视图的概况并了解哪些动态性能视图当前是可用的数据库管理员可以通过下面的命令查询当前可用的所有动态性能视图
在通常情况下数据库不同的状态其动态性能视图还是有比较大的差异数据库管理员掌握这些差异对于他们借助这些视图来管理数据库可能会有更大的帮助
一是数据库处于NOMOUNT状态数据库启动例程时Oracle数据库会打开参数文件分配SGA内存并启动后台进程此时其实数据库还没有挂栽此时动态性呢视图收集的信息来源只有是SGA而不会从控制文件中收集相关的信息所以动态性能视图的数量要少得多
二是当数据库处于MOUNT状态时数据库会根据初始化参数打开所有的控制文件所以当例程处于Mount状态时动态性能视图其收集到的信息就要第一个状态多的多因为此时动态性能视图还会去收集控制文件的相关信息不过此时动态性能视图所收集到的资料还不是最全的
三是当用户打开数据库时Oracle系统会根据控制文件所记载的信息去打开所有的数据库文件以及重做日志此时数据库管理员除了可以从SGA和控制文件中获取信息的动态性能视图外还可能访问与Oracle数据库性能相关的动态性能视图如会话等待时间等视图另外需要注意一点就是只有在这个状态时我们才能够访问数据库的数据字典视图
我们在维护数据库或者调整数据库性能时数据库管理员需要经常访问这些动态性能视图以取得例程的动态信息故数据库管理员需要对一些常用的动态性能视图有一定的了解只有如此在能够在需要的时候及时的了解自己所需要的信息