1、6.3. 查找前十条性能差的sql 36.4. 等待时间最多的5个系统等待事件的获取 36.5. 检查运行很久的SQL 36.6. 检查消耗CPU最高的进程 36.7. 检查碎片程度高的表 36.8. 检查表空间的 I/O 比例 36.9. 检查文件系统的 I/O 比例 36.10. 检查死锁及处理 36.11. 检查数据库cpu、I/O、内存性能 36.12. 查看是否僵死进程 36.13. 检查行链接/迁移 36.14. 定期做统计分析 36.15. 检查缓冲区命中率 36.16. 检查共享池命中率 36.17. 检查排序区 36.18. 检查日志缓冲区 37. 检查数据库安全性 37.1
2、. 检查系统安全日志信息 37.2. 检查用户修改密码 38. 其他检查 38.1. 检查当前crontab任务是否正常 38.2. Oracle Job是否失败 38.3. 监控数据量的增长情况 38.4. 检查失效的索引 38.5. 检查不起作用的约束 38.6. 检查无效的trigger 3巡检内容1. 检查数据库基本状况在本节中主要对数据库的基本状况进行检查,其中包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共3个部分。1.1. 检查Oracle实例状态 SQL select instance_name,host_name,startup_time
3、,status,database_status from v$instance; INSTANCE_NAME HOST_NAME STARTUP_TIME STATUS DATABASE_STATUS- - - - - -CKDB AS14 2009-5-7 9:3 OPEN ACTIVE其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。 select name,log_mode,open_mode from v$database;NAME LOG_MODE OPEN_MODE-
4、- -CKDB ARCHIVELOG READ WRITE其中“LOG_MODE”表示Oracle当前的归档方式。“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG”表示数据库运行在非归档模式下。在我们的系统中数据库必须运行在归档方式下。1.2. 检查Oracle服务进程$ps -ef|grep ora_|grep -v grep&ps -ef|grep ora_|grep -v grep|wc -loracle 2960 1 0 May07 ? 00:01:02 ora_pmon_CKDBoracle 2962 1 0 May07 ?00:22 ora_psp0_
5、CKDBoracle 2964 1 0 May07 ?00 ora_mman_CKDBoracle 2966 1 0 May07 ?03:20 ora_dbw0_CKDBoracle 2968 1 0 May07 ?04:29 ora_lgwr_CKDBoracle 2970 1 0 May07 ?10:31 ora_ckpt_CKDBoracle 2972 1 0 May07 ?45 ora_smon_CKDBoracle 2974 1 0 May07 ?00 ora_reco_CKDBoracle 2976 1 0 May07 ?24 ora_cjq0_CKDBoracle 2978 1
6、0 May07 ?06:17 ora_mmon_CKDBoracle 2980 1 0 May07 ?07:26 ora_mmnl_CKDBoracle 2982 1 0 May07 ?00 ora_d000_CKDBoracle 2984 1 0 May07 ?00 ora_s000_CKDBoracle 2994 1 0 May07 ?28 ora_arc0_CKDBoracle 2996 1 0 May07 ?29 ora_arc1_CKDBoracle 3000 1 0 May07 ?00 ora_qmnc_CKDBoracle 3625 1 0 May07 ?40 ora_q000_
7、CKDBoracle 31594 1 0 Jul20 ?00 ora_q003_CKDBoracle 23802 1 0 05:09 ?33 ora_j000_CKDB19在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:. Oracle写数据文件的进程,输出显示为:“ora_dbw0_CKDB” . Oracle写日志文件的进程,输出显示为:“ora_lgwr_ CKDB” . Oracle监听实例状态的进程,输出显示为:“ora_smon_ CKDB” . Oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_ CKDB” . Oracle进行归档的进
8、程,输出显示为:“ora_arc0_ CKDB” . Oracle进行检查点的进程,输出显示为:“ora_ckpt_ CKDB” . Oracle进行恢复的进程,输出显示为:“ora_reco_ CKDB”1.3. 检查Oracle监听状态/home/oraclelsnrctl statusLSNRCTL for Linux: Version 10.2.0.2.0 - Production on 23-JUL-2009 14:11:53Copyright (c) 1991, 2005, Oracle. All rights reserved.Connecting to (ADDRESS=(PR
9、OTOCOL=tcp)(HOST=)(PORT=1521)STATUS of the LISTENER-Alias LISTENERVersion TNSLSNR for Linux: Version 10.2.0.2.0 - ProductionStart Date 07-MAY-2009 09:35:52Uptime 77 days 4 hr. 36 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /data/oracle/product/10.2.0/
10、network/admin/listener.oraListener Log File /data/oracle/product/10.2.0/network/log/listener.logListening Endpoints Summary. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=AS14)(PORT=1521)Services Summary.Service CKDB has 1 instance(s). Instance , status READY, has 1 handler(s) for this service.CKDBXDBCK
11、DB_XPTThe command completed successfully“Services Summary”项表示Oracle的监听进程正在监听哪些数据库实例,输出显示中至少应该“CKDB”这一项。检查监听进程是否存在:oracleAS14 $ ps -ef|grep lsn|grep -v greporacle 2954 1 0 May07 ?17 /data/oracle/product/10.2.0/bin/tnslsnr LISTENER -inherit2. 检查系统和oracle日志文件在本节主要检查相关的日志文件,包含:检查操作系统的日志文件,检查Oracle日志文件,检
12、查Oracle核心转储目录,检查Root用户和Oracle用户的email,总共四个部分。2.1. 检查操作系统日志文件# cat /var/log/messages |grep failed查看是否与Oracle用户相关的出错信息。2.2. 检查oracle日志文件oracleAS14 $ cat /data/oracle/admin/CKDB/bdump/alert_CKDB.log |grep ora-oracleAS14 $ cat /data/oracle/admin/CKDB/bdump/alert_CKDB.log |grep erroracleAS14 $ cat /data/
13、oracle/admin/CKDB/bdump/alert_CKDB.log |grep fail Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:数据库的启动、关闭,启动时的非缺省参数;数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没执行完成造成不能切换,会记录不能切换的原因;对数据库进行的某些操作,如创建或删除表空间、增加数据文件;数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA600)等。定期检查日志文件,根据日志中发现的问题及时进行处理:问题处理启动参数不对检查初始化参数文件
14、因为检查点操作或归档操作没完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;人XX删除了表空间检查数据库的安全问题,是否密码太简单;如必要,撤消某些用户的系统权限出现坏块检查是否是硬件问题(如磁盘本生坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁Listener日志:$ORACLE_HOME/network/log2.3. 检查Oracle核心转储目录$ls $ORACLE
15、_BASE/admin/CKDB/cdump/*.trc|wc -l $ls $ORACLE_BASE/admin/CKDB/udump/*.trc|wc -l如果上面命令的结果每天都在增长,则说明Oracle进程经常发生核心转储。这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。2.4. 检查Root用户和Oracle用户的email#tail -n 200 /var/mail/root#tail -n 200 /var/mail/oracle查看无与Oracle用户相关的出错信息。3. 检查Oracle对象状
16、态在本节主要检查相关Oracle对象的状态,包含:检查Oracle控制文件状态,检查Oracle在线日志状态,检查Oracle表空间的状态,检查Oracle所数据文件状态,检查Oracle所表、索引、存储过程、触发器、包等对象的状态,检查Oracle所回滚段的状态,总共六个部分。3.1. 检查Oracle控制文件状态 select status,name from v$controlfile;STATUS NAME- - /data/oradata/CKDB/control01.ctl /data/oradata/CKDB/control02.ctl /data/oradata/CKDB/co
17、ntrol03.ctl输出结果应该3条以上(包含3条的记录,“STATUS”应该为空。状态为空表示控制文件状态正常。3.2. 检查Oracle在线日志状态 select group#,status,type,member from v$logfile; GROUP# STATUS TYPE MEMBER- - - - 3 ONLINE /data/oradata/CKDB/redo03.log 2 ONLINE /data/oradata/CKDB/redo02.log 1 ONLINE /data/oradata/CKDB/redo01.log 4 ONLINE /data/oradata/
18、CKDB/redo04.log 5 ONLINE /data/oradata/CKDB/redo05.log 6 ONLINE /data/oradata/CKDB/redo06.log6 rows selected输出结果应该3条以上(包含3条记录,“STATUS”应该为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表示正常。3.3. 检查Oracle表空间的状态 select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME STATUS- -SYSTEM ONLINEUNDOTBS1 ONL
19、INESYSAUX ONLINETEMP ONLINEUSERS ONLINESJ1 ONLINEADM_INDEX ONLINEHOME_DATA ONLINEHOME_INDEX ONLINEPHOTO_DATA ONLINEPHOTO_INDEX ONLINE。输出结果中STATUS应该都为ONLINE。3.4. 检查Oracle所数据文件状态 select name,status from v$datafile;NAME STATUS- -/data/oradata/CKDB/system01.dbf SYSTEM/data/oradata/CKDB/undotbs01.dbf ONL
20、INE/data/oradata/CKDB/sysaux01.dbf ONLINE/data/oradata/CKDB/users01.dbf ONLINE/data/oradata/CKDB/sj.dbf ONLINE/data/oradata/CKDB/HOME_DATA1.dbf ONLINE/data/oradata/CKDB/HOME_INDEX1.dbf ONLINE/data/oradata/CKDB/PHOTO_DATA1.dbf ONLINE/data/oradata/CKDB/PHOTO_INDEX1.dbf ONLINE/data/oradata/CKDB/BLOG_DA
21、TA1.dbf ONLINE/data/oradata/CKDB/BLOG_INDEX1.dbf ONLINE/data/oradata/CKDB/AUDIO_DATA1.dbf ONLINE/data/oradata/CKDB/AUDIO_INDEX1.dbf ONLINE/data/oradata/CKDB/VIDEO_DATA1.dbf ONLINE/data/oradata/CKDB/VIDEO_INDEX1.dbf ONLINE/data/oradata/CKDB/SYS_DATA1.dbf ONLINE/data/oradata/CKDB/SYS_INDEX1.dbf ONLINE
22、/data/oradata/CKDB/ADM_DATA1.dbf ONLINE/data/oradata/CKDB/ADM_INDEX1.dbf ONLINE/data/oradata/CKDB/perfstat.dbf ONLINE输出结果中“STATUS”应该都为“ONLINE”。或者: select file_name,status from dba_data_files;FILE_NAME STATUS- -/data/oradata/CKDB/users01.dbf AVAILABLE/data/oradata/CKDB/sysaux01.dbf AVAILABLE/data/ora
23、data/CKDB/undotbs01.dbf AVAILABLE/data/oradata/CKDB/system01.dbf AVAILABLE/data/oradata/CKDB/sj.dbf AVAILABLE/data/oradata/CKDB/perfstat.dbf AVAILABLE/data/oradata/CKDB/HOME_DATA1.dbf AVAILABLE/data/oradata/CKDB/HOME_INDEX1.dbf AVAILABLE/data/oradata/CKDB/PHOTO_DATA1.dbf AVAILABLE输出结果中“STATUS”应该都为“A
24、VAILABLE”。3.5. 检查无效对象sqlselect owner,object_name,object_type from dba_objects where status!=VALID and owner!SYSSYSTEM;no rows selected 如果记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象,或者:SELECT owner, object_name, object_type FROM dba_objects WHERE status= INVALID3.6. 检查所回滚段状态 select segment_name,status f
25、rom dba_rollback_segs;SEGMENT_NAME STATUS- -_SYSSMU1$ ONLINE_SYSSMU2$ ONLINE_SYSSMU3$ ONLINE_SYSSMU4$ ONLINE_SYSSMU5$ ONLINE_SYSSMU6$ ONLINE_SYSSMU7$ ONLINE_SYSSMU8$ ONLINE_SYSSMU9$ ONLINE_SYSSMU10$ ONLINE11 rows selected输出结果中所回滚段的“STATUS”应该为“ONLINE”。4. 检查Oracle相关资源的使用情况在本节主要检查Oracle相关资源的使用情况,包含:检查O
26、racle初始化文件中相关的参数值,检查数据库连接情况,检查系统磁盘空间,检查Oracle各个表空间使用情况,检查一些扩展异常的对象,检查system表空间内的内容,检查对象的下一扩展与表空间的最大扩展值,总共七个部分。4.1. 检查Oracle初始化文件中相关参数值 select resource_name,max_utilization,initial_allocation, limit_value from v$resource_limit;RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCAT LIMIT_VALUE- - - -processes 162 500 500sessions 168 555 555enqueue_loc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1