Oracle 中的數據字典是數據庫中的非常重要的一部分,提供了相關數據庫的信息,它是所有 Oracle 用戶(從應用的最終用戶、應用的設計開發者到數據庫管理員)的非常重要的信息來源。數據字典的創建,是在 Oracle 數據庫創建完畢後,運行一些相關的數據庫管理腳本來完成的。當采用 Oracle 統一安裝器( Oracle Universal Installer )創建數據庫時, Oracle 服務器有關的字典視圖和腳本最後會被自動安裝。但當需要升級目前的 Oracle 數據庫服務器時,數據庫管理員必須要手工重新運行創建這些視圖或腳本的 SQL 。安裝完數據庫後, Oracle 數據庫管理腳本就存放在操作系統中。對於 UNIX 和 NT 操作系統,分別位於不同的物理目錄下,見表 1 所示:
操作系統
腳本目錄位置
UNIX
$Oracle_HOME/rdbms/admin
NT
%Oracle_HOME%\rdbms\admin
表 1 數據庫管理腳本在操作系統中的物理位置
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 下運行。數據庫管理員如果打算運行這些腳本,最好首先閱讀腳本內容中的相關信息,了解應該以什麼用戶來運行這些腳本。