Linux 下 SQL*Plus 日志查看方法
一 开启并使用 SQL*Plus 内置错误日志
SET ERRORLOGGING ON
SHOW ERRORLOGGING
SET ERRORLOGGING ON TABLE SEC.MY_SQLERR_LOG
COL USERNAME FOR A10
COL TIMESTAMP FOR A20
COL MESSAGE FOR A60
SELECT USERNAME, TIMESTAMP, MESSAGE, STATEMENT
FROM SEC.MY_SQLERR_LOG
ORDER BY TIMESTAMP DESC;
二 在 SQL*Plus 内查看数据库告警与跟踪日志路径
-- 告警日志(文本,持续追加)
SHOW PARAMETER BACKGROUND_DUMP_DEST
-- 用户进程跟踪文件目录
SHOW PARAMETER USER_DUMP_DEST
-- 审计文件目录
SHOW PARAMETER AUDIT_FILE_DEST
-- 核心转储目录
SHOW PARAMETER CORE_DUMP_DEST
典型路径形如:$ORACLE_BASE/diag/rdbms/-- 监听跟踪与告警目录(11g 起)
SHOW PARAMETER DIAG_TRACE
SHOW PARAMETER DIAG_ALERT
典型路径形如:$ORACLE_BASE/diag/tnslsnr/三 Linux 侧实时查看与检索日志文件
tail -f $ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/alert_<sid>.log
tail -f $ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/*.trc
tail -f alert_<sid>.log | egrep --color=auto "ORA-|SP2-|PLS-"
find $ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/ -name "alert_<sid>.log" -mmin -60 -exec tail -n 200 {} \; | egrep "ORA-|SP2-"
less -S $ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/alert_<sid>.log
tail -f $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log
以上命令均为 Linux 常用日志查看方式,配合 Oracle 的 DIAG 目录定位即可高效排查。四 使用 LogMiner 分析重做日志以还原历史操作
ALTER SYSTEM SET UTL_FILE_DIR='/u01/arch' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
BEGIN
DBMS_LOGMNR_D.BUILD(
dictionary_name => 'logmnr_dict.dat',
dictionary_location => '/u01/arch');
END;
/
BEGIN
DBMS_LOGMNR.ADD_LOGFILE(
options => DBMS_LOGMNR.NEW,
logfilename => '/u01/arch/o1_mf_1_37_57scllcl_.arc');
END;
/
BEGIN
DBMS_LOGMNR.START_LOGMNR(
dictfilename => '/u01/arch/logmnr_dict.dat',
starttime => TO_DATE('2025-12-16 00:00:00','YYYY-MM-DD HH24:MI:SS'),
endtime => TO_DATE('2025-12-16 23:59:59','YYYY-MM-DD HH24:MI:SS'));
END;
/
SELECT scn, timestamp, username, sql_redo, sql_undo
FROM V$LOGMNR_CONTENTS
WHERE seg_owner = 'SCOTT' AND table_name = 'EMP'
ORDER BY scn;
EXEC DBMS_LOGMNR.END_LOGMNR;