oracle 故障诊断

数据库安装类故障
–数据库安装时容易犯的错误:没有安装官方文档安装数据库、没有检查操作系统环境、操作系统包和补丁没有打全、操作系统vmo参数设置错误、环境变量设置错误、介质安装错误、安装RAC时共享存储设置错误、操作系统没有配置或者开启异步IO
–排查方法:系统日志
数据库连接类故障
–客户端配置文件有问题、网络故障、主机资源不足、监听故障、数据库故障
–排查方法:检查网络,检查主机资源,检查监听,检查数据库参数、空间、访问控制
数据库HANG类故障
–主机资源达到瓶颈、进程直接的死锁、在线日志均为active或者无法归档、数据库资源争用、SGA内存抖动、人为发起suspend、ORACLE BUG
–收集HANG时的状态->分析
—-单实例:
—-sqlplus
—-oradebug hanganalyze 3
—-一分钟再次执行
—-另外一个会话
—-oradebug setmypid
—-oradebug unlimit
—-oradebug dump systemstate 266
—-oradebug dump systemstate 266
—-oradebug dump systemstate 266
—-RAC
—-sqlplus
—-oradebug setmypid
—-oradebug unlimit
—-oradebug-g all hanganalyze 3
—-oradebug-g all hanganalyze
—-exit
—-另一会话
—-oradebug setmypid
—-oradebug unlimit
—-oradebug-g all dump systemstate 10
—-oradebug-g all dump systemstate 10
—-oradebug tracefile_name
—-exit
—-HANG住无法连接数据库时
—-sqlplus-prelim ‘/ as sysdba’
—-无法查询数据字典,可以关闭数据库
数据库局部性HANG处理过程
–表现为会话HANG,查询v$session_wait,如果P1,P2,P3值不停的改变,可能只是比较慢
—-alter session set tracefile_identifier=’STACK_10046′;
—-oradebug setospid xxxx;
—-oradebug unlimit;
—-oradebug event 10046 trace name context forever,level 12;
—-oradebug dump errorstack 3;
—-oradebug dump errorstack 3;
—-oradebug dump errorstack 3;
—-oradebug tracefile_name;
—-oradebug event 10046 trace name context off;
数据库性能类故障
–首先宏观了解系统状态,然后再具体问题具体分析:
—-硬件情况和业务情况
—-主机资源消耗
—-查看活动的会话数,确定是否存在排队效应
—-v$session_wait 查看等待事件
—-AWR报告
快速定位资源持有者
–LOCK: SELECT * FROM GV$LOCK WHERE BLOCK = 1;SELECT * FROM DBA_WAITERS;
–LATCH:SELECT * FROM V$LATCHHOLDER;
–MUTEX:SELECT TO_NUMBER(SUBSTR(TO_CHAR(RAWTOHEX(P2RAW)), 1, 8), ‘XXXXXXXX’) SID   FROM V$SESSION  WHERE EVENT = ‘cursor: pin S wait on X’;
–Library Cache Handle(Handle):Library Cache Lock
–Library Cache Object(LCO):Library Cache Pin
–Row Cache:SELECT * FROM V$ROWCACHE_PARENT WHERE LOCK_MODE <> 0;
–10G后:v$session.BLOCKING_SESSION
数据库误操作
–有备份,评估恢复时间和数据丢失率
–误删表,查看回收站,没有DUL挖掘数据或者用备份异地恢复导出
–误删数据,查看闪回特性,闪回失败用logmnr或者备份异地恢复导出
数据库坏块故障
–原因:硬件问题、操作系统bug、非ORACLE进程异常修改ORACLE内存区域、主机或者存储异常掉电、ORACLE bug
–使用DBV、RMAN、EXP/EXPDP工具或VALIDATE命令校验数据库坏块数量,优先使用DBV工具,不会造成宕机,并且能够校验索引
–索引出现坏块,重建索引
–表出现坏块:设置10231事件或者使用dbms_repair包,全表扫描时跳过损坏的块,或者ROWID RANGE SCAN
–修复块:bbed
–system/undo表空间出现坏块
—-检查警告(RAC检查所有节点)
—-备份整个数据库
—-dbv工具校验system/undo表空间,确定损坏范围和程度
—-关闭监听,防止数据库成功打开后,应用不会立刻连接
—-进行故障处理
—-UNDO表空间:设置隐含存数_offline_rollback_segments 跳过坏块打开数据库
—-如果空间不够或者备份时间过长,依然要备份SYSTEM,UNDO和SYSAUX,控制文件,所有在线日志文件
–数据库在线日志文件损坏
—-INACTIVE状态的,启动实例到mount,然后clear logfile
—-ACTIVE/CURRENT设置隐含参数 _allow_resetlog_corruption=true,然后不完全恢复
—-强制打开数据库过程中,ORA-00600[2662],使用10015事件或者隐含参数 _minimum_giga_scn
–控制文件损坏
—-实例mount后,将控制文件备份到跟踪文件中,然后使用noresetnologs打开数据库
—-不能到mount用操作系统命令strings提取控制文件内容,重建控制文件,noresetlogs打开数据库
—-strings无法读取控制文件,查找文件系统中数据文件和日志文件等,重建控制文件,noresetlogs打开数据库

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注