前言
Oracle 資料字典是資料庫的「元資料中樞」,所有使用者、開發者、DBA 都仰賴它查詢物件定義、權限、效能統計等。資料字典的建立、升級、維護全靠 $ORACLE_HOME/rdbms/admin 目錄下的數百支 SQL/PLB 腳本。掌握其命名規則,能讓 DBA 秒懂腳本用途,升級維護不再盲目。
腳本存放位置
| 作業系統 | 目錄路徑 |
| UNIX/Linux | $ORACLE_HOME/rdbms/admin |
| Windows | %ORACLE_HOME%\rdbms\admin |
四大類命名規則速查表
| 檔名前綴 | 副檔名 | 核心功能 | 典型代表 |
| cat | .sql | 資料字典視圖、同義詞、核心 PL/SQL 環境建立 | catalog.sql, catproc.sql, catadt.sql |
| dbms | .sql | 系統內建 Package 規範/主體 (未加密) | dbms_output.sql, dbms_job.sql, dbmspool.sql |
| prvt | .plb | 系統內建 Package 主體 (加密,wrap 過) | prvtadvi.plb, prvtstas.plb |
| utl | .sql | 工具類輔助表、視圖、功能 (非核心字典) | utlxplan.sql, utlrp.sql, utlchain.sql |
詳細功能解析
1. cat*.sql —— 字典建立主力軍
- catalog.sql:建立所有靜態資料字典視圖 (
DBA_*, ALL_*, USER_*) 與同義詞,並串聯呼叫子腳本建立 PL/SQL 基礎型別、例外、內建函數、稽核、匯入匯出、SQL*Loader 等環境。
- catproc.sql:建立伺服器端 PL/SQL 套件體系:Alert、Pipe、LogMiner、LOB、Advanced Queuing、Replication 等擴充功能的 Package 與視圖。
- 擴充腳本:
catadt.sql (物件型別視圖)、catnoadt.sql (移除上述)、catq.sql (佇列)、catr.sql (複寫) 等,依功能選裝。
2. dbms*.sql / prvt*.plb —— 系統 Package 原始碼
dbms*.sql 為明文規格/主體,可直接閱讀學習 Oracle 內部實作 (如 dbms_stats.sql 統計套件)。
prvt*.plb 經 wrap 加密,僅供資料庫內部載入,DBA 通常不需手動執行,由 catproc.sql 自動呼叫。
- 少數需手動執行:
dbmspool.sql (共用池物件大小分析/KEEP/UNKEEP)、dbms_lock.sql (鎖管理) 等。
3. utl*.sql —— DBA 常用工具箱
| 腳本 | 用途 | 常用場景 |
| utlxplan.sql | 建立 PLAN_TABLE | EXPLAIN PLAN 儲存執行計畫 |
| utlrp.sql | 重新編譯所有無效物件 | 升級、Patch 後批次修復 INVALID 物件 |
| utlchain.sql | 建立 CHAINED_ROWS 表 | ANALYZE TABLE ... LIST CHAINED ROWS |
| utlsampl.sql | 建立 SCOTT 範例結構 | 教學、測試環境快速建模 |
| utlip.sql / utlip.sql | 顯示/鎖定共用池物件 | 效能調優、防止關鍵 Package 被 aged out |
執行原則與避坑指南
- 必須以 SYS (SYSDBA) 身分執行,絕大多數腳本檢查呼叫者權限。
- 先讀腳本註解再執行,確認前置條件 (如資料庫狀態 OPEN/UPGRADE/DOWNGRADE)。
- 升級/降級請依官方文件順序,切勿挑選腳本亂跑,否則字典不一致極難修復。
- 備份先行:執行任何
cat*、utlrp.sql 前務必完整備份 (RMAN/Export)。
實用查詢:快速找出腳本用途
-- 列出 admin 目錄下所有 cat*.sql 並顯示首行註解
SELECT file_name,
(SELECT text FROM all_source
WHERE name = UPPER(SUBSTR(file_name,1,INSTR(file_name,'.')-1))
AND type = 'PACKAGE' AND line = 1 AND ROWNUM=1) AS header
FROM (SELECT 'catalog.sql' file_name FROM dual UNION ALL
SELECT 'catproc.sql' FROM dual UNION ALL
SELECT 'utlxplan.sql' FROM dual); -- 實際可搭配 OS 指令 ls/ dir 產生清單
總結
記住 cat=字典、dbms/prvt=套件、utl=工具,下次面對 rdbms/admin 目錄下的海量檔案,即可精準鎖定所需腳本,升級維護不再慌亂。
- 上一篇文章: 以組態檔驅動:打造可熱切換的 SQL Server / Oracle 資料存取層
- 下一篇文章: Oracle IAS 環境下 HttpClient 衝突排查:棄用第三方包改用 JDK 原生 HttpURLConnection
Copyright ©
程式碼之家 All Rights Reserved