Oracle 中的資料字典是資料庫中的非常重要的一部分,提供了相關資料庫的資訊,它是所有Oracle使用者(從應用的終端使用者、應用的設計開發人員到資料庫管理員)的非常重要的資訊來源。資料字典的建立,是在Oracle資料庫建立完畢後,運行一些相關的資料庫管理指令碼來完成的。當採用Oracle統一安裝器(Oracle Universal Installer)建立資料庫時,Oracle伺服器有關的字典視圖和指令碼最後會被自動安裝。但當需要升級目前的Oracle資料庫伺服器時,資料庫管理員必須要手工重新運行建立這些視圖或指令碼的SQL。安裝完資料庫後,Oracle資料庫管理指令碼就存放在作業系統中。對於UNIX和NT作業系統,分別位於不同的物理目錄下,見表1所示:
作業系統 指令碼目錄位置
UNIX $ORACLE_HOME/rdbms/admin
NT %ORACLE_HOME%/rdbms/admin
Oracle中幾乎所有的系統管理指令碼都儲存在該檔案目錄下,該目錄下含有上百個不同檔案。這些不同的檔案都有什麼作用呢?本文將詳細討論群組成 Oracle資料庫管理指令碼的命名規範。這樣使用者看到某個檔案大概就可以知道該檔案主要用途是什麼。該目錄下的檔案按照功能不同可分為4大類, Oracle為了容易區分這幾類不同的檔案,對於檔案的命名遵從一定的規則。見表2所示。
命名規則 功能描述
cat*.sql 關於目錄和資料字典資訊
dbms*.sql 資料庫中關於包的說明
prvt*.plb 加密過的包代碼
utl*.sql 資料庫其他功能的表和視圖
(表2 資料庫管理指令碼命名規範)
下面來詳細介紹這四種不同類型的指令碼功能:
1、cat*.sql 指令碼
該類指令碼主要用於建立資料字典視圖。其中,指令碼catalog.sql 和 catproc.sql 是建立資料庫後必須要啟動並執行兩個指令碼。這兩個指令碼的功能說明見表3所示。
指令碼 指令碼說明
catalog.sql 建立系統常用的資料字典視圖和同義字
catproc.sql 運行伺服器端所需要的PL/SQL指令碼
(表3 建立資料字典視圖指令碼說明)
(1) catalog.sql
該指令碼建立相對於系統基表的視圖和系統動態效能檢視以及他們的同義字。該指令碼又同時運行建立其他對象的指令碼,主要有:
基本PL/SQL環境,包括PL/SQL的聲明:
- 資料類型
- 預定義例外
- 內建的過程和函數
- SQL操作等
審計
匯入/匯出
SQL*Loader
安裝選項
(2)catproc.sql
該指令碼主要用於建立PL/SQL功能的使用環境。此外,還建立幾個PL/SQL包用於擴充RDBMS功能。該指令碼同時還為下面的一些RDBMS功能建立另外的一些包和視圖:
警告(Alerts)
管道(Pipes)
日誌分析(LogMiner)
大對象(Large objects)
對象(Objects)
進階隊列(Advanced queuing)
複製選項( Replication option)
其他的一些內建包和選項(Other built-ins and options)
(3)其他指令碼
在該目錄下還有其他一些指令碼用來擴充Oracle資料庫伺服器功能。如,catadt.sql 指令碼用來建立RDBMS中用來顯示兆資料資訊的資料字典視圖。catnoadt.sql 指令碼用來刪除這些表和視圖。
2、dbms*.sql 和 prvt*.plb 指令碼
這兩類指令碼用來建立擴充Oracle伺服器功能的系統預定義的一些Oracle包的對象。這些程式均用來完成資料庫管理工作。大多數的SQL指令碼在運行catproc.sql指令碼時被執行。一些額外的指令碼必須由資料庫管理員另外單獨執行。例如,dbmspool.sql 指令碼,用來顯示在共用池中對象的大小並且為了減少共用池碎塊可以將其在SGA中標記為保持或可刪除。
3、utl*.sql 指令碼
該類指令碼只有在資料庫需要另外的視圖和表時才需要運行。例如,指令碼utlxplan.sql,用來建立一個表,該表用於觀察SQL語句的運行計劃(Execution Plan)。
需要注意的是,絕大多數資料庫管理指令碼都必須在使用者SYS下運行。資料庫管理員如果打算運行這些指令碼,最好首先閱讀指令碼內容中的相關資訊,瞭解應該以什麼使用者來運行這些指令碼。