在 Linux 環境操作 Oracle 資料庫時,完整保留終端機互動紀錄(輸入指令、輸出結果、錯誤訊息)對審計、除錯、知識傳承至關重要。Linux 內建的 script 工具正是為此而生,它能將整個終端機會話完整捕獲至指定檔案。
script 屬於 BSD 通用指令,用途為製作終端機會話的逐字記錄。常用參數:
-a:附加模式(不覆蓋既有檔案)-f:即時寫入(適合即時監控)-q:安靜模式(隱藏啟動/結束提示)-t:輸出時間資料至 stderr(配合 scriptreplay 重播)[file]:指定輸出檔案名(預設為 typescript)[oracle@jumper Oracle]$ script
Script started, file is typescript
[oracle@jumper Oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production ...
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
SQL> set linesize 120
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> col status for a8
SQL> col group# for 999999
SQL> select * from v$log;
...(查詢結果輸出)...
SQL> exit
Disconnected from Oracle9i Enterprise Edition ...
[oracle@jumper Oracle]$ exit
Script done, file is typescript
檢視 typescript 可見完整時間戳、所有輸入指令、系統回饋、查詢結果:
Script started on Thu 26 Jun 2008 07:56:18 AM CST
[oracle@jumper Oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production ...
...
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------- ---------- ---------- ---------- ---------- --- -------- ------------- -------------------
1 1 14 1048576 1 YES INACTIVE 1.9008E+10 2008-06-23 00:42:36
...
Script done on Thu 26 Jun 2008 07:57:38 AM CST
若啟動記錄時加上 -t 參數(script -t 2>timing.log),會產生時間紀錄檔,配合 scriptreplay timing.log typescript 即可像影片般重播整個操作過程,極利於教學示範與事後複盤。注意:scriptreplay 非預設安裝,需額外套件支援。
script 雖簡單,卻是 Linux 下記錄資料庫操作最原生、無侵入、零配置的利器。善用它,讓每一次關鍵操作都有據可查。