ORACLE数据库应急预案

  • 格式:doc
  • 大小:77.50 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中关村软件园数据中心

数据库系统应急预案

一、总则

为了有效应对ORACLE数据库各类突发事故(事件),力争实现早发现、早报告、早控制、早解决,保护系统数据的安全,将突发公共事件造成的损失降到最低程度,制定本预案。

应急处置的原则是以人为本,统一指挥,各负其责、反应迅速,处理果断、防患未然,消灭初险、及时上报,如实准确。

本预案适用于ORACLE数据库可能发生突发事故(事件)的应急处置。

二、基本概况

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

oradebug unlimit

oradebug dump processstate 10

oradebug tracefile_name

--得到trace文件名

exit

得到该进程的stack信息:

$ sqlplus "/as sysdba"

oradebug setospid

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

oradebug unlimit

oradebug dump processstate 10

oradebug tracefile_name

--得到trace文件名

exit

得到该进程的stack信息:

$ sqlplus "/as sysdba"

oradebug setospid

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

对于已确认的问题SQL,评估中止该session对业务的影响:该session是否可被中止;中止后需要进行的进行的处理:是否要重新收集表的统计信息,是否要新建索引;中止该session,完成事务回滚预计需要的时间

根据评估结果选择需要执行的操作:中止session、停库重启、切应急库

5不能使用sqlplus / as sysdba进入数据库时

确保ORACLE_SID指向问题实例后

sqlplus -prelim / as sysdba