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

Oracle 資料庫管理腳本命名規範與功能分類詳解

     編輯:Oracle 資料庫基礎

腳本儲存位置

  • Unix/Linux: `$ORACLE_HOME/rdbms/admin/`
  • Windows: `%ORACLE_HOME%\rdbms\admin\`
  • 包含數百個 `.sql` / `.plb` 檔案,安裝/升級/維護核心依賴。

四大類命名規則與功能

前綴模式類別核心功能代表腳本
cat*.sql資料字典建立/升級建立系統視圖、同義詞、PL/SQL 套件、標準物件`catalog.sql`, `catproc.sql`, `catblock.sql`, `cataudit.sql`, `catexp.sql`
dbms*.sql / prvt*.plb內建 PL/SQL 套件規格/主體實作 `DBMS_*` 系列套件 (DDL、Stats、Job、Alert、Pipe、LOB、AQ、Replication 等)`dbmsstats.sql`, `dbmsjob.sql`, `dbmspool.sql`, `prvtstats.plb`
utl*.sql工具/輔助功能建立輔助表/視圖、執行計畫、鏈表分析、樣本 Schema`utlxplan.sql`, `utlchain.sql`, `utlsampl.sql`, `utlrp.sql`
*.sql (其他)升級/遷移/修補版本升級、相容性檢查、參數遷移、元資料修正`u0902000.sql` (9.2.0 升級), `catupgrd.sql`

核心腳本深度解析

1. catalog.sql — 字典視圖基石

  • 建立所有靜態資料字典視圖 (`USER_*`/`ALL_*`/`DBA_*`)、動態效能視圖 (`V$*`/`GV$*`) 及公共同義詞。
  • 串聯執行:基本 PL/SQL 環境建立、審計、匯入匯出、SQL*Loader、安裝選項等子腳本。
  • 必須以 SYS 執行,僅執行一次 (資料庫建立時)。

2. catproc.sql — PL/SQL 執行環境

  • 建立核心 PL/SQL 套件規格與主體 (`STANDARD`, `DBMS_STANDARD` 等)。
  • 延伸功能套件:Alert、Pipe、LogMiner、LOB、Objects、Advanced Queuing、Replication、Java、XML、Spatial 等。
  • 同樣 **SYS 執行,一次性**。

3. catexp.sql / catexp7.sql / catexp6.sql — Export/Import 視圖

  • `catexp.sql`:目前版本 EXP/IMP 所需內部視圖、角色 `EXP_FULL_DATABASE`/`IMP_FULL_DATABASE`、權限授予、版本號記錄於 `SYS.PROPS$` (`EXPORT_VIEWS_VERSION`)。
  • 跨版本導出導入關鍵:
    • 源 > 目標:源庫執行舊版 `catexp.sql` (如 8i 庫跑 `catexp7.sql` 產生 7 相容視圖) → 舊版 EXP 導出 → 目標庫舊版 IMP 導入 → 目標庫跑新版 `catexp.sql` 恢復。
    • 目標 > 源:目標庫跑新版 `catexp.sql` → 新版 EXP 導出 → 新版 IMP 導入 → 目標庫跑舊版 `catexp.sql` 恢復 (罕見)。
  • 同一資料庫**僅需執行一次**對應版本腳本。

4. utlxplan.sql — 執行計畫輔助表

  • 建立 `PLAN_TABLE` (或 `PLAN_TABLE$`),供 `EXPLAIN PLAN FOR ...` 寫入計畫,`DBMS_XPLAN.DISPLAY` 讀取顯示。
  • 現代版本 (10g+) `PLAN_TABLE` 為全域暫存表,自動存在每個 Schema,無需手動跑腳本。

5. dbmspool.sql — 共享池物件大小分析

  • 查詢 Library Cache 中物件佔用記憶體,標記 `KEEP`/`UNKEEP` 控制淘汰。
  • 解決共享池碎片、ORA-04031 關鍵工具。

6. utlrp.sql — 重新編譯所有無效物件

  • 升級/補丁後批次重編譯 `INVALID` 物件 (PL/SQL、View、Type、Synonym)。
  • 平行執行 (`UTL_RECOMP.RECOMP_PARALLEL`),大幅縮短重編時間。

執行原則與最佳實踐

  1. 必須以 SYS (SYSDBA) 身分執行,除非腳本註解另有說明。
  2. 執行前閱讀腳本內容,確認前置條件、影響範圍、回滾方案。
  3. 升級/補丁嚴格遵循 Metalink 升級指南順序 (Pre-upgrade → Upgrade Scripts → Post-upgrade → `utlrp.sql`)。
  4. 備份字典表空間 (SYSTEM/SYSAUX) 及控制檔/Redo Log 前執行破壞性腳本。
  5. 記錄執行日誌 (`SPOOL upgrade.log`),失敗時可追蹤。

常見場景對應腳本速查

場景執行腳本
新建資料庫 (手動)`catalog.sql` → `catproc.sql` → `catexp.sql` → `utlrp.sql`
升級 9.2.0 → 10.2.0`catupgrd.sql` (核心升級) → `catuppst.sql` (後續) → `utlrp.sql`
修復 ORA-04031 / 共享池碎片`dbmspool.sql` 分析 → `DBMS_SHARED_POOL.KEEP` 釘住大物件
導出 9i 導入 8i9i 庫跑 `catexp7.sql` → 8i 版 EXP 導出 → 8i 版 IMP 導入 → 9i 庫跑 `catexp.sql` 恢復
查看 SQL 執行計畫`utlxplan.sql` (舊版) → `EXPLAIN PLAN` → `DBMS_XPLAN.DISPLAY`
批次重編譯無效物件`utlrp.sql`

結語

熟悉 `$ORACLE_HOME/rdbms/admin` 下的命名規範與核心腳本功能,是 DBA 掌控資料庫生命週期 (安裝、升級、遷移、調優、災難恢復) 的基本功。切記:**不盲目執行、不重複執行、不跨版本混用**,嚴格遵循官方文檔流程。

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