1、健康检查报告XXXXXXXXXXXXXXXXXXXXOracle数据库健康检查与评估XXXX巡检人:报告生成日期: yyyy-mm-dd健康检查报告 第2页文档控制此文档仅供江苏移动审阅,不得向与此无关的个人或机构传阅或复制。修改记录日期 作者 版本 修改记录分发者、姓名 职位审阅记录姓名 职位相关文档健康检查报告 第3页目录文档控制 .2修改记录 2分发者 2审阅记录 2相关文档 2目录 .31. 检查介绍 .51.1 检查 系统 51.2 检查范围 52. 硬件配置 .72.1 主机配置 73. 系统配置 .83.1 操作系统数据库相关要求补丁 83.2 硬盘可用空间 83.3 CPU 利
2、用率 .84. 数据库配置 .104.1 数据库版本和单独补丁 104.2 CRS版本和单独补丁 .104.3 ORACLE CLUSTER配置 104.4 数据库产品选项 104.5 初始化参数文件 114.6 CRS日志文件 .114.7 RDBMS运行日志和跟踪文件 114.8 控制文件 114.9 Redo log 文件 .124.10 归档Redo log 文件 .134.11 数据文件 134.12 表空间 144.13 回滚段管理 155. 数据库简单风险评估 .175.1 安全性管理 176. SqlNet 概况 186.1 监听器Listener 186.2 SQL*Net
3、.186.3 TNSNAMES.187. 数据库性能 .197.1 数据库各项基于时间模型的统计信息 197.2 数据库负荷压力分析 207.3 各项命中率 217.4 等待事件 21健康检查报告 第4页7.5 统计信息分析 217.6 数据库I/O性能 .227.7 索引/行迁移/行链 .227.8 Enqueue等待分析 237.9 Latch分析 .237.10 Resource Limit分析 237.11 Top SQL语句 .248. 数据库备份策略评估 .258.1 备份 258.2 恢复 259. 数据库特别关注点检查 .2610. 检查总结 .27附录:初始化参数 28数据库
4、所有非默认值的参数: 28健康检查报告 第5页1. 检查介绍1.1 检查系统系统主要包括1个数据库,具体情况如下:数据库名称数据库实例名应用名称应用类型OLTP/DSS/Batch开发工具应用简介RDBMS 版本CRS 版本所有数据文件所占磁盘空间SGA target sizeDB_BLOCK Size表空间个数数据文件个数控制文件个数日志文件大小日志组数目每组日志文件成员数量归档方式并发用户量性能需求1.2 检查范围本次检查仅限于数据库。在这次检查中对数据库配置和数据库性能进行了分析。本报告提供的检查和建议不涉及具体的安全分析和应用程序的具体细节。以下提请注意:本次检查仅历时1天,其中还包括
5、了提交分析报告的时间,所以在具体的应用程序性能方面并不加以深入。健康检查报告 第6页检查方面 具体检查内容主机配置共享内存参数信号量操作系统中与数据库相关主要参数硬件配置操作系统数据库相关要求补丁硬盘可用空间CPU 利用率系统配置数据库版本数据库产品选项数据库参数运行日志和跟踪文件控制文件Redo log 文件归档 Redo log 文件数据文件表空间回滚段管理数据库配置安全性管理数据库简单风险评估 监听器的设置SQL*Net 设置TNSNAMES 设置数据库 sql*net 配置数据库各项命中率等待事件AWR 统计信息分析数据库 I/O 性能索引/行迁移/行链接Sort 信息统计Enqueu
6、e 等待分析Latch 分析Resource Limit 分析Top SQL 语句备份数据库性能恢复根据客户要求只能检查一项数据库备份策略评估数据库特别关注点检查健康检查报告 第7页2. 硬件配置以下列出系统主机的主要配置情况2.1 主机配置机器名用途 (Prod, Test, Development)所在城市,物理位置(机房,远程)操作系统及版本内存cpu 建议:目前系统配置满足数据库要求,操作系统参数设置合理。健康检查报告 第8页3. 系统配置和数据库相关的操作系统配置将被检查,包括以下方面: 操作系统数据库相关要求补丁 存放 oracle 文件的硬盘区可用空间(oracle 文件包括:数
7、据文件,控制文件,在线 redo logs,归档 redo logs,运行情况文件和跟踪文件)。 硬盘利用率。 CPU 利用率。3.1 操作系统数据库相关要求补丁建议:3.2 硬盘可用空间硬盘可用情况如下示:数据库XXXX 的硬盘使用率情况如下:Filesystem kbytes used avail %used Mounted on数据库YYYY 的硬盘使用率情况如下:Filesystem kbytes used avail %used Mounted on建议:目前该数据库服务器中还没有其他硬盘空间使用率超过90%的分区。如果有需要引起注意并且及时增加硬盘空间的容量。3.3 CPU 利用率
8、CPU利用率的统计时间是:yyyy-mm-dd hh:mi- yyyy-mm-dd hh:mi1. top / glance2. vmstat 2 20参考值:1. 最大CPU使用率:60%-70%2. 系统进程与用户进程占用CPU最大比率:40/60数据库XXXX :健康检查报告 第9页数据库YYYY :从上述的情况中看出,数据库:服务器CPU idle基本在 75%以上,CPU资源较为空闲。建议:当CPU的使用率超过80%,要注意监控是否有僵死进程,如果有僵死进程占用CPU,需要将僵死进程kill掉。如果有正常进程占用大量CPU,需要查看是否属于正常业务进程等。健康检查报告 第10页4.
9、数据库配置本次检查工作主要针对数据库XXXX。4.1 数据库版本和单独补丁目前已经安装的单独补丁列表如下:opatch lsinventory -oh $ORACLE_HOMEPatch Base Bug(s) Installed on建议:4.2 CRS版本和单独补丁CRS安装单独补丁列表如下:opatch lsinventory -oh $ORA_CRS_HOMEName Version Installed on建议:4.3 ORACLE CLUSTER配置OCR使用和备份都正常。相关CRS 的资源和服务都正常。$ olsnodes$ ocrcheck $ ocrconfig -showb
10、ackup$ crsctl check crsCSS appears healthyCRS appears healthyEVM appears healthy$ crs_stat -t健康检查报告 第11页4.4 数据库产品选项当oracle软件安装时,会选择要安装的产品。有某些产品的安装是需要license的,本次检查不涉及license问题。一般,很多系统安装的数据库产品选项根本未被使用。以下列出的安装产品选项可供未来的应用开发参考,或是可以被确认有哪些产品选项未在原计划之内。以下是数据库安装的产品选项:Parameter Value4.5 初始化参数文件数据库SPFILE参数指定了当前
11、使用的数据库配置参数,在数据库启动时被使用。在附录A列出了数据库所有的非默认值的参数。建议:1. 数据库的参数可以看出大部分都是经过精心设置的。2. 建议调整的参数值,请在测试环境数据库中测试确认之后,再调整于生产环境数据库。4.6 CRS日志文件从Oracle 10g RAC版本开始,新增加CRS 组件。CRS对于 RAC使用是必不可少,因此crs的稳定对于RAC数据库的正常运行至关重要。在健康检查中会检查CRS、CSS 和EVM的LOG信息。.建议:2检查 CRS其他相关进程日志,没有发现问题。4.7 RDBMS运行日志和跟踪文件Oracle 数据库进程生成跟踪文件来记录错误或冲突,这些跟
12、踪文件可以用来进一步分析问题。数据库参数max_dump_file_size限制了这些跟踪文件的大小(以操作系统块的大小为单位)。应当有足够的硬盘空间来容纳最大值的设置,否则的话应当修改上述参数的设置。如果参数max_dump_file_size设得太大,会超过硬盘空间容量;如果设得太小,又不能容纳足够的出错信息供oracle 支持服务部门分析问题。此参数可以在数据库会话级设置,这样可以有选择性地设置较大值。注意每天监控运行日志文件中的出错信息,以便于在问题还是隐患的时候及时发现并解决掉。建议每月初将当前的alert.log重新命名以作备份,同时也可以避免alert.log文件变得太大不易管理
13、。在数据库:实例的运行日志文件发现的最近一月内的主要错误如下所示:建议:健康检查报告 第12页4.8 控制文件每个数据库至少有一个控制文件。控制文件记录了数据库的物理结构及同步信息。Control file location控制文件路径如下:Name Status目前所有的控制文件文件存储在已经做了硬件RAID的磁盘阵列上面,提供了硬件级别的保护。建议 : 4.9 Redo log 文件对于恢复操作,最为关键的结构是在线Redo Log 。在线Redo Log一般由两个或两个以上预先分配的存储数据库变化的文件组成。为了防止例程故障,每个数据库的实例都有相关的在线Redo Log。每个数据库至少
14、有两个Redo Log 组,每组至少有一个日志文件。Oracle的多重在线Redo Log文件可以确保在线日志文件的安全。对于多重在线Redo Log 文件,LGWR同时将相同的Redo Log信息写入不同的Redo Log文件中,从而减少单个文件丢失的损失。当Oracle无法访问一个Redo Log文件时,这个文件状态变为INVALID。当Oracle推测一个Redo Log文件不完整或者不正确时,它的状态变为STALE。当一个STALE的文件被重用时,即其所在日志文件组活动时,此文件也能够使用。在线Redo Log文件减少了数据库数据丢失的损失,比如当发生例程故障时,没有被写入数据文件的数
15、据可以从在线Redo Log文件中恢复。Group # Thread # Sequence # Bytes Members Archived Status First Change # First Time健康检查报告 第13页建议:4.10 归档Redo log 文件Oracle允许将写满的在线Redo Log文件存放在一个或多个脱机位置,即归档Redo Log。在线日志文件通过归档写入归档日志文件。后台进程ARCn自动进行归档操作。您能通过归档日志进行: 在线备份 基于时间的恢复Archived Redo Log SettingsParameter Value 建议:这里能够很好地在运行环
16、境中使用归档Redo Log 。这样就能够进行基于时间的恢复。监控归档日志文件所暂时存放的磁盘空间,根据实际情况调整归档日志文件备份到磁带的频度。4.11 数据文件数据文件是数据库分配的物理文件。在Oracle数据库中,一个表空间可以包含一个或多个物理文件。而一个数据文件则只能关联一个表空间和一个数据库。Oracle通过分配一定的磁盘空间以及所需要的文件头空间,为每个表空间创建一个数据文件。Data file locations检测数据文件的位置。当数据文件增长过度,数据库中必须添加数据文件。应该避免“哪里有空间,哪里建文件”的错误方法,因为这样会增加备份策略和文件维护的复杂性。下面列出部分数
17、据文件的位置。Status Name Tablespace File Number Relative File Number Size Used (MB) Used (%) Autoextensible 健康检查报告 第14页建议:目前看来,数据文件存放位置基本准确。Autoextend capabilities通过自动扩展命令进行数据文件的自动扩展。假定数据文件无法分配所需空间,那么它将提高数据文件的大小以获得更多空间。建议:4.12 表空间每个数据库由一个或多个逻辑存储单位,即表空间,所组成。而表空间则由逻辑存储单位段所组成。而段将被分为多个片。Tablespace Management以
18、下是关于数据库表空间管理的信息。Status Name Type Extent ManagementSegment Space ManagementSize (MB)Used (MB)Used (%)建议:Tablespace Default Storage Management每个表空间中,可以为创建的对象指定缺省的存储参数。创建对象时指定的存储参数将覆盖缺省值。如果在创建对象时没有指定存储参数,那么系统将使用缺省值。表空间缺省存储情况:健康检查报告 第15页Name Type Initial ExtentNext ExtentLargest Free ExtentMinimum Exten
19、tsMaximum ExtentsMinimum Extent LengthIncrease (%)数据库表空间的管理方式均为本地管理,这有利于减少表空间级别的碎片,同时避免了DB在进行空间管理时对数据字典表(FET$、UET$)的争用。我们知道系统中存在越多的空闲extent,越容易发生碎片问题。其中空闲extent的大小非常重要,如果在表空间上有许多个无法满足指定的next大小的空闲extent,那这个空闲extent就无法被重新使用并成为碎片,这时就需要重新整理碎片;我们可以使用COALESCE 命令合并相邻的extent,来减少系统中的碎片。如果系统中不连续的小空闲extent 过多,
20、也就是碎片过多,则可能需要通过重建表空间的方式来消除碎片。系统多数表空间使用ASSM,ASSM使用位图而不是传统的FreeList来管理段内的free db block,大大提升了空间管理的性能。同时显著的减少segment header 类型的 buffer busy wait等待事件。建议:表空间的管理方式选择合理。Next Extent保证段能够增长是很重要的,因此在必要时分配next extent。如果在表空间中没有足够的空余空间,那么next extent无法分配,对象也无法增长。在数据库中没有发现无法分配NEXT EXTENT的段。Temporary Tablespace临时表空间
21、用于存放临时段。为了维护数据库的性能,临时表空间的维护方法有别于其他一般表空间。缺省情况下,所有表空间都创建为PERMANENT 。所以在创建临时段时,需要保证表空间类型为 TEMPORARY。由于这些表空间中的排序段不被清除,所以减少了空间事务争夺,同时减少了SMON对于CPU的使用率。当进行长时间清理时,用户无法进行排序操作。在这种情况下,可以指定用户使用状态为PERMANENT的临时表空间。这有可能会引起空间事务争夺,但是可以允许用户在磁盘上进行排序操作。由于表空间的extent 使用了 local management 方式,对表空间采用位图管理,更利于空间的使用及回收管理。Statu
22、sName Size (MiB) Minimum ExtentsMaximum ExtentsMinimum Extent LengthIncrease (%)建议:在数据库TEMP为TEMPORARY类型的表空间,Extent Management 方式为LOCAL。保证每一个数据库用户都被分配一个临时类型的TEMP表空间。以下列出了将PERMANENT表空间作为默认临时表空间的用户:没有发现用户将PERMANENT 表空间作为默认临时表空间。健康检查报告 第16页4.13 回滚段管理回滚段能够用来保证读一致性,回滚事务以及恢复数据库。Rollback Segment List健康检查报告
23、第17页5. 数据库简单风险评估5.1 安全性管理在安全性方面,主要考虑用户访问数据库的控制以及维护系统的安全性问题。Database Administrator Usernames/PasswordsOracle自动生成两个用户,并授予DBA 权限: SYS SYSTEM 经检查,SYS和SYSTEM都没有使用初始缺省密码。这样有利于维护数据库的安全性,否则任何具有Oracle知识背景的人都能进入数据库。建议:目前数据库用户安全方面设置良好,设置安全合理。SYSDBA Users被授予SYSDBA权限的用户能够进行DBA的操作,包括建立数据库,关闭数据库。建议:目前数据库不存在具有DBA权限
24、的业务用户,用户权限管理情况较好。健康检查报告 第18页6. SqlNet 概况Net8能够在不同计算机上安装服务和应用程序,并且能够使它们如同同一层上的应用程序一样进行通信。Net8的主要功能就是创建网络通话,并且在客户端和服务器端,或者两个服务器端之间转换数据。Net8必须安装在网络的每台机器上。当网络通路建立,Net8扮演着客户端和服务器端数据投递者的角色。6.1 监听器Listener位于服务器端的监听程序是单独的进程。它从客户端接受连接请求,并管理这些对服务端的请求。当前LISTENER的参数设置如下:Parameter Value STARTUP_WAIT_TIME_LISTENE
25、R N/ACONNECT_TIMEOUT_LISTENER N/ATRACE_LEVEL_LISTENER N/A只有当SQLNET需要跟踪判断所出现的问题时,TRACE_LEVEL_LISTENER才需要被设置。所获得的跟踪文件需交由Oracle Support进行分析。SQLNET跟踪只需在一段时间内开启,因为这将占用一些网络资源。6.2 SQL*Net配置文件SQLNET.ORA包含了客户端和服务器对SQL*Net配置的设置信息。当前的SQLNET参数如下:Parameter Value AUTORCLATIC_IPC N/ATRACE_LEVEL_CLIENT N/ATRACE_FIL
26、E_CLIENT N/ATRACE_DIRECTORY_CLIENT N/ASQLNET.EXPIRE_TIME N/A6.3 TNSNAMESTNSNAMES.ORA包含与连接描述符相匹配的网络服务名。连接描述符包括监听程序的地址以及connect_data。TNSNAMES.ORA设置如下:由于TNSNAMES 中相关的网络服务名比较多,完整的 TNSNAMES.ORA中的内容可以见服务器上的配置文件。健康检查报告 第19页7. 数据库性能数据库的性能情况通过AWR的报告来体现。由于本次检查并不是完整的性能检查,所以本报告只列举最主要的性能问题。XXXXSnap Id Snap Time
27、Sessions Cursors/SessionBegin Snap:End Snap:Elapsed:DB Time:YYYYSnap Id Snap Time Sessions Cursors/SessionBegin Snap:End Snap:Elapsed:DB Time:我们可以参考用户系统忙时的AWR信息进行分析,不一定局限于检查时段,这样可以更加深入的发现问题。 7.1 数据库各项基于时间模型的统计信息对数据库业务负荷压力最大情况下每一个实例的一个AWR报告的列出主要的性能结果,如数据库各项基于时间模型的统计信息等:XXXXStatistic Name Time (s) % o
28、f DB Timesql execute elapsed timeDB CPUparse time elapsedhard parse elapsed timehard parse (sharing criteria) elapsed timePL/SQL execution elapsed timePL/SQL compilation elapsed timeconnection management call elapsed timesequence load elapsed timerepeated bind elapsed timehard parse (bind mismatch)
29、elapsed timeDB timebackground elapsed timebackground cpu timeYYYYStatistic Name Time (s) % of DB TimeDB CPUsql execute elapsed timeparse time elapsedhard parse elapsed timehard parse (sharing criteria) elapsed timehard parse (bind mismatch) elapsed timePL/SQL execution elapsed timesequence load elap
30、sed timePL/SQL compilation elapsed timeconnection management call elapsed timeinbound PL/SQL rpc elapsed timerepeated bind elapsed time健康检查报告 第20页DB timebackground elapsed timebackground cpu time7.2 数据库负荷压力分析XXXXLoad Profile Per Second Per TransactionRedo size:Logical reads:Block changes:Physical re
31、ads:Physical writes:User calls:Parses:Hard parses:Sorts:Logons:Executes:Transactions:% Blocks changed per Read: Recursive Call %:Rollback per transaction %: Rows per Sort:YYYYLoad Profile Per Second Per TransactionRedo size:Logical reads:Block changes:Physical reads:Physical writes:User calls:Parses
32、:Hard parses:Sorts:Logons:Executes:Transactions:% Blocks changed per Read: Recursive Call %:Rollback per transaction %: Rows per Sort:7.3 各项命中率XXXXInstance Efficiency Percentages (Target 100%) Buffer Nowait %: Redo NoWait %:Buffer Hit %: In-memory Sort %:Library Hit %: Soft Parse %:Execute to Parse
33、%: Latch Hit %:Parse CPU to Parse Elapsd %: % Non-Parse CPU:YYYYInstance Efficiency Percentages (Target 100%) 健康检查报告 第21页Buffer Nowait %: Redo NoWait %:Buffer Hit %: In-memory Sort %:Library Hit %: Soft Parse %:Execute to Parse %: Latch Hit %:Parse CPU to Parse Elapsd %: % Non-Parse CPU:7.4 等待事件列出最主
34、要的等待事件:XXXXEvent Waits Time(s) Avg Wait(ms) % Total Call Time Wait ClassYYYYEvent Waits Time(s) Avg Wait(ms) % Total Call Time Wait Class7.5 统计信息分析我们选取业务最为繁忙的上午时段的AWR报告进行分析。一、 关于 CPU 数据库使用情况Total per Second per TransCPU used by this sessionparse time cpurecursive cpu usage分析:可以看出系统 CPU 主要用于 SQL 语句的真
35、正的执行阶段。二、 关于数据库事务提交/会滚性能指标Total per Second per Transuser callsuser commitsuser rollbacks分析:在实例快照统计中,用户回滚率正常。7.6 数据库I/O 性能1、 本数据库的数据文件绝大部分的平均的读取时间20ms,表示当前的数据库 I/O 速度是可以接受的,如果有一健康检查报告 第22页些数据文件的平均读取时间大于 20ms,需要引起注意。2、 ORACLE 认为平均读取时间大于 20ms 是 I/O 性能比较差的,如果一个数据文件的平均读取时间一直大于20ms 的话,建议:应该检查对该数据文件上的查询语句,
36、并且优化 SQL 语句。如果该数据文件包含索引,一个可以考虑的选择是使用压缩索引来减少 I/O。数据文件应该尽量条带化,分布在不同的物理硬盘上面。7.7 索引/ 行迁移/行链索引索引需要维护。对于表的删除或者添加操作都会间接地对索引进行相应操作。过时的索引结构会产生碎片,此时索引需要被重新建立。当前数据库中未发现需要重建的索引。行链当一条记录太大,一个数据块无法将其存储时,oracle 就会将其存储在相链接的块中。如果一条记录中含有数据类型如:LONG,LONG RAW,LOB, 行链则无法避免。行迁移当一个数据块已满,而一条记录在更新后记录长度增加了,这时oracle 就会将整个记录迁移到一
37、个新的数据块,这就是行迁移。Rowid 在行迁移之后保持不变。除大数据类型之外,上述情况对数据库的性能是有影响的。从上面实例活动统计部分的table fetch continued row分析可以看出当前数据库中链接行的多少。关于行迁移/行链接统计信息Total per Second per Trans目前行链接较少,但是仍需关注,是否行链接集中在特定的segment,以及是否属于不可避免的行链接情况。建议:为避免或者尽量减少出现行链接/行迁移的可能,建议适当增大表、表分区的 pctfree 存储参数。7.8 Enqueue等待分析在统计报告中的TOP5 event中均没有出现Enqueue等
38、待事件,说明Enqueue等待不是系统的性能瓶颈,性能良好。7.9 Latch分析在数据库的latch命中率为n%以上,符合要求。健康检查报告 第23页7.10 Resource Limit分析下面列出了出现在Resource limit统计的Resource情况,需要客户和应用开发厂家根据业务情况评估是否需要调整:Resource Name Current Utilization Max Utilization Initial Allocation Limit Value7.11 Top SQL语句列出最消耗系统逻辑IO(Buffer Gets)的三条SQL语句:Buffer Gets Ex
39、ecutions Gets per Exec %Total CPU Time (s) Elapsed Time (s) SQL Id SQL Module SQL Text建议:1、 使用explain plan去分析TOP SQL的执行计划,找出消耗资源较高的原因。健康检查报告 第24页8. 数据库备份策略评估8.1 备份备份策略每天对数据库做全库备份。建议:使用RMAN对数据库进行备份。8.2 恢复恢复策略建议:定期进行恢复测试以确保备份的可用性和恢复步骤的熟悉。1、根据不同的数据库失败情况制定相应的恢复策略。 数据库全库恢复 表空间恢复 数据文件恢复 数据表恢复2、根据制定的恢复策略进行恢复测试。健康检查报告 第25页9. 数据库特别关注点检查健康检查报告 第26页10. 检查总结健康检查报告 第27页附录:初始化参数数据库所有非默认值的参数:Parameter Name Value Modified健康检查报告 第28页