Oracle中的数据字典是数据库中的非常重要的一部分,提供了相关数据库的信息,它是所有Oracle用户(从应用的最终用户、应用的设计开发者到数据库管理员)的非常重要的信息来源。数据字典的创建,是在Oracle数据库创建完毕后,运行一些相关的数据库管理脚本来完成的。当采用Oracle统一安装器(Oracle Universal Installer)创建数据库时,Oracle服务器有关的字典视图和脚本最后会被自动安装。但当需要升级目前的Oracle数据库服务器时,数据库管理员必须要手工重新运行创建这些视图或脚本的SQL。安装完数据库后,Oracle数据库管理脚本就存放在操作系统中。对于UNIX和NT操作系统,分别位于不同的物理目录下,见表1所示:
表1 数据库管理脚本在操作系统中的物理位置
Oracle中几乎所有的系统管理脚本都保存在该文件目录下,该目录下含有上百个不同文件。这些不同的文件都有什么作用呢?本文将详细讨论组成Oracle数据库管理脚本的命名规范。这样用户看到某个文件大概就可以知道该文件主要用途是什么。该目录下的文件按照功能不同可分为4大类,Oracle为了容易区分这几类不同的文件,对于文件的命名遵从一定的规则。见表2所示。
表2 数据库管理脚本命名规范
下面来详细介绍这四种不同类型的脚本功能:
1、cat*.sql 脚本 该类脚本主要用于创建数据字典视图。其中,脚本catalog.sql 和 catproc.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下运行。数据库管理员如果打算运行这些脚本,最好首先阅读脚本内容中的相关信息,了解应该以什么用户来运行这些脚本。