首页主机资讯centos上oracle故障如何排查

centos上oracle故障如何排查

时间2025-11-18 17:57:04发布访客分类主机资讯浏览460
导读:CentOS 上 Oracle 故障排查手册 一 快速定位路径 明确现象:是数据库无法启动、监听异常,还是客户端连不上;记录报错码(如 ORA-12514、TNS-12541、TNS-12560)与报错原文。 检查实例是否存活: 查看进...

CentOS 上 Oracle 故障排查手册

一 快速定位路径

  • 明确现象:是数据库无法启动、监听异常,还是客户端连不上;记录报错码(如 ORA-12514、TNS-12541、TNS-12560)与报错原文。
  • 检查实例是否存活:
    • 查看进程:ps -ef | grep ora_pmon
    • 本机登录:sqlplus / as sysdba
  • 检查监听状态:lsnrctl status;必要时 lsnrctl start/stop/reload
  • 核对监听端口:netstat -tulpen | grep 1521;若端口被占用,处理占用进程或更换端口。
  • 查看告警日志:
    • 数据库告警:$ORACLE_HOME/diag/rdbms/< db_name> /< sid> /trace/alert_< sid> .log
    • 监听器日志:$ORACLE_HOME/diag/tnslsnr/< hostname> /listener/trace/listener.log
  • 网络与安全:确认服务器与客户端之间网络可达,且 firewalld/iptables 放行 1521/TCP

二 常见故障与处理

症状 关键检查 处理要点
数据库实例起不来 `ps -ef grep ora_pmonsqlplus / as sysdba`、告警日志
ORA-12541 无监听程序 lsnrctl status、端口占用 lsnrctl start;若端口被占用,释放或更换端口后重启监听
ORA-12514 监听不识别服务 lsnrctl status 输出中的服务列表、show parameter service_namelistener.ora/tnsnames.ora 确保数据库已注册服务(动态或静态);必要时在 listener.ora 添加 SID_LIST_LISTENER 静态注册,或修正 tnsnames.oraSERVICE_NAME
TNS-12560 协议适配器错误 ORACLE_HOMEPATHlsnrctl start 校验环境变量:echo $ORACLE_HOME $PATH;确认 listener.ora 地址/端口正确;重启监听
客户端连不上(PL/SQL/远程) tnsping < 别名> 、客户端 tnsnames.orafirewalld 校验 tnsnames.oraHOST/PORT/SERVICE_NAME;服务器放行 1521/TCP;必要时用 sqlplus system/oracle@//host:1521/service 直连测试

三 监听与服务配置要点

  • 配置文件路径:$ORACLE_HOME/network/admin/ 下的 listener.oratnsnames.ora
  • 动态 vs 静态监听:
    • 动态注册由实例自动向监听注册服务,通常无需在 listener.ora 中写 SID_LIST_< LISTENER>
    • 静态注册用于实例未自动注册或需固定服务映射时,在 listener.ora 增加:
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (GLOBAL_DBNAME = orcl)
            (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
            (SID_NAME = orcl)
          )
        )
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname_or_ip)(PORT = 1521))
          )
        )
      
  • 客户端 tnsnames.ora 示例:
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost.example.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
  • 使配置生效:lsnrctl reload 或重启监听;必要时 sqlplus / as sysdba 后执行 alter system register; 促使实例立即向监听注册。

四 系统与安全排查

  • 防火墙放行:
    • 查看状态:systemctl status firewalld
    • 放行端口:firewall-cmd --permanent --add-port=1521/tcp & & firewall-cmd --reload
  • SELinux:如怀疑拦截,可临时 setenforce 0 验证,再按策略放行或永久调整。
  • 主机名解析:确保 /etc/hosts 或 DNS 正确解析服务器主机名与 IP,避免监听与客户端解析不一致。
  • 端口冲突:netstat -tulpen | grep 1521 确认 1521 未被其他进程占用。

五 日志与进一步诊断

  • 数据库告警与跟踪:
    • 定位 ADR 根:select name,value from v$diag_info; (关注 Diag Trace/Diag Alert
    • 查看告警:tail -n 200 $ORACLE_HOME/diag/rdbms/< db> /< sid> /trace/alert_< sid> .log
    • 跟踪文件:同目录下的 < sid> _ora_< pid> .trc.trm 可辅助定位 ORA- 错误根因。
  • 监听器日志:$ORACLE_HOME/diag/tnslsnr/< hostname> /listener/trace/listener.log,关注启动失败、注册失败、连接拒绝等记录。
  • 连接与负载核查(已能登录时):
    • 按机器统计会话:select MACHINE,count(*) from v$session group by MACHINE order by 2 desc;
    • 检查游标/锁等常见瓶颈(如 ORA-01000 超出打开游标上限)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos上oracle故障如何排查
本文地址: https://pptw.com/jishu/750334.html
如何优化centos上的oracle存储 MongoDB在CentOS上的权限配置指南

游客 回复需填写必要信息