SQL*Plus是Oracle数据库的命令行工具,其本身日志主要由Oracle数据库生成(如跟踪日志、告警日志)。在Debian系统中,可通过以下方法管理这些日志:
SQL*Plus的日志通常与Oracle数据库日志关联,需通过Oracle视图查询具体路径:
v$diag_info
视图获取诊断信息(包括日志目录):sqlplus / as sysdba
SELECT * FROM v$diag_info;
输出中的Diag Trace
字段(如$ORACLE_BASE/diag/rdbms/dbname/instance_name/trace
)即为SQL*Plus跟踪日志的存储路径。v$diag_info
的Diag Alert
字段获取(如$ORACLE_BASE/diag/rdbms/dbname/instance_name/trace/alert_instance_name.log
)。logrotate是Debian系统默认的日志管理工具,可自动压缩、删除旧日志,避免日志文件过大。
/etc/logrotate.d/
目录下新建文件(如oracle
),添加以下内容(根据实际路径调整):$ORACLE_BASE/diag/rdbms/*/*/trace/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 oracle oinstall
sharedscripts
postrotate
/usr/bin/killall -HUP rdbms
endscript
}
参数说明:
daily
:每天轮转一次;rotate 7
:保留最近7个轮转日志;compress
:压缩旧日志;create
:创建新日志文件并设置权限(属主oracle
,属组oinstall
);postrotate
:轮转后重启Oracle进程以释放文件句柄。sudo logrotate -f /etc/logrotate.d/oracle
,强制进行一次轮转并检查是否有错误。若需临时管理日志,可通过以下命令手动操作:
*.log.1.gz
):find $ORACLE_BASE/diag/rdbms/*/*/trace/ -name "*.log.1.gz" -mtime +7 -delete
gzip
压缩指定日志文件:gzip $ORACLE_BASE/diag/rdbms/dbname/instance_name/trace/alert_instance_name.log
tail
命令实时查看告警日志:tail -f $ORACLE_BASE/diag/rdbms/dbname/instance_name/trace/alert_instance_name.log
grep
筛选错误日志(如ORA-
开头的错误):grep "ORA-" $ORACLE_BASE/diag/rdbms/dbname/instance_name/trace/*.log
oracle
用户或root
用户);