首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 與 MySQL 命令列操作日誌記錄方法對比

     編輯:Oracle 教學

Oracle 與 MySQL 命令列操作日誌記錄方法對比

資料庫操作審計需求中,記錄命令列互動歷史是基礎。Oracle 與 MySQL 原生提供的機制截然不同,本文整理兩者常用做法。


一、Oracle (SQL*Plus / RMAN)

1. SPOOL 命令 (最常用)

-- 開始記錄
SPOOL D:\logs\session_20240115.log

-- 執行任意操作 (匯入/匯出/DDL/DML)
IMP system/password@orcl FULL=Y FILE=exp.dmp LOG=imp.log
EXP system/password@orcl OWNER=scott FILE=scott.dmp LOG=exp.log

-- 結束記錄
SPOOL OFF
  • 適用於 SQL*Plus、RMAN 互動式會話。
  • 輸出為純文字檔,含輸入命令與輸出結果。
  • 可在登入腳本 glogin.sql 或 login.sql 中自動啟用。

2. 非 SPOOL 場景 (批次/排程)

  • 使用 OS 重導向:sqlplus -s user/pwd @script.sql > output.log 2>&1
  • RMAN 記錄:rman target / cmdfile=backup.rman log=backup.log

3. 審計追蹤 (企業級)

  • 標準審計:AUDIT SESSION, TABLE, ... BY ACCESS,寫入 SYS.AUD$ (12c+ 統一審計寫入 AUDIT_TRAIL 表)。
  • 精細審計 (FGA):針對特定表/欄位/條件記錄。

二、MySQL (mysql client)

1. tee 命令 (互動式會話記錄)

mysql> TEE C:\logs\mysql_session_20240115.log
Logging to file 'C:\logs\mysql_session_20240115.log'

mysql> SELECT * FROM users;
mysql> UPDATE accounts SET balance=balance-100 WHERE id=1;

mysql> NOTEE
Outfile disabled.
  • 啟用後,所有輸入命令與輸出結果同步寫入指定檔案。
  • NOTEE 停止記錄。
  • 適合臨時除錯、操作留痕。

2. 通用查詢日誌 (General Query Log) - 服務端記錄所有連線

配置 my.cnf / my.ini:

[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
log_output = FILE  -- 或 TABLE (寫入 mysql.general_log 表)
  • 記錄**所有**連線的所有語句 (含失敗語句),適合完整審計。
  • 效能影響大,生產環境建議僅臨時開啟排查問題。

3. 慢查詢日誌

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2  -- 超過 2 秒記錄

三、對比總結

維度Oracle (SQL*Plus)MySQL (mysql client)
互動式會話記錄SPOOL file.logTEE file.log / NOTEE
批次/腳本記錄OS 重導向 > log 2>&1OS 重導向 > log 2>&1
服務端全量審計標準審計 / 統一審計 (AUD$)General Query Log (效能敏感)
單次操作獨立日誌手動 SPOOL 不同檔名手動 TEE 不同檔名
自動化建議登入腳本自動 SPOOL 帶時間戳檔名封裝腳本自動 TEE 帶時間戳檔名

四、最佳實踐建議

  1. 開發/測試環境:習慣每次登入即 SPOOL/TEE 含日期時間的專屬日誌檔。
  2. 生產環境變更:變更前開啟審計/General Log,變更後關閉並歸檔日誌備份。
  3. 自動化腳本:Shell/Python 封裝資料庫操作時,統一重導向 stdout/stderr 至集中日誌系統 (ELK/Splunk)。
  4. 合規留存:依法規要求設定日誌保留期限、異地備份與存取控制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved