数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle:数据库运维管理要做好实时监控


发布日期:2022年03月26日
 
Oracle:数据库运维管理要做好实时监控

作为核心IT业务模块数据库的重要性毋庸置疑

管理数据库在做好系统前期部署后在系统持续运行中需要时刻关注系统自身和环境等对于运行可能产生的潜在影响和可能的危险并及时予以处理

通常我们把数据库运维管理工作分为反应性与前瞻性两种

反应性监视是指在已经出现一个性能或者管理问题后再对数据库进行监视例如有员工向数据库管理员反应应用系统的速度比较慢数据库管员跟其他技术人员共同会诊后发现是由于数据库的原因所造成的此时数据库管理员就需要使用相关的工具来收集数据库的运行数据以查明问题发生的原因虽然这最终也可以顺利把问题解决但是这毕竟与优秀数据库管理员心中的期望还有一点距离因此反应性监视有点像放马后炮的感觉问题已经出现即使数据库管理员能够在最短时间内查明原因解决问题但是毕竟对于用户产生了一些不利的影响故数据库管理员希望能够在故障发生之前就能够了解导致这个故障发生的原因并及时采取有效措施预防这种故障的最终发生这就使数据库管理员所期待的前瞻性监视

前暂性监视可以让数据库管理员在问题出现之前期间或者之后查处并响应数据库常见的性能与管理问题简单的说在某一个数据库故障发生之前都会有一些征兆这就好像一些自然灾害发生时像蚂蚁燕子等等都会有一些异常的反应数据库管理员有必要了解这些征兆如此的话我们才能够把这些问题消除来萌芽状态防止问题的扩大

Oracle数据库设计者们也一直在往这个方向努力如在G以后的数据库版本中就有了一个自动工作负荷储存库的功能来帮助数据库管理员收集在数据库运行中的异常数据通过这些数据的帮助数据库管理员可以抢在数据库故障发生之前把问题解决了

自动工作负荷存储库的特点

自动工作负荷存储库主要是通过两个回退进程实现的分别为内存监视器与内存监视灯这两个进程是一对双胞胎数据他们可以给数据库管理员带来很大的帮助如这两个进程会相互合作从数据库系统全局区中直接收集性能统计数据如数据库服务器CPU内存的使用率等等其中内存监视器在其中担任主要角色默认情况下内存监视器每个小时会启动一次并从数据动态性能视图数据库目录视图和数据库优化器中收集性能等相关的统计信息然后会把这些信息存储在数据库的表中这个表就叫做自动工作负荷存储库表通常情况下这个表被Sysman用户所拥有并被存储在Sysaux表空间中

启用自动工作负荷存储库并进行相关的配置

如果数据库管理员需要启用这个自动工作负荷存储库功能则需要手工对此启动默认情况下数据库是不会启动这项功能的笔者的意见是在数据库设计或者测试的时候不用启动这项功能毕竟其本身需要耗用服务器一定的资源但是在生产服务器(即企业已经在使用的Oracle数据库)系统中最好启用这项功能以帮助数据库管理员自动收集数据库的运行性能信息以实现前瞻性监视的目标

如果想要启用自动工作负荷存储库功能则需要配置数据库中的Statistics_level这个参数这个参数主要有三个值用来决定内存监视器进程收集统计数据的深度与频率等等如数据库的规模比较小或者应用时间不长的话可以把这个参数设置为Basic在这个参数下数据库虽然已经启用了自动工作负荷存储库但是会禁用这项功能的大多数争端监视以及顾问活动也就是说此时数据库管理员启动数据库实例时系统只会收集少量的数据库运行时的统计数据当数据库规模比较大时这些数据往往不能够帮助数据库管理员排查故障发生的原因如果数据库设计比较复杂或者企业对于数据库的性能要求比较高则此时数据库管理员可以把这个参数设置为ALL这是自动工作负荷存储库收集统计数据的最高级别在这个级别下内存监视器将会捕获大部分的统计数据同时还会收集来自操作系统的执行计划和定时信息如Oracle数据库的自动备份有时候需要操作系统的任务计划的帮助下才能够完成那么此时数据库管理员就需要考虑数据库性能下降的原因是否跟这个操作系统的任务计划有关此时内存监视器收集起来的跟操作系统相关的计划与定时信息就会非常的有用不过有时候数据库管理员可能只需要收集数据库自深的运行信息而不需要操作系统的相关信息此时就可以把这个参数设置为Typical这个参数是自动工作负荷存储库的标准级别他会收集跟数据库自深相关的统计信息

数据库管理员可以根据企业对数据库性能的要求可以允许数据库当机的时间服务器的配置等因素来考虑要选择的级别通常情况下如果在同一个服务器中除了Oracle数据库外还部署了其他应用服务的话那么笔者建议最好采用All级别此时数据库管理员可以知道尽可能多的信息帮助管理员及早把问题消除掉

配置合适的时间参数

在启用自动工作负荷存储库之后数据库管理员还需要考虑一些时间上的分配问题如这个自动负荷存储库表中的数据需要保存多久由于数据库运行统计信息的数量随着其级别的不同数据量有多少但是只要采用了Typical或者All这两个级别后其信息量还是很可观的故如果不定时清除这些数据的话则这个表没有多少时间就会占用很大的空间了为此这个表必须循环利用以减少存储空间默认情况下自动负荷存储表中的内容只会被保存七天也就是说这个表中存储的是最近七天的数据库运行信息但是如果数据库环境设计比较复杂可能会产生大量的统计信息则此时数据库管理员就需要缩短这个时间而有时候某些异常数据可能会周期性的出现故数据库管理员需要了解几个周期之内的数据此时就需要延长这个循坏周期为此数据库管理员要能够更改这个周期以方便其工作如果数据库管理员需要跟该这个周期的话那么就需要执行Dbms_Workload_Reposttory程序设置其中的retention参数注意这里是用分钟为单位如果数据库管理员想要把这个时间设置为天的话则就需要把这个参数设置为**=分钟注意这里是以分钟为单位如果数据库管理员不知道这个内容或者误以为这里是以天为单位的而把这个参数设置为的话那么这个工作负荷存储库表中就不会记录有价值的信息

另外默认情况下工作负荷存储库的内存监视器是每分钟收集一下信息不过有时候数据库管理员可能需要根据实际情况来缩短这个统计的周期或者严惩周期如为了测试的需要要把这个周期缩短为分钟以判断是否正常启用了自动工作负荷存储库时就需要把这个周期缩短此时也是采用如上那个程序不过参数是interval了如果要把这个时间调整为分钟则只需要把这个参数设置为即可注意此时这里是以分钟为单位如果此时数据库管理员要让这个工作负荷存储库表保留天的纪录同时每隔分钟统计数据库运行的信息就可以执行以下的命令来完成Execute Dbms_Workload_Reposttorymodify_snapshot_settings(interval=retention=)即可以完成如上的需求笔者再次强调一下这个命令中都是以分钟为单位的另外如果同时缩短统计周期并延长工作负荷存储库表的存储周期那么在这两个因素的共同作用下这个表的容量会很快的膨胀起来数据库管理员需要注意这个问题通常情况下笔者建议可以缩短这个统计周期但是不建议延长表的存储周期如果数据库管理员确实需要一段时期内的性能数据的话则可以先把这个表导出来进行备份这可以避免工作负荷存储表对数据库表空间的侵蚀再者缩短内存监视器收集系统统计数据周期会增加数据库的额外开销这也是数据库管理员在调整这两个参数时需要注意到的内容

上一篇:OracleTemp临时表空间处理

下一篇:Oracle数据库编程:在PL/SQL中使用游标获取数据