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

Linux 下利用 script 指令完整記錄 Oracle 操作會話

     編輯:Oracle 資料庫基礎

前言

在 Linux 環境操作 Oracle 資料庫時,完整保留終端機互動紀錄(輸入指令、輸出結果、錯誤訊息)對審計、除錯、知識傳承至關重要。Linux 內建的 script 工具正是為此而生,它能將整個終端機會話完整捕獲至指定檔案。

工具介紹與基本語法

script 屬於 BSD 通用指令,用途為製作終端機會話的逐字記錄。常用參數:

  • -a:附加模式(不覆蓋既有檔案)
  • -f:即時寫入(適合即時監控)
  • -q:安靜模式(隱藏啟動/結束提示)
  • -t:輸出時間資料至 stderr(配合 scriptreplay 重播)
  • [file]:指定輸出檔案名(預設為 typescript)

實戰操作流程

1. 開始記錄

[oracle@jumper Oracle]$ script
Script started, file is typescript

2. 執行 Oracle 操作(範例:以 SYSDBA 登入並查詢 Redo Log)

[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 ...

3. 結束記錄

[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

進階應用:scriptreplay 重播會話

若啟動記錄時加上 -t 參數(script -t 2>timing.log),會產生時間紀錄檔,配合 scriptreplay timing.log typescript 即可像影片般重播整個操作過程,極利於教學示範與事後複盤。注意:scriptreplay 非預設安裝,需額外套件支援。

總結

script 雖簡單,卻是 Linux 下記錄資料庫操作最原生、無侵入、零配置的利器。善用它,讓每一次關鍵操作都有據可查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved