SQL*Plus 作為 Oracle 核心命令行工具,掌握其環境變量控制與批量腳本生成技巧,能劇增 DBA 運維開發效率。
環境:Windows NT 4.0 + Oracle 8.0.4,安裝路徑 C:\ORANT。SHOW 與 SET 是維護系統變量的雙核命令:
| 命令 | 功能 | 默認值 | 實戰場景 |
|---|---|---|---|
SHOW ALL | 查看全部 68 個變量 | - | 環境審計 |
SET HEADING OFF | 禁止列標題輸出 | ON | 腳本生成純數據 |
SET FEEDBACK OFF | 禁止行計數反饋 | 6 行以上 ON | 靜默執行 |
SET TIMING ON | 顯示查詢耗時 | OFF | SQL 性能基準測試 |
SET LINESIZE 1000 | 設置屏幕行寬 | 100 | 避免長文本換行截斷 |
SET LONG 1000 | 設置 LONG 類型顯示長度 | 80 | 完整查看 View 定義等 |
SET AUTOCOMMIT ON | 自動提交事務 | OFF | 批量 DML 快速確認 |
SET ARRAYSIZE 1 | 設置批量獲取行數 | 15 | 調優網絡往返 |
SET PAUSE ON | 分頁暫停顯示 | OFF | 大結果集人工檢視 |
-- 定義帶格式的日期時間常量
DEFINE a = '2000-01-01 12:01:01'
-- 引用變量(注意 & 前綴)
SELECT &a FROM dual;
-- 輸出: 2000-01-01 12:01:01
核心思路:SET HEADING OFF FEEDBACK OFF + SELECT 'SQL文本' || 表名 || 'SQL文本' FROM 數據字典 生成可直接執行的腳本:
SELECT 'SELECT '''||tname||''', COUNT(*) FROM '||tname||';' FROM tab WHERE tabtype='TABLE';SELECT 'GRANT SELECT ON '||table_name||' TO PUBLIC;' FROM user_tables WHERE 條件;SELECT 'DROP '||tabtype||' '||tname||';' FROM tab;SELECT 'DROP USER '||username||' CASCADE;' FROM all_users WHERE user_id>25;ALTER VIEW ... COMPILE,解決跨表空間遷移後視圖失效問題SELECT 'DESC '||tname FROM tab WHERE tabtype='SYNONYM';
可快速驗證同義詞指向對象是否真實存在。