sqlplus的日志默认存储在用户主目录下的.sqlplus
文件夹中,文件名为log
(即~/.sqlplus/log
)。若不确定路径,可通过以下命令搜索:
find ~ -type f -name "*sqlplus*"
部分情况下,日志位置可能因sqlplus配置(如glogin.sql
或login.sql
)而变化,需检查这些配置文件中的日志设置。
使用tail
命令配合-f
选项可实时监控日志文件的更新,便于及时获取sqlplus的执行记录:
tail -f ~/.sqlplus/log
按Ctrl+C
停止实时查看。
若未开启日志功能,可通过修改sqlplus配置文件(如login.sql
,通常位于用户主目录或$ORACLE_HOME/sqlplus/admin
)添加以下内容,启用日志记录:
SET LOG ON
SET LOGFILE ~/.sqlplus/log
这会将sqlplus的所有执行命令及输出保存到指定日志文件中。
为防止sqlplus日志无限增长占用磁盘空间,可使用Debian自带的logrotate
工具实现自动轮转、压缩和删除旧日志。
/etc/logrotate.d/
目录下新建sqlplus
文件(如/etc/logrotate.d/sqlplus
),添加以下内容:~/.sqlplus/log {
daily # 每天轮转一次
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(如.gz格式)
delaycompress # 延迟压缩(避免压缩当天日志)
missingok # 若日志文件丢失,不报错
notifempty # 若日志为空,不轮转
create 640 root adm # 创建新日志文件,权限640,属主root,属组adm
}
sudo logrotate -f /etc/logrotate.d/sqlplus
此命令会强制执行一次日志轮转,若有错误会显示提示。grep
命令筛选日志中的关键内容(如ERROR
或特定SQL语句),例如:grep "ERROR" ~/.sqlplus/log
awk
或sed
工具提取特定字段(如时间戳、SQL语句),提升日志的结构化程度。例如,提取日志中的SQL语句:awk '/SQL> /{flag=1} flag' ~/.sqlplus/log
vim
或less
等工具中开启颜色高亮,便于快速识别错误信息(如vim ~/.sqlplus/log
后输入:set syntax=log
)。sqlplus的执行记录可能同步到系统日志(如/var/log/syslog
或/var/log/auth.log
),可通过以下命令查看与sqlplus相关的系统日志:
grep "sqlplus" /var/log/syslog
grep "sqlplus" /var/log/auth.log
这有助于关联sqlplus操作与系统事件(如用户登录、权限变更)。