错误日志分析:Oracle错误日志默认位于ORACLE_BASE/diag/rdbms/<数据库名>/<实例名>/trace目录,可通过SELECT * FROM vdiag_info WHERE name = 'Default Trace File'命令快速定位alert_*.log文件,查看ORA-开头的错误代码(如ORA-01034: ORACLE not available表示实例未启动)。
数据库活动会话:查询v$session视图(SELECT * FROM v$session WHERE status = 'ACTIVE'),查看当前活动会话;通过v$lock视图分析锁等待(SELECT * FROM v$lock WHERE block > 0),找出长时间持有锁的会话并终止(ALTER SYSTEM KILL SESSION 'sid,serial#')。
3. 常规排查(逐一验证基础配置)
检查Oracle实例状态:使用ps -ef | grep ora_pmon命令,若未找到ora_pmon_<实例名>进程,说明实例未启动,需执行sqlplus / as sysdba进入SQL*Plus,输入STARTUP命令启动实例。
检查表空间与数据文件:使用SELECT * FROM dba_tablespaces查看表空间状态(STATUS列应为ONLINE);通过SELECT * FROM dba_data_files确认数据文件是否存在且可访问(如STATUS列应为AVAILABLE),若数据文件损坏,可使用RECOVER DATAFILE '文件路径'命令修复。
SQL Trace与Explain Plan:通过ALTER SESSION SET SQL_TRACE = TRUE;开启SQL跟踪,记录SQL执行细节;使用EXPLAIN PLAN FOR SELECT * FROM employees;分析查询计划,识别全表扫描、缺少索引等问题(通过SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);查看执行计划)。
5. 处理常见特定故障(针对性解决典型问题)
资源不足问题:若遇到ORA-27154: unable to open file(内存不足)或ORA-27300: OS system dependent operation:failed(磁盘空间满),需扩展系统资源(如增加物理内存、清理/u01/app/oracle目录下的临时文件)。