在Oracle数据库维护中的前瞻性需要考虑的问题


  本文标签:Oracle数据库

  我们都知道有的时候因为一些异常的数据会导致周期性的产生,所以Oracle数据库管理员就必须要了解关于几个周期之内的相关数据,此时就需要延长这个循坏周期Oracle数据库维护中的前瞻性   。

  配置合适的时间参数  。

  在启用自动工作负荷存储库之后,数据库管理员还需要考虑一些时间上的分配问题  。如这个自动负荷存储库表中的数据需要保存多久  。由于数据库运行统计信息的数量,随着其级别的不同,数据量有多少  。但是只要采用了Typical或者All这两个级别后,其信息量还是很可观的  。故如果不定时清除这些数据的话,则这个表没有多少时间就会占用很大的空间了  。

  为此这个表必须循环利用,以减少存储空间  。默认情况下,自动负荷存储表中的内容只会被保存七天,也就是说这个表中存储的是最近七天的数据库运行信息  。但是如果数据库环境设计比较复杂可能会产生大量的统计信息,则此时数据库管理员就需要缩短这个时间  。

  而有时候某些异常数据可能会周期性的出现,故Oracle数据库管理员需要了解几个周期之内的数据,此时就需要延长这个循坏周期  。为此数据库管理员要能够更改这个周期,以方便其工作  。如果数据库管理员需要跟该这个周期的话,那么就需要执行Dbms_Workload_Reposttory程序,设置其中的retention参数  。

  注意这里是用分钟为单位  。如果数据库管理员想要把这个时间设置为10天的话,则就需要把这个参数设置为60*24*10=14400分钟  。注意这里是以分钟为单位  。如果数据库管理员不知道这个内容或者误以为这里是以天为单位的,而把这个参数设置为10的话,那么这个工作负荷存储库表中就不会记录有价值的信息  。

  另外,默认情况下工作负荷存储库的内存监视器是每60分钟收集一下信息  。不过有时候数据库管理员可能需要根据实际情况来缩短这个统计的周期或者严惩周期  。如为了测试的需要要把这个周期缩短为10分钟以判断是否正常启用了自动工作负荷存储库时,就需要把这个周期缩短  。

  此时也是采用如上那个程序,不过参数是interval了  。如果要把这个时间调整为30分钟,则只需要把这个参数设置为30即可  。注意此时这里是以分钟为单位  。如果此时数据库管理员要让这个工作负荷存储库表保留10天的纪录,同时每隔30分钟统计数据库运行的信息,就可以执行以下的命令来完成:

  

  1. Execute Dbms_Workload_Reposttory.
    modify_snapshot_settings  
  2. (interval=30,retention=14400)  

  即可以完成如上的需求  。笔者再次强调一下,这个命令中都是以分钟为单位的  。另外,如果同时缩短统计周期并延长工作负荷存储库表的存储周期,那么在这两个因素的共同作用下,这个表的容量会很快的膨胀起来  。Oracle数据库管理员需要注意这个问题  。

  通常情况下,笔者建议可以缩短这个统计周期,但是不建议延长表的存储周期  。如果数据库管理员确实需要一段时期内的性能数据的话,则可以先把这个表导出来进行备份  。这可以避免工作负荷存储表对数据库表空间的侵蚀  。再者,缩短内存监视器收集系统统计数据周期会增加Oracle数据库的额外开销,这也是数据库管理员在调整这两个参数时需要注意到的内容  。