1. 检查数据库基本状况... 4
1.1. 检查Oracle实例状态... 4
1.2. 检查Oracle服务进程... 4
1.3. 检查Oracle监听状态... 5
2. 检查系统和oracle日志文件... 6
2.1. 检查操作系统日志文件... 6
2.2. 检查oracle日志文件... 6
2.3. 检查Oracle核心转储目录... 7
2.4. 检查Root用户和Oracle用户的email. 7
3. 检查Oracle对象状态... 7
3.1. 检查Oracle控制文件状态... 7
3.2. 检查Oracle在线日志状态... 8
3.3. 检查Oracle表空间的状态... 8
3.4. 检查Oracle所有数据文件状态... 8
3.5. 检查无效对象... 9
3.6. 检查所有回滚段状态... 10
4. 检查Oracle相关资源的使用情况... 10
4.1. 检查Oracle初始化文件中相关参数值... 10
4.2. 检查数据库连接情况... 11
4.3. 检查系统磁盘空间... 12
4.4. 检查表空间使用情况... 12
4.5. 检查一些扩展异常的对象... 13
4.6. 检查system表空间内的内容... 14
4.7. 检查对象的下一扩展与表空间的最大扩展值... 14
5. 检查Oracle数据库备份结果... 14
5.1. 检查数据库备份日志信息... 15
5.2. 检查backup卷中文件产生的时间... 15
5.3. 检查oracle用户的email. 15
6. 检查Oracle数据库性能... 15
6.1. 检查数据库的等待事件... 15
6.2. Disk Read最高的SQL语句的获取... 15
6.3. 查找前十条性能差的sql. 16
6.4. 等待时间最多的5个系统等待事件的获取... 16
6.5. 检查运行很久的SQL. 16
6.6. 检查消耗CPU最高的进程... 16
6.7. 检查碎片程度高的表... 17
6.8. 检查表空间的 I/O 比例... 17
6.9. 检查文件系统的 I/O 比例... 17
6.10. 检查死锁及处理... 17
6.11. 检查数据库cpu、I/O、内存性能... 18
6.12. 查看是否有僵死进程... 19
6.13. 检查行链接/迁移... 19
6.14. 定期做统计分析... 19
6.15. 检查缓冲区命中率... 20
6.16. 检查共享池命中率... 20
6.17. 检查排序区... 20
6.18. 检查日志缓冲区... 21
7. 检查数据库安全性... 21
7.1. 检查系统安全日志信息... 21
7.2. 检查用户修改密码... 21
8. 其他检查... 22
8.1. 检查当前crontab任务是否正常... 22
8.2. Oracle Job是否有失败... 22
8.3. 监控数据量的增长情况... 22
8.4. 检查失效的索引... 23
8.5. 检查不起作用的约束... 23
8.6. 检查无效的trigger. 23
巡检内容
1. 检查数据库基本状况
在本节中主要对数据库的基本状况进行检查,其中包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。
1.1. 检查Oracle实例状态
SQL> select instance_name,host_name,startup_time,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”。
SQL> select name,log_mode,open_mode from v$database;
NAME LOG_MODE OPEN_MODE
--------- ------------ -----------------
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 l
oracle 2960 1 0 May07 00:01:02 ora_pmon_CKDB
oracle 2962 1 0 May07 00:00:22 ora_psp0_CKDB
oracle 2964 1 0 May07 00:00:00 ora_mman_CKDB
oracle 2966 1 0 May07 00:03:20 ora_dbw0_CKDB
oracle 2968 1 0 May07 00:04:29 ora_lgwr_CKDB
oracle 2970 1 0 May07 00:10:31 ora_ckpt_CKDB
oracle 2972 1 0 May07 00:03:45 ora_smon_CKDB
oracle 2974 1 0 May07 00:00:00 ora_reco_CKDB
oracle 2976 1 0 May07 00:01:24 ora_cjq0_CKDB
oracle 2978 1 0 May07 00:06:17 ora_mmon_CKDB
oracle 2980 1 0 May07 00:07:26 ora_mmnl_CKDB
oracle 2982 1 0 May07 00:00:00 ora_d000_CKDB
oracle 2984 1 0 May07 00:00:00 ora_s000_CKDB
oracle 2994 1 0 May07 00:00:28 ora_arc0_CKDB
oracle 2996 1 0 May07 00:00:29 ora_arc1_CKDB
oracle 3000 1 0 May07 00:00:00 ora_qmnc_CKDB
oracle 3625 1 0 May07 00:01:40 ora_q000_CKDB
oracle 31594 1 0 Jul20 00:00:00 ora_q003_CKDB
oracle 23802 1 0 05:09 00:00:33 ora_j000_CKDB
19
在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:
. Oracle写数据文件的进程,输出显示为:“ora_dbw0_CKDB”
. Oracle写日志文件的进程,输出显示为:“ora_lgwr_ CKDB”
. Oracle监听实例状态的进程,输出显示为:“ora_smon_ CKDB”
. Oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_ CKDB”
. Oracle进行归档的进程,输出显示为:“ora_arc0_ CKDB”
. Oracle进行检查点的进程,输出显示为:“ora_c