Oracle数据库巡检报告.docx
《Oracle数据库巡检报告.docx》由会员分享,可在线阅读,更多相关《Oracle数据库巡检报告.docx(8页珍藏版)》请在冰豆网上搜索。
Oracle数据库巡检报告
XXX数据库【XXX】巡检报告
1第一部分操作系统参数检查
1.1检查数据库cpu、I/O、内存性能
#top
检查结果:
正常
1.2检查Oracle服务进程
(1)检查所有oracle相关进程
#ps-ef|grepora_
(2)查看是否有僵死进程
SQL>selectspidfromv$processwhereaddrnotin(selectpaddrfromv$session);
检查结果:
正常
在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:
Oracle写数据文件的进程,输出显示为:
“ora_dbw0_CKDB”
Oracle写日志文件的进程,输出显示为:
“ora_lgwr_CKDB”
Oracle监听实例状态的进程,输出显示为:
“ora_smon_CKDB”
Oracle监听客户端连接进程状态的进程,输出显示为:
“ora_pmon_CKDB”
Oracle进行归档的进程,输出显示为:
“ora_arc0_CKDB”
Oracle进行检查点的进程,输出显示为:
“ora_ckpt_CKDB”
Oracle进行恢复的进程,输出显示为:
“ora_reco_CKDB”
2第二部分Oracle数据库检查
2.1数据库状态
2.1.1检查oracle环境变量
#cat/home/oracle/.profile
检查结果:
正常
2.1.2检查监听状态
$lsnrctlstatus
检查结果:
正常
2.1.3查看Oracle初始化参数
SQL>showparameter
检查结果:
正常
2.1.4检查Oracle的实例状态
SQL>selectstatusfromv$instance;
检查结果:
正常
其中"STATUS"表示Oracle当前的实例状态,必须为"OPEN";"DATABASE_STATUS"表示Oracle当前数据库的状态,必须为"ACTIVE"。
2.1.5检查数据库读写状态
SQL>selectopen_modefromv$database;
检查结果:
正常
2.1.6查看oracle数据库的版本
SQL>select*fromv$version;
检查结果:
正常
2.1.7查看sga、pga详细信息
SQL>select*fromv$sgainfo;
SQL>select*fromv$pgastat;
检查结果:
正常
2.1.8检查控制文件状态
SQL>selectname,statusfromv$controlfile;
检查结果:
正常
2.1.9检查日志文件状态
SQL>selectgroup#,status,type,memberfromv$logfile;
检查结果:
正常
2.1.10检查alter日志
SQL>showparameterbackground_dump_dest
$tail-1000alert_实例名.log
检查结果:
正常
查看有无“ORA-”,Error”,“Failed”等出错信息。
根据错误信息进行分析并解决
检查当前crontab任务
(1)任务清单
$crontab-l
(2)OracleJob是否有失败
SQL>selectjob,what,last_date,next_date,failures,brokenfromdba_jobsWhereschema_user='CAIKE';
检查结果:
正常
2.2数据库空间监控
2.2.1检查数据库的大小,和空间使用情况
(1)查所有表空间总量:
SQL>selectsum(tablespace_size*8192/1024/1024/1024)"totalmsize(G)"fromdba_tablespace_usage_metrics;
(2)datafile占文件系统的空间
SQL>selectsum(bytes)/1024/1024/1024GBfromdba_data_files;
(3)查所有表空间使用量(11g)
SQL>SELECT/*+RULE*/"Tablespace",
/(1024*1024)"Size(MB)",
SUM/(1024*1024)"Free(MB)",
Nvl(Round(SUM*100/,1)"%Free",
Round(-SUM)*100/"%Used"
FROMdba_free_spacefs,
(SELECTtablespace_name,SUM(bytes)bytes
FROMdba_data_files
GROUPBYtablespace_name)df
WHERE(+)=
GROUPBY,
UNIONALL
SELECT/*+RULE*/tspace,
/(1024*1024),
SUM/(1024*1024),
Nvl(Round((SUM-*100/,1),
Round((SUM-*100/
FROMdba_temp_filesfs,
(SELECTtablespace_name,bytes_free,bytes_used
FROMv$temp_space_header
GROUPBYtablespace_name,bytes_free,bytes_used)df
WHERE(+)=
GROUPBY,,,
ORDERBY4DESC;
(4)检查一些扩展异常的对象
SQL>selectSegment_Name,Segment_Type,TableSpace_Name,
(Extents/Max_extents)*100PercentFrom
WhereMax_Extents!
=0and(Extents/Max_extents)*100>=95
orderByPercent;
检查结果:
正常
查看数据库是否处于归档模式
SQL>archiveloglist;
检查结果:
正常
检查表空间物理文件的名称及大小
SQL>colnamefora55
SQL>selectfile#,ts#,status,namefromv$datafile;
检查结果:
正常
数据库数据文件等所在目录使用情况
#df-h
检查结果:
正常
2.3数据库性能、资源、对象检查
负载情况(LoadProfile)
生成awr报告
SQL>@/rdbms/admin/awrrpt
检查结果:
正常
如果DBtime远小于elapse说明数据库比较空闲
如果Logons大于每秒1~2个、Hardparses大于每秒100、全部parses超过每秒300表明可能有争用问题
数据库内存命中率(InstanceEfficiencyPercentages(Target100%))
检查结果:
正常
BufferNowait表示在内存获得数据的未等待比例。
BufferNowait的这个值一般需要大于99%。
否则可能存在争用,可以在后面的等待事件中进一步确认。
RedoNoWait表示在LOG缓冲区获得BUFFER的未等待比例。
如果太低(可参考90%阀值),考虑增加LOGBUFFER
bufferhit表示进程从内存中找到数据块的比率。
常应在95%以上。
否则,小于95%,需要调整重要的参数,小于90%可能是要加db_cache_size。
In-memorySort:
在内存中排序的比率。
如果低于95%,可以通过适当调大初始化参数PGA_AGGREGATE_TARGET或者SORT_AREA_SIZE来解决
libraryhit表示Oracle从LibraryCache中检索到一个解析过的SQL或PL/SQL语句的比率。
如果libraryhitratio低于90%,可能需要调大sharedpool区。
SoftParse:
软解析的百分比(softs/softs+hards)小于<95%,需要考虑绑定,如果低于80%,那么就可以认为sql基本没有被重用
ExecutetoParse:
是语句执行与分析的比例。
该值<0通常说明sharedpool设置或者语句效率存在问题,造成反复解析
LatchHit:
Latch是一种保护内存结构的锁。
要确保>99%,否则存在严重的性能问题。
ParseCPUtoParseElapsd:
解析实际运行时间/(解析实际运行时间+解析中等待资源时间)越高越好。
Non-ParseCPU:
SQL实际运行时间/(SQL实际运行时间+SQL解析时间),太低表示解析消耗时间过多
监控等待事件(Top5TimedEvents)
检查结果:
正常
一个性能良好的系统,cputime应该在top5的前面,否则说明你的系统大部分时间都用在等待上。
检查无效的数据对象
SQL>colOBJECT_NAMEfora35
SQL>SELECTowner,object_name,object_type,statusFROMdba_objectsWHEREstatus='INVALID';
检查结果:
正常
如存在状态为N/A的表示分区对象,不用理会
检查碎片程度高的表
SQL>SELECTsegment_nametable_name,COUNT(*)extentsFROMdba_segmentsWHEREowner
NOTIN('SYS','SYSTEM')GROUPBYsegment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*))FROMdba_segmentsGROUPBYsegment_name);
检查结果:
正常
检查排序区
SQL>selectname,valuefromv$sysstatwherenamelike'%sort%';
检查结果:
正常
如果disk/(memoty+row)的比例过高,则需要调整
检查日志缓冲区
SQL>selectname,valuefromv$sysstatwherenamein('redoentries','redobufferallocationretries');
检查结果:
正常
如果redobufferallocationretries/redoentries超过1%,则需要增大log_buffer。
检查Oracle初始化文件中相关参数值
SQL>selectresource_name,max_utilization,initial_allocation,limit_valuefromv$resource_limit;
检查结果:
正常
若LIMIT_VALU-MAX_UTILIZATION<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。
检查数据库连接情况
SQL>selectsid,serial#,username,program,machine,statusfromv$session;
检查结果:
正常
建议通过sid查到操作系统的spid,使用ps–ef|grepspidno的方式确认spid不是ORACLE的后台进程。
使用操作系统的kill-9命令杀掉连接),SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
检查system表空间内的内容
SQL>selectdistinct(owner)fromdba_tableswheretablespace_name='SYSTEM'andowner!
='SYS'andowner!
='SYSTEM'Unionselectdistinct(owner)fromdba_indexeswheretablespace_name='SYSTEM'andowner!
='SYS'andowner!
='SYSTEM';
检查结果:
正常
如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。
应该进一步检查这些对象是否与我们应用相关。
如果相关则把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。
检查表空间碎片率
(1)查看fsfi值,如果碎片率小于30则说明碎片过多
SQL>select,
trunc(sqrt(max(blocks)/sum(blocks))*(100/sqrt(sqrt(count(blocks)))),2)fsfi
fromdba_free_spacea,dba_tablespacesb
where=
andnotin('TEMPORARY','UNDO','SYSAUX')
groupby
orderbyfsfi;
(2)查看dba_free_space采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理
SQL>select,count
(1)碎片量from
dba_free_spacea,dba_tablespacesb
where=
andnotin('TEMPORARY','UNDO','SYSAUX')
groupby
havingcount
(1)>20
orderby2;
检查结果:
正常
检查死锁
SQL>selectsid,serial#,username,SCHEMANAME,osuser,MACHINE,terminal,PROGRAM,owner,object_name,object_type,
fromdba_objectso,v$locked_objectl,v$sessionswhere=and=;
检查结果:
正常
2.4数据库备份检查
检查数据库备份日志信息
#cat|grep–ierror
检查结果:
正常
检查backup卷中文件产生的时间
#ls–lt/XXX/XXX
检查结果:
正常
检查oracle用户的email
#tail-n300/var/mail/oracle
检查结果:
正常
3第三部分总结