SQL*Plus通过SPOOL命令实现自身操作的日志记录,适用于脚本执行、批量操作等场景。
操作步骤:
SPOOL <日志文件路径>(如SPOOL /tmp/sqlplus_output.log),后续所有操作(包括SQL执行结果、错误信息、提示符等)都会追加到该文件中。SPOOL OFF,关闭日志文件并保存内容。/tmp目录通常可写,自定义路径需提前创建并赋权);.log为后缀,可通过SET LOGGING ON开启SQL命令本身的日志(如SET LOGGING ON),但需配合SPOOL使用才能保存到文件。SQL*Plus是Oracle数据库的核心命令行工具,可用于查看、配置数据库日志(如告警日志、重做日志、归档日志),这些日志是数据库运维的关键依据。
SQL> SHOW PARAMETER BACKGROUND_DUMP_DEST;
输出结果中的VALUE即为告警日志目录(如/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log)。SQL> SELECT * FROM V$LOGFILE;
SQL> SHOW PARAMETER LOG_ARCHIVE_DEST;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ARCHIVE LOG LIST;
RMAN(Recovery Manager)删除过期的告警日志,避免占用过多磁盘空间:SQL> RMAN TARGET /
RMAN> DELETE NOPROMPT OBSOLETE;
logrotate工具(Debian系统自带)自动压缩、删除归档日志,配置文件位于/etc/logrotate.d/oracle(需手动创建),示例如下:/u01/app/oracle/diag/rdbms/orcl/orcl/trace/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 oracle oinstall
}
该配置表示:每天轮转日志,保留30天,压缩旧日志(compress),延迟压缩最新日志(delaycompress),仅当日志非空时轮转(notifempty),并设置正确的文件权限(0640)和所有者(oracle:oinstall)。若需统一管理SQL*Plus及Oracle相关的系统日志(如认证日志、网络日志),可使用Debian的logrotate工具:
sudo apt-get update && sudo apt-get install logrotate
/etc/logrotate.d/下创建oracle-sqlplus文件,内容示例如下:/var/log/oracle-sqlplus.log {
weekly
missingok
rotate 12
compress
delaycompress
notifempty
create 0640 oracle oinstall
}
该配置表示:每周轮转/var/log/oracle-sqlplus.log,保留12份,压缩旧日志,设置正确的权限和所有者。oracle)对日志目录有写入权限,避免权限不足导致日志无法生成;chmod 600 /path/to/logfile);logwatch或自定义脚本定期分析日志,及时发现异常(如频繁的ORA-错误、非法登录尝试)。