如何通过查看CentOS SQLplus日志,高效轻松地排查数据库问题呢?
- 内容介绍
- 文章标签
- 相关推荐
痛点:在 CentOS 环境下排查 Oracle 数据库问题时往往不知道 SQL*Plus 的会话输出、错误信息到底保存在哪里;说起来,1️⃣ 日志散落在多个目录,手动搜索耗时。2️⃣ 默认不记录会话,出错后只能凭记忆复现。3️⃣ 日志文件行宽、空格被截断,导致关键信息难以阅读。解决思路:通过程序自带工具和 Oracle 自带的 alert/trace 日志。实现“一键抓取‑一键定位”,让排查过程从“盲目”变成“可视”。
一、SQL*Plus 本身不生成日志——先把会话输出抓下来
1. 使用 SPOOL 命令实时写入文件
1) 进入 SQL*Plus 会话后立即开启 SPOOL:
SPOOL /var/log/sqlplus/session_$.log
2) 执行所有查询、DDL、DML。3) 完成后关闭 SPOOL:SPO OFF
4) 生成的日志保留原始换行、空格,便于后期 grep/awk 分析。
2. 使用 Linux script 命令捕获完整终端交互
script -q -c "sqlplus / as sysdba" /var/log/sqlplus/script_$.log
该方式会把所有键入和输出全部记录。包括错误堆栈和提示符,非常适合一次性排查 “登录卡死”“无响应”等现场问题。
3. 调整 LINESIZE 与 TRIMSPOOL 防止行宽被裁剪
再看在登录后执行。SET LINESIZE 32767
SET TRIMSPOOL OFF
这样即使假脱机输出的文本行宽度也保持与终端一致,避免关键信息被截断。
痛点:在 CentOS 环境下排查 Oracle 数据库问题时往往不知道 SQL*Plus 的会话输出、错误信息到底保存在哪里;说起来,1️⃣ 日志散落在多个目录,手动搜索耗时。2️⃣ 默认不记录会话,出错后只能凭记忆复现。3️⃣ 日志文件行宽、空格被截断,导致关键信息难以阅读。解决思路:通过程序自带工具和 Oracle 自带的 alert/trace 日志。实现“一键抓取‑一键定位”,让排查过程从“盲目”变成“可视”。
一、SQL*Plus 本身不生成日志——先把会话输出抓下来
1. 使用 SPOOL 命令实时写入文件
1) 进入 SQL*Plus 会话后立即开启 SPOOL:
SPOOL /var/log/sqlplus/session_$.log
2) 执行所有查询、DDL、DML。3) 完成后关闭 SPOOL:SPO OFF
4) 生成的日志保留原始换行、空格,便于后期 grep/awk 分析。
2. 使用 Linux script 命令捕获完整终端交互
script -q -c "sqlplus / as sysdba" /var/log/sqlplus/script_$.log
该方式会把所有键入和输出全部记录。包括错误堆栈和提示符,非常适合一次性排查 “登录卡死”“无响应”等现场问题。
3. 调整 LINESIZE 与 TRIMSPOOL 防止行宽被裁剪
再看在登录后执行。SET LINESIZE 32767
SET TRIMSPOOL OFF
这样即使假脱机输出的文本行宽度也保持与终端一致,避免关键信息被截断。

