数据库紧急情况检查应急预案
第一章、 公共检查部分 ................................................................................................... 2
1.1、数据库可用性检查 .................................................................................................. 2 1.2、检查OS日志 ........................................................................................................... 2 1.3、系统资源检查 .......................................................................................................... 2 1.4、数据库日志检查 ...................................................................................................... 3 1.5、检查数据库归档日志目录 ...................................................................................... 3 第二章、 数据库个别业务性能问题 ............................................................................... 3
2.1、大部分业务基本正常,个别业务长时间执行未成功 .......................................... 3 2.2、单个ORACLE连接进程持续非常繁忙 ................................................................ 4 第三章、 数据库整体性能问题 ....................................................................................... 5
3.1 等待事件 .................................................................................................................... 5 3.2 获取STATSPACK\\AWR报告 .................................................................................. 5 3.3 获取执行计划 ............................................................................................................ 5 3.4 相应的处理建议 ........................................................................................................ 6 第四章、 整个数据库hang .............................................................................................. 6
4.1不能使用sqlplus / as sysdba进入数据库时 ............................................................. 6 4.2能使用sqlplus / as sysdba进入数据库时 ................................................................. 6 4.3 执行RDA收集信息 ................................................................................................. 7 4.4 收集最近的STATSPACK/AWR报告 ...................................................................... 7 4.5 收集10G ASH报告 .................................................................................................. 7 4.6 收集10GR2的CRS信息 ......................................................................................... 8
第一章、 公共检查部分 1.1、数据库可用性检查
分别尝试从pl/sql开发工具和数据库主机登录数据库看能否登录 oracle用户登录后,执行如下操作:
select object_id from dba_objects where rownum < 5;
create table tmp0001 select object_id from dba_objects where rownum < 5; drop table tmp0001;
select * from dba_2pc_pending;
1)如果以上SQL可顺利快速执行,最后的SQL也没有返回被挂起的两阶段提交事务,说明数据库不是阻塞所有业务的原因
2)如果以上SQL执行非常缓慢或被HANG住,表明当前数据库存在问题 3)如果应用、中间件日志中有数据库方面的报错,根据错误号进行分析
1.2、检查OS日志
查看OS日志,看是否有相应的报错。 根据不同的平台选择以下命令查看 LINUX:vi /var/log/message AIX:errpt、mail
HPUX:vi /var/adm/syslog/syslog.log、dmesg 、mail
1.3、系统资源检查
LINUX下使用top/iostat/vmstat 等命令;AIX下使用TOPAS/vmstat/lsps –a/sar 等命令;HPUX下使用top /glance/vmstat/swapinfo –atm/sar等命令,查看当前CPU/mem/swap的占用情况
1)如果CPU有超过平常很高的WIO
2)如果user很高,查看top cpu占用的进程是否为oracle进程
? 如果是oracle后台进程CPU占用高,则联系ORACLE驻场工程师协助判断是否碰
到了某个已知的BUG
? 如果是oracle连接进程CPU占用高,执行$ORACLE_BASE/sql/get_by_spid.sh获得
高CPU进程正在执行的语句和相应的执行计划
3)如果MEM很低,SWAP区page out很频繁,需要联系系统管理员检查内存情况,如
是否出现异常的memory leak。同时针对ORACLE检查以下情况
? 连接数--- v$session 根据status/machine/program/username分组统计(group by),
与应用一起分析连接数异常的原因。 ? 获得占用高MEMORY的oracle进程,执行$ORACLE_BASE/sql/pga_sid.sql获得该
进程PGA的内存使用情况,执行$ORACLE_BASE/sql/get_by_spid.sh获得高CPU
进程正在执行的语句和相应的执行计划。
1.4、数据库日志检查
执行$ORACLE_BASE/sql/oracle_health_check.sql查看数据库alert日志/UDUMP/BDUMP是否有异常信息,如ORA-报错,此前没有或很少出现的警告提示信息.如果检查到报错信息,根据报错情况进行分析和采取相应的处理办法。
1.5、检查数据库归档日志目录
1)切换频率是否正常/目录权限及使用率
2)如果数据库日志长时间没有写入信息,没有日志切换,可能数据库已经处于挂起的
状态(此时须先排除归档太大占空间100%问题)
第二章、 数据库个别业务性能问题
2.1、大部分业务基本正常,个别业务长时间执行未成功
2.1.1、 根据应用的pid、sid等信息,找到数据库中对应的session、SQL。得到该SQL的执行计划。 1)执行$ORACLE_BASE/sql/show_spid.sql即可根据SID快速获取操作系统进行号spid的信息;
2)执行$ORACLE_BASE/sql/get_by_spid.sh spid,即可根据操作系统进程号依次打印执行的SQL语句和执行计划;
3)执行$ORACLE_BASE/sql/showsql_pid.sql即可根据pid快速获取执行的SQL语句 4)执行$ORACLE_BASE/sql/showsql_sid.sql即可根据sid快速获取执行的SQL语句
? 如果执行计划不恰当,需要分析执行计划变化的原因(如索引不正确、统计信息过时、
绑定变量偷窥等)采取相应的错误如添加缺失的索引、重新收集统计信息等,评估中止该业务的影响,尝试停止该SQL的执行后,重新收集相关表的统计信息,使业务SQL能按正确的执行计划执行。
? 如果执行计划正确,SQL却长时间不能返回结果,则按照以下办法尽快收集必要信息,
再重启任务。
$ sqlplus \
oradebug setospid
oradebug dump processstate 10 oradebug tracefile_name --得到trace文件名 exit
得到该进程的stack信息: $ sqlplus \
oradebug setospid
oradebug dump errorstack 3 oradebug tracefile_name --得到trace文件名 Exit
2.1.2、 如果PID、SID定位不到,则查询STATSPACK、AWR报告、v$session_wait和v$lock视图。
1)9i下,执行$ORACLE_HOME/rdbms/admin/spreport.sql获得STATSPACK报告 10g下,执行$ORACLE_HOME/rdbms/admin/awrrpt.sql获取最近时间的AWR报告
2)执行$ORACLE_BASE/sql/show_wait.sql和show_wait_global.sql快速获得v$session_wait视图的详细信息
3)执行$ORACLE_BASE/sql/session_enqueue.sql获得v$lock视图中中锁持有者和锁等待者的详细信息
2.2、单个ORACLE连接进程持续非常繁忙
通过top\\topas\\glance命令在OS上获得持续繁忙的操作系统进程号spid
然后执行$ORACLE_BASE/sql/get_by_spid.sh spid,即可根据操作系统进程号依次打印执行的SQL语句和执行计划;
? 如果执行计划不恰当,需要分析执行计划变化的原因(如索引不正确、统计信息过时、
绑定变量偷窥等)采取相应的错误如添加缺失的索引、重新收集统计信息等,评估中止该业务的影响,尝试停止该SQL的执行后,重新收集相关表的统计信息,使业务SQL能按正确的执行计划执行。
? 如果执行计划正确,SQL却长时间不能返回结果,则按照以下办法尽快收集必要信息,
再重启任务。
$ sqlplus \
oradebug setospid
oradebug dump processstate 10 oradebug tracefile_name --得到trace文件名 exit
得到该进程的stack信息: $ sqlplus \
oradebug setospid
oradebug dump errorstack 3 oradebug tracefile_name --得到trace文件名 Exit
第三章、 数据库整体性能问题
现象:
业务处理总体非常缓慢,但也有部分业务能够处理完成 或者
数据库主机CPU持续异常很高,而且都是ORACLE连接进程造成的时候请用以下方法检查
3.1 等待事件
找到当前数据库等待最多的事件:
1)9i下通过查询v$session_wait视图获取当前等待最多的事件。
执行$ORACLE_BASE/sql/show_session_wait.sql可快速查询按event分组的统计情况 2)10g下使用ash工具来看最近15分钟等待事件及造成等待事件的SQL和session ASH的收集办法:执行$ORACLE_HOME/rdbms/admin/ashrpt.sql
3.2 获取STATSPACK\\AWR报告
1)9i下,执行$ORACLE_HOME/rdbms/admin/spreport.sql获得STATSPACK报告 也可以下办法手工获取最近几分钟的statspack报告 Sqlplus perfstat/PASSWORD
Exec statspack.snap(i_snap_level => 7); ……等待几分钟
Exec statspack.snap(i_snap_level => 7);
$ORACLE_HOME/rdbms/admin/spreport.sql
2)10g下,执行$ORACLE_HOME/rdbms/admin/awrrpt.sql获取最近时间的AWR报告
3.3 获取执行计划
1)9i下可用$ORACLE_HOME/rdbms/admin/sprepsql.sql获取问题SQL的执行计划 2)10g下可用以下办法获取执行计划
$ORACLE_HOME/rdbms/admin/awrsqrpt.sql或者
select * from table(dbms_xplan.display_cursor('SQL_ID')); 得到以上SQL的执行计划后
? 如保存有该SQL正常时期的执行计划,则判断和正常的执行计划是否有不同 ? 如果没有该SQL正常时期的执行计划,则需要判断执行计划是否是否恰当。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新医药卫生ORACLE紧急情况检查应急预案 全文阅读和word下载服务。
相关推荐: