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