中关村软件园数据中心
数据库系统应急预案
一、总则
为了有效应对ORACLE数据库各类突发事故(事件),力争实现早发现、早报告、早控制、早解决,保护系统数据的安全,将突发公共事件造成的损失降到最低程度,制定本预案。
应急处置的原则是以人为本,统一指挥,各负其责、反应迅速,处理果断、防患未然,消灭初险、及时上报,如实准确。
本预案适用于ORACLE数据库可能发生突发事故(事件)的应急处置。
二、基本概况
ORACLE数据库当前共有*个服务器,*个实例。
数据库详情列表
序号
应用
操作系统
用途
关联Ip
设备型号
oracle数据库自动备份方法位置
管理员
软件体系
三、应急管理机构、及职责
24小时的应急联系人和电话:
应急工作人员安排表
中心部门
成员
应急电话
职责
全程组织与实施
协助组织、故障判断
排除故障、录井数据处理
维护人员:
四、数据库系统发生紧急状况时的处置措施
数据库个别业务性能问题
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 "/as sysdba"
oradebug setospid <process ID>
oradebug unlimit
oradebug dump processstate 10
oradebug tracefile_name
--得到trace文件名
exit
得到该进程的stack信息:
$ sqlplus "/as sysdba"
oradebug setospid <process ID>
oradebug unlimit
oradebug dump errorstack 3
oradebug tracefile_name
--得到trace文件名
Exit
如果PID、SID定位不到,则查询STATSPACK、AWR报告、v$session_wait和v$lock视图。
1)执行$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、单个ORACLE连接进程持续非常繁忙
通过top\topas\glance命令在OS上获得持续繁忙的操作系统进程号spid
然后执行$ORACLE_BASE/sql/get_by_spid.sh spid,即可根据操作系统进程号依次打印执行的SQL语句和执行计划;
如果执行计划不恰当,需要分析执行计划变化的原因(如索引不正确、统计信息过时、绑定变量偷窥等)采取相应的错误如添加缺失的索引、重新收集统计信息等,评估中止该业务的影响,尝试停止该SQL的执行后,重新收集相关表的统计信息,使业务SQL能按正确的执行计划执行。
如果执行计划正确,SQL却长时间不能返回结果,则按照以下办法尽快收集必要信息,再重启任务。
$ sqlplus "/as sysdba"
oradebug setospid <process ID>
oradebug unlimit
oradebug dump processstate 10
oradebug tracefile_name
--得到trace文件名
exit
得到该进程的stack信息:
$ sqlplus "/as sysdba"
oradebug setospid <process ID>
oradebug unlimit
oradebug dump errorstack 3
oradebug tracefile_name
--得到trace文件名
Exit
数据库整体性能问题
现象:
业务处理总体非常缓慢,但也有部分业务能够处理完成
或者
数据库主机CPU持续异常很高,而且都是ORACLE连接进程造成的时候请用以下方法检查
1 等待事件
到当前数据库等待最多的事件:
使用ash工具来看最近15分钟等待事件及造成等待事件的SQL和session
  ASH的收集办法:执行$ORACLE_HOME/rdbms/admin/ashrpt.sql
2 获取AWR报告
执行$ORACLE_HOME/rdbms/admin/awrrpt.sql获取最近时间的AWR报告
3 获取执行计划
用以下办法获取执行计划
$ORACLE_HOME/rdbms/admin/awrsqrpt.sql或者
select * from table(dbms_xplan.display_cursor('SQL_ID'));
得到以上SQL的执行计划后
如保存有该SQL正常时期的执行计划,则判断和正常的执行计划是否有不同
如果没有该SQL正常时期的执行计划,则需要判断执行计划是否是否恰当。
4 相应的处理建议
对比历史情况分析确认这些等待是否正常,SQL执行计划是否正常,确认问题SQL

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。