二、与SGA相关的动态性能视图。
虽然从10G以后的数据库系统中,已经实现了内存的自动分配功能。Oracle数据库系统从10G以后,引入了自动调整SGA(系统共享区)的功能。这个功能的话,数据库管理员之需要指定一个系统共享区的总大小即可。Oracle数据库系统会负责其在整个系统共享区池中内部决定优化内存分配的重任。有了这个功能之后,数据库系统分配给不同的SGA缓存的内存将会随着时间以及系统的运行状况动态的改变,以适应数据库系统工作量的变化,大大提高了SGA的利用率。
所以,通常情况下,数据库管理员不需要手工的去更改SGA的相关参数。不过在数据库管理员还是需要了解系统共享区的利用情况。因为在必要的情况下,数据库管理员需要调整系统共享区总的大小,以提高数据库服务器的性能。
具体的来说,数据库管理员需要掌握两张动态性能视图,分别为V$SGA 与V$SGAINFO。这两张动态性能视图反映了系统共享区不同的信息。前者主要是现实系统共享区的主要组成部分的大小,如共享池、数据高速缓存、重做日志缓冲区等等所占系统共享区的大小等等。而后者者反映了系统共享区分配的更加详细的信息。若数据库管理员怀疑是因为系统共享区的问题导致了数据库性能下降的结果,则这两张是主张其论点的最有力的证据。一般情况下,若企业在同一台服务器中部署了多个应用服务,如Oracle数据库服务器与邮件服务器,则就需要关注一下这个SGA系统共享区的分配情况。
三、显示当前的会话信息。
无论是处于数据库维护还是安全方面的需要,数据库管理员往往需要了解当前数据库的会话信息。如当数据库有异常情况发生时,数据库管理员就需要判断是否有特殊的用户连接在数据库上搞破坏;再如,有时候前台应用程序也需要了解当前跟数据库通话的用户信息,以方便其进行管理。所以,在这种情况下,他们都需要用到数据库中的一张V$SESSION动态性能视图。这张视图中纪录了会话的详细信息。如会话的ID号、会话的序列号、用于表示会话所对应的数据库用户等等。
不过数据库管理员需要注意另外一个细节,若这里的用户名为空的话,则表示这个会话是后台进程会话。
四、显示日志的相关信息。
无论是对于软件还是硬件的管理,日志都是很重要的一种参考信息。Oracle数据库系统中,日志更加显得重要。因为Oracle数据库系统的日志种类丰富,包含的内容详细。而且,日志还纪录着数据库系统的所有操作,包括数据的更新情况。所以,数据库管理员除了要保障日志的完整性之外,还需要关注日志的安全性。
在Oracle数据库系统的动态性能视图中,有一张视图专门用来显示视图的当前信息,这张视图就是V$LOG视图。这张视图一般包括如下有用的信息,如日志组组号、日志所属的重做线程编号、用于标识日志组的当前日志序列号、日志组的大小、日志组的成员个数、日志组的状态等等。如当数据库管理员发现日志有异常的更改时,就可以通过这张视图来查看有哪些用户是这个日志组的成员等等。数据库管理员也可以通过这张视图,了解当前日志的使用状态。
五、跟锁相关的信息。
数据库管理员在调整数据库性能的时候,很大一部分工作就是要通过调整索引、调整SQL语句来减少锁冲突的发生。为此,他们首先需要知道当前锁的状况。只有知道病因之后,数据库管理员才能够对症下药,提高数据库性能。
为此数据库动态性能视图中提供了两张有用的视图,分别为V$SESSION 与V$LOCKED_OBJECT。前者主要统计占有锁的会话信息,其中还包括有哪些锁正在等待会话。若等待锁的会话比较多的话,就说明当前数据库因为锁导致的阻塞情况比较严重。数据库管理员应该想方设法来避免这种锁冲突的产生。主要可以通过调整SQL语句等手段来减少这种等待时间。
而后者数据时显示被加锁的数据库对象。通过查询这张动态视图,数据库管理员可以了解具具体的加锁对象名以及执行加锁操作的用户。这张表中的内容往往结合前者那个动态视图中的信息,一起为数据库管理员调整数据库性能时提供数据上的支持。通过这两张表,数据库管理员基本上可以判断,数据库性能的不理想是否是由于锁导致的。以及是否有必要对SQL语句进行调整以避免锁冲突的发生。
总之,动态性能视图提供了一些数据库运行中很宝贵的信息。数据库管理员要学会利用这些信息,让他们成为我们管理数据库的一个好帮手。
本文作者:未知