Oracle 9i Database: Fundamentals I
(#1Z0-031)
OCP 培训讲稿
赵元杰
2002 年 11 月 9 日星期六
目 录
第 1 章 Oracle9i 新特点...................................................................................................................7
§ 高可用性............................................................................................................................7
§ 性能....................................................................................................................................9
§ 安全性................................................................................................................................9
§ 可管理性..........................................................................................................................10
§ 废弃下面功能..................................................................................................................11
第 2 章 Oracle9i 概述和体系结构.................................................................................................11
§ 系统..................................................................................................................12
§ 产品结构及组成...................................................................................12
§ ORACLE 系统特点..............................................................................................13
§ ORACLE 数据库系统的体系结构.................................................................................13
§ ORACLE 实例的进程结构和内存结构..............................................................14
§ ORACLE 的配置方案..........................................................................................18
§ ORACLE 运行......................................................................................................20
§ ORACLE 数据库结构和表空间..........................................................................21
§ 数据库和实例的启动和关闭(在安装上介绍) ..............................................................26
§ ORACLE 数据库系统启动..................................................................................27
§ ORACLE 数据库系统关闭..................................................................................27
§ ORACLE 初始化参数文件..................................................................................28
§ ORACLE 数据数据字典.................................................................................................28
§ ORACLE 数据字典的结构..................................................................................28
§ ORACLE 数据字典的使用..................................................................................29
§ ORACL 的事务管理 .......................................................................................................29
§ 事务概念............................................................................................................29
§ 提交事务............................................................................................................29
§ 回滚事务............................................................................................................30
§ 保留点................................................................................................................30
§ 数据库触发器...............................................................................................................30
§ 触发器概念........................................................................................................30
§ 触发器组成........................................................................................................31
§ 分布处理和分布式数据库...........................................................................................32
§ 简介....................................................................................................................32
§ 分布式数据库全局名与数据库链....................................................................34
§ 表快照................................................................................................................34
第 3 章 Oracle9i 安装和管理.........................................................................................................35
§ 硬件要求.......................................................................................................................35
§ 主机要求............................................................................................................35
§ 硬盘要求............................................................................................................36
§ 操作系统要求....................................................................................................36
§ Oracle 其他产品环境需求 ...............................................................................37
§ Oracle 工具与预编译产品环境需求 ................................................................37
§ Oracle 网络及系统管理产品环境需求 ............................................................38
§ Oracle8i 安装说明与限制.................................................................................39
§ ORACLE 8i Relase 安装前的工作.....................................................................39
§ 以 root 用户设置的任务 ...................................................................................39
§ 理解 Oracle 的 OFA 结构 .................................................................................39
§ UNIX 系统配置工作.........................................................................................40
§ 设置所需环境变量............................................................................................42
§ 设置 Oracle 产品任务 .......................................................................................44
§ ORACLE 8I 安装具体操作 .............................................................................47
§ 以 root 建立 oinstall 和 dba 组......................................................................47
§ 建立 ORACLE 帐户.........................................................................................47
§ 授权 ORACLE 帐户.........................................................................................48
§ 修改 Oracle 帐户 .profile 文件 ......................................................................48
§ 建立 ORACLE 结构目录.................................................................................50
§ UNIX 操作系统环境设置.................................................................................50
§ 重新启动操作系统............................................................................................53
§ 检查环境变量有效性........................................................................................53
§ 安装 ORACLE 8I ................................................................................................54
§ 安装结果验证..................................................................................................60
§ 安装后的工作...............................................................................................................61
§ Oracle 用户口令的修改 ....................................................................................61
§ 建立附加的 UNIX 帐号..................................................................................61
§ 核实数据文件的安全性....................................................................................61
§ 数据库的自动与关闭的设置............................................................................62
§ 为 ORACLE 帐户配置 .profile 文件 .............................................................63
§ ORACLE 产品的后来安装...............................................................................65
§ 浏览安装的数据库内容....................................................................................66
§ 升级或移植 ORACLE 应用系统方案建议.................................................................69
§ ORACLE8I 的重新安装问题 ......................................................................................69
§ UNIX 环境的重新安装.....................................................................................69
§ WINDOWS NT 环境的重新安装 ....................................................................70
§ ORACLE9I 的启动与关闭 ..........................................................................................71
§ 连接到一个特权用户........................................................................................71
§ 口令文件验证....................................................................................................71
§ 启动一个数据库................................................................................................71
§ 关闭一个数据库................................................................................................71
§ 阅读警告文件....................................................................................................71
第 4 章 创建数据库和数据字典配置数据库................................................................................71
§ 数据库创建规划.............................................................................................................72
§ 规划以及提出正确的问题..................................................................................72
§ 怎样确定恰当的数据块尺寸..............................................................................73
§ 组织文件系统.................................................................................................................74
§ 怎样命名数据库文件..........................................................................................75
§ 使用最佳灵活结构..............................................................................................76
§ 怎样配置符合 O FA 的 Oracle 文件系统 ........................................................76
§ 规划数据库文件布局.....................................................................................................78
§ 最大化可用性的规划..........................................................................................78
§ 最小化磁盘争用的规划......................................................................................78
§ 建立参数文件.................................................................................................................79
§ 配置参数的一注意事项......................................................................................82
§ 建立参数文件的连接..........................................................................................82
§ 优化数据字典存储..............................................................................................83
§ 创建数据库的技术.........................................................................................................86
§ 利用 Oracle 安装程序创建数据库 ....................................................................86
§ 使用安装程序创建数据库的注意事项..............................................................87
§ 怎样建立自己的定制数据库创建脚本..............................................................87
§ 如何从已有数据库克隆数据库..........................................................................88
§ 怎样利用 Database Configuration Assistant 创建数据库.................................89
§ 完成数据库配置.............................................................................................................90
§ 创建表空间..........................................................................................................90
§ 执行数据字典配置脚本......................................................................................91
§ 建立另外的回退段..............................................................................................92
§ 修改 SYSTEM 用户的缺省和临时表空间.......................................................94
§ 更改 SYS 和 SYSTEM 的缺省口令 ................................................................94
§ 建立其他用户和模式对象..................................................................................94
§ 启用归档日志方式..............................................................................................94
§ 进行数据库完全备份..........................................................................................96
§ 配置数据库自动启动和关闭..............................................................................96
§ 在数据库投入使用之后对其进行监控............................................................96
§ 怎样列出和描述初始化参数............................................................................96
§ 怎样列出无记载参数........................................................................................96
§ 回顾.................................................................................................................................97
第 5 章 管理 Oracle 数据库文件 ...................................................................................................99
§ 管理日志文件..................................................................................................................99
§ 管理归档日志文件..........................................................................................................99
§ 管理控制文件..................................................................................................................99
§ 管理 Oracle 管理文件 .....................................................................................................99
第 6 章 管理逻辑结构和物理结构..............................................................................................100
§ 表空间与数据文件........................................................................................................100
§ 表空间概述.........................................................................................................100
§ SYSTEM 表空间................................................................................................100
§ 表空间类型.........................................................................................................100
§ 建立附加表空间.................................................................................................100
§ 临时表空间.........................................................................................................100
§ 表空间限额.........................................................................................................100
§ 监视表空间.........................................................................................................100
§ 管理数据文件................................................................................................................100
第 7 章 管理段和存储结构..........................................................................................................101
§ 数据块............................................................................................................................101
§ 扩展................................................................................................................................101
§ 段....................................................................................................................................101
§ 管理撤消表空间............................................................................................................101
第 8 章 管理 Oracle 对象 .............................................................................................................101
§ 管理表............................................................................................................................101
§ 管理约束........................................................................................................................101
§ 管理临时表....................................................................................................................101
§ 管理分区表....................................................................................................................101
§ 管理外部表....................................................................................................................102
§ 管理索引结构表............................................................................................................102
§ 管理索引........................................................................................................................102
§ 联机重定义表................................................................................................................102
§ 数据库工作空间............................................................................................................102
第 9 章 管理模式对象..................................................................................................................102
§ DDL 命令的使用 ..........................................................................................................102
§ 视图和实体视图...........................................................................................................102
§ 管理序列.......................................................................................................................102
§ 管理同义词...................................................................................................................102
§ 管理数据库链接...........................................................................................................103
§ 管理 PL/SQL 程序对象 ................................................................................................103
§ 怎样检查无效对象............................................................................................103
§ 怎样重新编译无效对象....................................................................................103
§ 在不同表空间之间移动索引............................................................................104
§ 怎样查找最高点................................................................................................105
§ 怎样释放未用空间............................................................................................106
§ PL/SQL 支持包...................................................................................................106
§ DBMS_SPACE 程序包.....................................................................................106
§ Oracle 数据字典 ...........................................................................................................109
§ 管理大对象存储...........................................................................................................109
§ 管理锁争用.................................................................................................................109
§ 怎样查找产生锁的 SQL 语句 .......................................................................111
§ 怎样释放锁......................................................................................................112
§ 怎样删除用户会话..........................................................................................113
§ 怎样从数据字典中提取视图创建命令..........................................................114
§ 怎样从数据字典中提取索引定义..................................................................116
§ 回顾.............................................................................................................................122
第 10 章 管理用户、安全和全求支持........................................................................................124
§ 管理数据库用户..........................................................................................................124
§ 系统和对象权限..........................................................................................................125
§ 管理角色和资源文件..................................................................................................125
§ 资源文件和口令管理.................................................................................................125
§ VPD..............................................................................................................................125
§ 选择字符集.................................................................................................................125
§ 选择多字符集.............................................................................................................125
§ NLS..............................................................................................................................125
§ 定义时区.....................................................................................................................125
第 11 章 Oracle 审计 ....................................................................................................................126
§ 审计种类.....................................................................................................................126
§ 建立审计.....................................................................................................................126
§ 审计选件和结果.........................................................................................................126
精细的审计............................................................................................................................126
精细的用户管理策略............................................................................................................126
第 12 章 练习和操作....................................................................................................................126
第 1 章 ORACLE9I 新特点
§ 高可用性
故障恢复
在Oracle9i中,引入新参数FAST_START_MTTR_TARGET来指定故
障恢复应占用的最大秒数。用户可快速回到过去一个特定的时间点上,
观看表的内容。可看到由于哪个操作导致数据变化。从而手工进行修
改。下面在初始参数文件的样本:
… …
# Redo Log and Recovery
FAST_START_MTTR_TARGET=300
# Resource Manager
RESOURCE_MANAGER_PLAN=SYSTEM_PLAN
. . . . . .
导出和导入
对统计表的数据进行导出和导入。在进行导出和导入时,系统根据
STATISTICS 参数对导出导入表的数据进行统计。
LogMiner 日志文件钻取
可记录 DBA 或用户输入的 DDL 语句,对平面文件个字典进行分析。
得到各种恢复数据。另外,LogMiner 可以用 SKIP_CORRRUPTION
来对有问题的日志文件进行恢复。
RMAN 改进
加图形界面;长期备份;镜象备份;可重新启动备份和档案日志备份。
联机对表和参数进行改变
可用 ALTER TABLE . . . MOVE 对 IOT 进行重建;
可用 ALTER SYSTEM 命令修改 SPFILE 参数;
可扩展性
改变内部数据库结构以使停顿时间最小;
Oracle 的 CLUSTER 技术扩展;
用户会话的管理灵活。
体系结构
DBA 或用户可对索引进行改进而不会全局索引无效;
增加外部表可使用户方便地访问外部表;
表空间的自动段可省去管理的麻烦;
SGA区的管理更灵活。
实际应用集群
Real Application Cluster 允许多个实例在同一个数据库中运行;
应用集群可提高数据库的性能
会话管理
Oracle 共享服务器(原 MTS)的改进;
§ 性能
SQL 和 PL/SQL 优化
选择主键/外部键可进行多表插入;原来系统产生的可运行字节代码
现在用 C 代码代替使速度加快;更新主键时未被涉及的外部键仍有
表级共享锁。
I/O 性能
可分析哪些索引不被使用;在 Oracle8i 中,光标中的 SQL 语句只有
文字的不同就重用共享池中的 SQL 语句;在 Oracle 9i,只有优化器确
定执行计划不依赖于查询中的文字时才启用重用计划。
JAVA 增强
增加 Java 内部引擎进行碎片搜集和本机编译。采用对象共享和会话
锁住方法增强了性能。
§ 安全性
Oracle9i 增加许多安全特点,如:
数据加密
引入 GETKEY 加密,可在 DBMS_OBFUSCATION_TOOLKIT 中使
用。
标号安全
Oracle9I 新的标号安全更精细。可对每个行进行控制。
精细的审计
对用户、日期、对象或访问权等进行控制,如可对表中的行进行条件
限制。
§ 可管理性
Oracle 管理文件
新 增 的 管 理 文 件 , DBA 可 以 用 DB_CREATE_FILE_DEST 和
DB_CREATE_ONLINE_LOG_DEST_n 参数为某类文件指定操作系
统路径。
撤消表空间
Oracle9I 采用撤消表空间来代替 Oracle8I 及以前版本的回滚段。撤消
表空间可创建很大,足以处理忙碌时的大量数据改变。此外,DBA
可对撤消表空间指定保存期。
更细致的用户管理
增加应用角色,使系统可验证用户等。
增强的 OEM
增加了许多新功能。如双窗口的主/细布局等。
支持全球性
除继续支持 NLS 外,新增加 TIMESTAMP 和 INTERVAL 数据类型;
设置时区等。
§ 废弃下面功能
Export/Import 不再支持增量备份
原来在 Oracle7 和 Oracle8 和 Oracle8i 版本中支持的在导出和导入中
使用增量 incremental 选项,现在 Oracle9i 的不再支持 Incremental 选
项,Oracle 公司鼓励 DBA 在 RMAN 中使用该增量选项。
安全
Oracle9i 不 再 支 持 CONNECT INTERNAL 和 CONNECT
INTERNAL/PASSWORD 命 令 , 而 用 CONNECT /AS SYSDBA 或
CONNECT username/password As SYSDBA 来替代。
网络
Oracle9i 的 Oracle Net Services 不再支持 NDS External Naming 、
Authentication 、 SPX 协 议 、 Net8 OPEN 、 验 证 方 法 Identix 和
SecurID。也不再使用 文件。
第 2 章 ORACLE9I 概述和体系结构
ORACLE 公司自 1986 年推出版本 5 开始,系统具有分布数据库处理功能.88
年推出版本 6,ORACLE RDBMS()可带事务处理选项(TPO),提高了事务处理
的速度 .1992 年推出了版本 7,在 ORACLE RDBMS 中可带过程数据库选项
(procedural database option)和并行服务器选项(parallel server option) ,称为
ORACLE7 数据库管理系统,它释放了开放的关系型系统的真正潜力。1994 年推
出了 Oracle8,Oracle8 继承了 ORACLE7 的基本结构,但在功能上更强。当
Oracle8 发行到 版本时,Oracle 公司在不到半年时间推出了 Oracle8i 的第 1
个版本(即 ),Oracle8i 版本除了继承 Oracle8 的特点外,显然增强了在 internet
上的功能。从而在流行的电子商务市场上确立了关系数据库的主导地位。在
Oracle8i 版本的不断升级和完善的同时,Oracle 公司实际上在进行着功能更强、
性能更高的新系统开发与测试工作。这个版本就是在 2000 年底宣布的 Oracle9i
数据库系统。Oracle9i 版本除全面支持 Oracle8I 版本的主要功能外,还增加
了许多新的功能和废弃了部分功能(见前面 Oracle9I 新功能)。
§ ORACLE 系统
§ ORACLE 产品结构及组成
ORACLE 系统是由以 RDBMS 为核心的一批软件产品构成,其产品结构轮廓如
下图所示:
SQL*PLUS ORACLE*FORM
S
ORACLE*REPORT SQL*GRAPHIC SQL*CALC 用户编制的程序
程序接口
(SQL 执行程序)
ORACLE 内核
(RDBMS)
操作系统
§ ORACLE 系统特点
ORACLE 公司于 1979 年,首先推出基于 SQL 标准的关系数据库产品,可
在 100 多种硬件平台上运行(所括微机、工作站、小型机、中型机和大型机),
支持很多种操作系统。用户的 ORACLE 应用可方便地从一种计算机配置移至另
一种计算机配置上。ORACLE 的分布式结构可将数据和应用驻留在多台计算机
上,而相互间的通信是透明的。1992 年 6 月 ORACLE 公司推出的 ORACLE7 协
同服务器数据库,使关系数据库技术迈上了新台阶。根据 IDG(国际数据集团)
1992 年全球 UNIX 数据库市场报告,ORACLE 占市场销售量 50%。它之所以倍
受用户喜爱是因为它有以下突出的特点:
支持大数据库、多用户的高性能的事务处理。ORACLE 支持最大数据库,
其大小可到几百千兆,可充分利用硬件设备。支持大量用户同时在同一数据上执
行各种数据应用,并使数据争用最小,保证数据一致性。系统维护具有高的性能,
ORACLE 每天可连续 24 小时工作,正常的系统操作(后备或个别计算机系统故
障)不会中断数据库的使用。可控制数据库数据的可用性,可在数据库级或在子
数据库级上控制。
ORACLE 遵守数据存取语言、操作系统、用户接口和网络通信协议的工业
标准。所以它是一个开放系统,保护了用户的投资。美国标准化和技术研究所
(NIST)对 ORACLE7 SERVER 进行检验,100%地与 ANSI/ISO SQL89 标准的
二级相兼容。
实施安全性控制和完整性控制。ORACLE 为限制各监控数据存取提供系统
可靠的安全性。ORACLE 实施数据完整性,为可接受的数据指定标准。
支持分布式数据库和分布处理。ORACLE 为了充分利用计算机系统和网络,
允许将处理分为数据库服务器和客户应用程序,所有共享的数据管理由数据库管
理系统的计算机处理,而运行数据库应用的工作站集中于解释和显示数据。通过
网络连接的计算机环境,ORACLE 将存放在多台计算机上的数据组合成一个逻
辑数据库,可被全部网络用户存取。分布式系统像集中式数据库一样具有透明性
和数据一致性。
具有可移植性、可兼容性和可连接性。由于 ORACLE 软件可在许多不同的
操作系统上运行,以致 ORACLE 上所开发的应用可移植到任何操作系统,只需
很少修改或不需修改。ORACLE 软件同工业标准相兼容,包括许多工业标准的
操作系统,所开发应用系统可在任何操作系统上运行。可连接性是指 ORALCE
允许不同类型的计算机和操作系统通过网络可共享信息。
§ ORACLE 数据库系统的体系结构
ORACLE 数据库系统为具有管理 ORACLE 数据库功能的计算机系统。每一
个运行的 ORACLE 数据库与一个 ORACLE 实例(INSTANCE)相联系。一个
数据字典
DD
数据库
DB
ORACLE 实例为存取和控制一数据库的软件机制。每一次在数据库服务器上启
动一数据库时,称为系统全局区(SYSTEM GLOBAL AREA)的一内存区(简
称 SGA)被分配,有一个或多个 ORACLE 进程被启动。该 SGA 和 ORACLE
进程的结合称为一个 ORACLE 数据库实例。一个实例的 SGA 和进程为管理数据
库数据、为该数据库一个或多个用户服务而工作。
在 ORACLE 系统中,首先是实例启动,然后由实例装配(MOUNT)一数
据库。在松耦合系统中,在具有 ORACLE PARALLEL SERVER 选项时,单个
数据库可被多个实例装配,即多个实例共享同一物理数据库。
§ ORACLE 实例的进程结构和内存结构
进程结构
进程是操作系统中的一种正在运行的程序机制,它可执行一系列的操作步
骤。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它
自己的专用存储区。ORACLE 的进程也是根据这种机制进行设计的。
目前 Oracle 系统有多个版本,但可分为单机版本和多用户版本,即单进程
实例和多进程实例。单进程 ORACLE(又称单用户 ORACLE)是一种数据库系
统,一个进程执行全部 ORACLE 代码。由于 ORACLE 部分和客户应用程序不能
分别以进程执行,所以 ORACLE 的代码和用户的数据库应用是单个进程执行。
在单进程环境下的 ORACLE 实例,仅允许一个用户可存取。例如在
MS-DOS 上运行 ORACLE 。
多进程 ORACLE 实例(又称多用户 ORACLE)使用多个进程来执行
ORACLE 的不同部分,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和 ORACLE 进程。当一用户运
行一应用程序,如 PRO*C 程序或一个 ORACLE 工具(如 SQL*PLUS),为用户
运行的应用建立一个用户进程。ORACLE 进程又分为两类:服务器进程和后台
进程。服务器进程用于处理连接到该实例的用户进程的请求。当应用和
ORACELE 是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应
的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和 ORACLE
运行在不同的机器上时,用户进程经过一个分离服务器进程与 ORACLE 通信。
它可执行下列任务:
对应用所发出的 SQL 语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到 SGA 的共享数据库缓冲区(该
块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,
称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一
个 ORACLE 实例可以有许多后台进程,但它们不是一直存在。后台进程的名字
为:
DBWR 数据库写入程序
LGWR 日志写入程序
CKPT 检查点
SMON 系统监控
PMON 进程监控
ARCH 归档
RECO 恢复
LCKn 封锁
Dnnn 调度进程
Snnn 服务器
每个后台进程与 ORACLE 数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR 进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理
的一个 ORACLE 后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,
DBWR 的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓
冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当
未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找
到未用的缓冲区时,DBWR 将管理缓冲存储区,使用户进程总可得到未用的缓
冲区。
ORACLE 采用 LRU(LEAST RECENTLY USED)算法(最近最少使用算
法)保持内存中的数据块是最近使用的,使 I/O 最小。在下列情况预示 DBWR
要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,
该 服 务 进 程 将 通 知 DBWR 进 行 写 。 该 临 界 长 度 是 为 参 数
DB-BLOCK-WRITE-BATCH 的值的一半。
当一个服务器进程在 LRU 表中查找 DB-BLOCK-MAX-SCAN-CNT 缓冲区
时,没有查到未用的缓冲区,它停止查找并通知 DBWR 进行写。
出现超时(每次 3 秒),DBWR 将通知本身。
当出现检查点时,LGWR 将通知 DBWR
在前两种情况下,DBWR 将弄脏表中的块写入磁盘,每次可写的块数由初
始化参数 DB-BLOCK-WRITE-BATCH 所指定。如果弄脏表中没有该参数指定块
数的缓冲区,DBWR 从 LUR 表中查找另外一个弄脏缓冲区。
如果 DBWR 在三秒内未活动,则出现超时。在这种情况下 DBWR 对 LRU
表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,
DBWR 查找一个新的缓冲区组。每次由 DBWR 查找的缓冲区的数目是为寝化参
数 DB-BLOCK-WRITE-BATCH 的值的二倍。如果数据库空运转,DBWR 最终将
全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR 指定一修改缓冲区表必须写入到磁盘。DBWR 将
指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个 DBWR。在这样的实例中,一些块可写
入一磁盘,另一些块可写入其它磁盘。参数 DB-WRITERS 控制 DBWR 进程个
数。
LGWR 进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责
管理日志缓冲区的一个 ORACLE 后台进程。LGWR 进程将自上次写入磁盘以来
的全部日志项输出,LGWR 输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的 1/3 已满时将日志缓冲区输出。
当 DBWR 将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR 进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件
被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当 LGWR 将日志缓冲区的日志项写入日志
文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很
快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR 在一个事务提交前就将
日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE 使用快速提交机制,当用户发出 COMMIT 语句时,一个 COMMIT
记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时
才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它
同事务日志项一起记录在日志中。由于 SCN 记录在日志中,以致在并行服务器
选项配置情况下,恢复操作可以同步。
CKPT 进程:该进程在检查点出现时,对全部数据文件的标题进行修改,
指示该检查点。在通常的情况下,该任务由 LGWR 执行。然而,如果检查点明
显地降低系统性能时,可使 CKPT 进程运行,将原来由 LGWR 进程执行的检查
点的工作分离出来,由 CKPT 进程实现。对于许多应用情况,CKPT 进程是不必
要的。只有当数据库有许多数据文件,LGWR 在检查点时明显地降低性能才使
CKPT 运行。CKPT 进程不将块写入磁盘,该工作是由 DBWR 完成的。
初始化参数 CHECKPOINT-PROCESS 控制 CKPT 进程的使能或使不能。缺
省时为 FALSE,即为使不能。
SMON 进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临
时段。在具有并行服务器选项的环境下,SMON 对有故障 CPU 或实例进行实例
恢复。SMON 进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时
可以被调用。
PMON 进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存
储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,
将该故障的进程的 ID 从活动进程表中移去。PMON 还周期地检查调度进程
(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意
删除的进程)。
PMON 有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被
调用。
RECO 进程:该进程是在具有分布式选项时所使用的一个进程,自动地解
决在分布式事务中的故障。一个结点 RECO 后台进程自动地连接到包含有悬而
未决的分布式事务的其它数据库中,RECO 自动地解决所有的悬而不决的事务。
任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删
去。
当一数据库服务器的 RECO 后台进程试图建立同一远程服务器的通信,如
果远程服务器是不可用或者网络连接不能建立时,RECO 自动地在一个时间间隔
之后再次连接。
RECO 后台进程仅当在允许分布式事务的系统中出现,而且 DISTRIBUTED
– TRANSACTIONS 参数是大于 0。
ARCH 进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当
日志是为 ARCHIVELOG 使用方式、并可自动地归档时 ARCH 进程才存在。
LCKn 进程:是在具有并行服务器选件环境下使用,可多至 10 个进程
(LCK0,LCK1……,LCK9),用于实例间的封锁。
Dnnn 进程(调度进程):该进程允许用户进程共享有限的服务器进程
(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程
(DEDICATEDSERVER PROCESS)。对于多线索服务器(MULTI-THREADED
SERVER)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可
支持大量用户,尤其在客户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个
调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的
调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要
SQL*NET 版本 2 或更后的版本。在多线索服务器的配置下,一个网络接收器进
程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应
用连接到一调度进程时,网络接收器进程将启动一个专用服务器进程。该网络接
收器进程不是 ORACLE 实例的组成部分,它是处理与 ORACLE 有关的网络进程
的组成部分。在实例启动时,该网络接收器被打开,为用户连接到 ORACLE 建
立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接
收器。当一个用户进程作连接请求时,网络接收器进程分析请求并决定该用户是
否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后
用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用
SQL*NET 以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进
程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。
2)、ORACLE 内存结构
ORACLE 在内存存储下列信息:
执行的程序代码。
连接的会话信息
程序执行期间所需数据和共享的信息
存储在外存储上的缓冲信息。
ORACLE 具有下列基本的内存结构:
软件代码区
系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池.
程序全局区,包括栈区和数据区.
排序区
软件代码区
用于存储正在执行的或可以执行的程序代码。
软件区是只读,可安装成共享或非共享。ORACLE 系统程序是可共享的,
以致多个 ORACLE 用户可存取它,而不需要在内存有多个副本。用户程序可以
共享也可以不共享。
系统全局区
为一组由 ORACLE 分配的共享的内存结构,可包含一个数据库实例的数据
或控制信息。如果多个用户同时连接到同一实例时,在实例的 SGA 中数据可为
多个用户所共享,所以又称为共享全局区。当实例起动时,SGA 的存储自动地
被分配;当实例关闭时,该存储被回收。所有连接到多进程数据库实例的全部用
户可自动地被分配;当实例关闭时,该存储被回收。所有连接到多进程数据库实
例的全部用户可使用其 SGA 中的信息,但仅仅有几个进程可写入信息。在 SGA
中存储信息将内存划分成几个区:数据库缓冲存储区、日志缓冲区、共享池、请
求和响应队列、数据字典存储区和其它各种信息。
程序全局区
PGA 是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全
局区(PROCESS GLOBAL AREA)。
排序区
排序需要内存空间,ORACLE 利用该内存排序数据,这部分空间称为排序
区。排序区存在于请求排序的用户进程的内存中,该空间的大小为适就排序数据
量的大小,可增长,但受初始化参数 SORT-AREA-SIZER 所限制。
§ ORACLE 的配置方案
所有连接到 ORACLE 的用户必须执行两个代码模块可存取一个 ORACLE
数据库实例:
应用或 ORACLE 工具:一数据库用户执行一数据库应用或一个 ORACLE
工具,可向 ORACLE 数据库发出 SQL 语句。
ORACLE 服务器程序:负责解释和处理应用中的 SQL 语句。
在多进程实例中,连接用户的代码可按下列三种方案之一配置:
对于每一个用户,其数据库应用程序和服务器程序组合成单个用户进程
对于每一个用户,其数据库应用是由用户进程所运行,并有一个专用服务
器进程。执行 ORACLE 服务器的代码。这样的配置称为专用服务器体系结构
执行数据库应用的进程不同于执行 ORACLE 服务器代码的进程,而且每一
个服务器进程(执行 ORACLE 服务器代码)可服务于多个用户进程,这样的配
置称为多线索服务器体系结构。
USER/SERVER 进程相结合的结构
在这种配置下,数据库应用和 ORACLE 服务器程序是在同一个进程中运行,
该进程称为用户进程。
这种 ORACLE 配置有时称为单任务 ORACLE(single_task ORACLE),该
配置适用于这样的操作系统,它可在同一进程中的数据库应用和 ORACLE 代码
之间维护一个隔离,该隔离是为数据安全性和完整性所需。其中程序接口
(program interface)是负责 ORACLE 服务器代码的隔离和保护,在数据库应用
和 ORACLE 用户程序之间传送数据。
使用专用服务器进程的系统结构
使用专用服务器进程的 ORACLE 系统在两台计算机上运行。在这种系统中,
在一计算机上用户进程执行数据库应用,而在另一台计算机上的服务器进程执行
相应的 ORACLE 服务器代码,这两个进程是分离的。为每个用户进程建立的不
同的服务器进程称为专用服务器进程,因为该服务器进程仅对相连的用户进程起
作用。这种配置又称为两任务 ORACLE。每一个连接到 ORACLE 的用户进程有
一个相应的专用服务进程。这种系统结构允许客户应用是有工作站上执行,通过
网络与运行 ORACLE 的计算机通信。当客户应用和 ORACLE 服务器代码是在同
一台计算机上执行时,这种结构也可用。
多线索服务器的系统结构
多线索服务器配置允许许多用户进程共享很少服务器进程。在没有多线索
服务器的配置中,每一个用户进程需要自己的专用服务器进程。在具有多线索服
务器的配置中,许多用户进程连接到调度进程,由调度进程将客户请求发送到一
个共享服务器进程。多线索服务器配置的优点是降低系统开销,增加用户个数。
该系统中需要下列类型的进程:
网络接收器进程,将用户进程连接到调度进程和专用服务器进程。
一个或多个调度进程
一个或多个共享服务器进程
其中网络接收器进程等待新来的连接请求,决定每一用户进程能否用共享
服务器进程。如果可以使用,接收器进程将一调度进程的地址返回给用户进程。
如果用户进程请求一专用服务器,该接收器进程将建立一个专用服务器进程,将
用户进程连接到该专用服务器进程。对于数据库客户机所使用的每种网络协议至
少配置一个调度进程,并启动它。
当用户作一次调用时,调度进程将请求放置在 SGA 的请求队列中,由可用
的共享服务器进程获取。共享服务器进程为完成每一个用户进程的请求作所有必
要的数据库调用。当服务器完成请求时,将结果返回到调度进程的队列,然后由
调度进程将完成的请求返回给用户进程。
共享服务器进程:除共享服务器进程不是连接指定的用户进程外,共享服
务器进程和专用服务器进程提供相同的功能,一个共享服务器进程在多线索服务
器的配置中可为任何客户请求服务。一个共享服务器进程的 SGA 不包含有与用
户相关的数据,其信息可为所有共享服务器进程存取,它仅包含栈空间、进程指
定变量。所有与会话有关的信息是包含有 SGA 中。每一个共享服务器进程可存
取全部会话的数据空间,以致任何服务进程可处理任何会话的请求。对于每一个
会话的数据空间是在 SGA 中分配空间。
ORACLE 根据请求队列的长度可动态地调整共享服务器进程。可建立的共
享服务器进程将请求放到请求队列。一个用户请求是对数据库的一次程序接口调
用,为 SQL 语句。在 SGA 中请求队列对实例的全部调度进程是公用的。服务器
进程为新请求检查公用请求队列,按先进先出的原则从队列检出一个请求,然后
为完成该请求对数据库作必要的调用。共享服务器进程将响应放在调度进程的响
应队列。每一个调度进程在 SGA 中有自己的响应队列,每个调度进程负责将完
成的请求回送给相应的用户进程。
§ ORACLE 运行
使用专用服务进程的 ORACLE 的运行
在这种配置下,ORACLE 运行过程如下:
数据库服务器计算机当前正在运行 ORACLE(后台进程)。
在一客户工作站运行一个数据库应用(为用户进程),如 SQL*PLUS。客户
应用使用 SQL*NET DRIVER 建立对服务器的连接。
数据库服务器计算机当前正运行合适的 SQL*NET DRIVER,该机上接收器
进程检出客户数据库应用的连接请求,并在该机上为用户进程建立专用服务器进
程。
用户发出单个 SQL 语句。
专用服务器进程接收该语句,在此处有两种方法处理 SQL 语句:
如果在共享池一共享 SQL 区中包含有相同 SQL 语句时,该服务器进程可利
用已存在的共享 SQL 区执行客户的 SQL 语句。
如果在共享池中没有一个 SQL 区包含有相同的 SQL 语句时,在共享池中为
该语句分配一新的共享 SQL 区。
在每一种情况,在会话的 PGA 中建立一个专用 SQL 区,专用服务器进程
检查用户对查询数据的存取权限。
(6) 如果需要,服务器进程从数据文件中检索数据块,或者可使用已存储在
实例 SGA 中的缓冲存储区的数据块。
(7) 服务器进程执行存储在共享 SQL 区中的 SQL 语句。数据首先在 SGA
中修改,由 DBWR 进程在最有效时将它写入磁盘。LGWR 进程在在线日志文件
中记录用户提交请求的事务。
(8)如果请求成功,服务器将通过网络发送一信息。如果请求不成功,将
发送相应的错误信息。
(9)在整个过程中,其它的后台进程是运行的,同时注意需要干预的条件。
另外,ORACLE 管理其它事务,防止不同事务之间请求同一数据的竞争。
2) 使用多线索服务器的 ORACLE 的运行
在这种配置下,ORACLE 运行过程如下:
一数据库服务器计算机运行使用多线索服务器配置的 ORACLE。
在一客户工作站运行一数据库应用(在一用户进程中)。客户应用合适的
SQL*NET 驱动器试图建立到数据库服务器计算机的连接。
数据库服务器计算机当前运行合适的 SQL*NET 驱动器,它的网络接收器进
程检出用户进程的连接请求,并决定用户进程如何连接。如果用户是使用
SQL*NET 版本 2,该网络接收器通知用户进程使用一个可用的调度进程的地址
重新连接。
用户发出单个 SQL 语句
调度进程将用户进程的请求放入请求队列,该队列位于 SGA 中,可为所有
调度进程共享。
一个可用共享服务器检验公用调度进程请求队列,并从队列中检出下一个
SQL 语句。然后处理该 SQL 语句,同前一(5),(6)和(7)。注意:会话的专
用 SQL 区是建立在 SGA 中。
一当共享服务器进程完成 SQL 处理,该进程将结果放置发入该请求的调度
进程的响应队列。
调度进程检查它的响应队列,并将完成的请求送回请求的用户进程。
§ ORACLE 数据库结构和表空间
一个 ORACLE 数据库是数据的集合,被处理成一个单位。一个 ORACLE
数据库有一个物理结构和一个逻辑结构。
物理数据库结构(physical database structure)是由构成数据库的操作系统文
件所决定。每一个 ORACLE 数据库是由三种类型的文件组成:数据文件、日志
文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。
逻辑数据库结构是用户所涉及的数据库结构。一个 ORACLE 数据库的逻辑
结构由下列因素决定:
一个或多个表空间
数据库模式对象(即表、视图、索引、聚集、序列、存储过程)
逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的
物理空间如何使用。模式对象(schema object)用它们之间的联系组成了一个数据
库的关系设计。
§ ORACLE 系统的物理结构
数据文件
每一个 ORACLE 数据库有一个或多个物理的数据文件(data file)。一个数据
库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地
存储在数据库的数据文件中。数据文件有下列特征:
一个数据文件仅与一个数据库联系。
一旦建立,数据文件不能改变大小
一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在 ORACLE 内存储区中。例如:
用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,
则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写
入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由
ORACLE 后台进程 DBWR 决定如何将其写入到相应的数据文件。
日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文
件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数
据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地
写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,
ORACLE 允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个
日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障
阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据
库打开时,ORACLE 自动地应用日志文件中的信息来恢复数据库数据文件。
控制文件
每一 ORACLE 数据库有一个控制文件(control file),它记录数据库的物理结
构,包含下列信息类型:
数据库名;
数据库数据文件和日志文件的名字和位置;
数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次 ORACLE 数据库的实例启动时,它的控制文件用于标识数据库和日
志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,
ORACLE 自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
§ ORACLE 系统的逻辑理结构
数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。
表空间
一 个 数 据 库 划 分 为 一 个 或 多 个 逻 辑 单 位 , 该 逻 辑 单 位 称 为 表 空 间
(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA 可利用
表空间作下列工作:
控制数据库数据的磁盘分配。
将确定的空间份额分配给数据库用户。
通过使单个表空间在线或离线,控制数据的可用性。
执行部分数据库后备或恢复操作。
为提高性能,跨越设备分配数据存储。
数据库、表空间和数据文件之间的关系如下图所示:
Database
SYSTEM DATA
Tablespace Tablespace
DTATAFILE1
(2MB) DATAFILE2
(2MB) DATAFILE3
(2MB)
Driver1 Driver2
。每个数据库可逻辑划分为一个或多个表空间
。每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全
部逻辑结构的数据。DBA 可以建立新的表空间,可为表空间增加数据文件或可
删除数据文件,设置或更改缺省的段存储位置。
每一个 ORACLE 数据库包含有一个名为 SYSTEM 的表空间,在数据库建
立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库
可只需要 SYSTEM 表空间。该表空间必须总是在线。表和存储的 PL/SQL 程序
单元(过程、函数、包和触发器)的全部存储数据是存储在 SYSTEM 表空间中。
如果这些 PL/SQL 对象是为数据库建的,DBA 在 SYSTEM 表空间中需要规划这
些对象所需要的空间。
表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数
据文件大小的和。
DBA 可以使 ORACLE 数据库中任何表空间(除 SYSTEM 表空间外)在线
(ONLINE)或离线(OFFLINE)。表空间通常是在线,以致它所包含的数据对
数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,DBA
可以使其离线。
。使部分数据不可用,而剩余的部分允许正常存取
。执行离线的表空间后备
。为了修改或维护一应用,使它和它的一组表临时不可用。
包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,
该表空间才可离线。
在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一
表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。
当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多
个表空间,将不同类型的数据分开,更方便 DBA 来管理数据库。
ORACLE 数据库中一表空间是由一个或多个物理数据文件组成,一个数据
文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE 建
立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不
包含任何数据。表空间可以在线或离线。在 ORACLE 中还允许单独数据文件在
线或离线。
段、范围和数据块
ORACLE 通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使
用。
段
段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范
围组成。在 ORACLE 数据库中有几种类型的段:数据段、牵引段、回滚段和临
时段。
数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。
每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。
索引段:每一个索引有一索引段,存储索引数据。
回滚段:是由 DBA 建立,用于临时存储要撤消的信息,这些信息用于生成
读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。
临时段:当一个 SQL 语句需要临时工作区时,由 ORACLE 建立。当语句
执行完毕,临时段的范围退回给系统。
ORACLE 对所有段的空间分配,以范围为单位。
范围
一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位,它由连续
数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全
使用时,ORACLE 为该段分配一个新的范围。
为了维护的目的,在数据库的每一段含有段标题块(segment header block)
说明段的特征以及该段中的范围目录。
数据块
数据块(data block)是 ORACLE 管理数据文件中存储空间的单位,为数据
库使用的 I/O 的最小单位,其大小可不同于操作系统的标准 I/O 块大小。
数据块的格式:
公用的变长标题
表目录
行目录
未用空间
行数据
模式和模式对象
一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用
户对应一个模式。模式对象为直接引用数据库数据的逻辑结构,模式对象包含如
表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象
是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。
一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包
含在表空间的一个或多个数据文件中。
表
表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个
表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。
一行是对应单个记录的列信息的集合。
视图
一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的
表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一
个虚表(virtual table)。视图可在使用表的许多地方使用。
由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义 254
列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行
的全部操作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发
器的限制。
视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。
由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。
引入视图有下列好处:
。通过限制对表的行预定义集合的存取,为表提供附加的安全性
。隐藏数据复杂性。
。为用户简化命令
。为基本表的数据提供另一种观点。
。可将应用隔离基本表定义的修改
。用于不用视图无法表示的查询。
。可用于保存复杂查询。
聚集
聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有
同一公共列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。
例如:EMP 表各 DEPT 表共享 DEPTNO 列,所以 EMP 表和 DEPT 表可聚集在
一起,聚集码的列为 DEPTNO 列,该聚集将每个部门的全部职工行各该部门的
行物理地存储在同一数据块中。
索引
索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的
性能而建立,利用它可快速地确定指定的信息。ORACLE 索引为表数据提供快
速存取路径。索引适用于一范围的行查询或指定行的查询。
索引可建立在一表的一列或多列上,一旦建立,由 ORACLE 自动维护和使
用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删
除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一
表上存在许多索引时,修改、删除和插入操作的性能会下降。
索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的
列上具有重复值。ORACLE 在唯一码上自动地定义唯一索引实施 UNIQUE 完整
性约束。
组合索引是在表的某个列上所建立的一索引。组全索引可加快 SELECT 语
句的检索速度,在其 WHERE 子句中可引用组合索引的全部或主要部分 。所以
在定义中给出列的次序,将经常存取的或选择最多的列放在首位。
在建立索引时,将在表空间自动地建立一索引段,索引段空间分配和保留
空间的使用受下列方式控制:
索引段范围的分配常驻该索引段的存储参数控制。
其数据块中未用空间可受该段的 PCTFREE 参数设置所控制。
序列生成器
序列生成器(sequence generator)产生序列号。在多用户环境下该序列生成器
特别有用,可生成各返回序列号而不需要磁盘 I/O 或事务封锁。
序列号为 ORACLE 整数,最多可有 38 个数字。一个序列定义指出一般信
息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的
定义以行存储在 SYSTEM 表空间中的数据字典表中,所以所有序列定义总是可
用。由引用序列号的 SQL 语句使用序列号,可生成一个新的序列号或使用当前
序列号。一旦在用户会话中的 SQL 语句生成一序列号,该序列号仅为该会话可
用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成
序列号可用于生成唯一的主码。
同义词
一个同义词(synonym)为任何表、视图、快照、序列、过程、函数或包的别
名,其定义存储在数据字典中。同义词因安全性和方便原因而经常使用,可用于:
可屏蔽对象的名字及其持有者。
为分布式数据库的远程对象提供位置透明性。
为用户简化 SQL 语句。
有两种同义词:公用和专用。一个公用同义词为命名为 PUBLIC 特殊用户
组所持有,可为数据库中每一个用户所存取。一个专用同义词是包含在指定用户
的模式中,仅为该用户和授权的用户所使用。
杂凑
杂凑(hashing)是存储表数据一种可选择的方法,用以改进数据检索的性
能。要使用杂凑,就要建立杂凑聚集,将表装入到该聚集。在骠凑聚集中的表行
根据杂凑函数的结果进行物理学存储和检索。杂凑函数用于生成一个数值的分布,
该数值称为杂凑值,它是基于指定的聚集码值。
程序单元
程序单元(program unit)是指存储过程、函数和包(PACKAGE)。一个过
程和函数,是由 SQL 语句和 PL/SQL 语句组合在一起,为执行某一个任务的一
个可执行单位。一个过程或函数可被建立,在数据库中存储其编译形式,可由用
户或数据库应用所执行。过程和函数差别在函数总返回单个值给调用者,而过程
没有值返回给调用者。
包提供相关的过程、函数、变量和其它包结构封装起来并存贮在一起的一
种方法,允许管理者和应用开发者利用该方法组织如此的程序(routine),来提供
更多的功能和提高性能。
数据库链
数据库链是一个命名的对象,说明从一数据库到另一数据库的一路径
(PATH)。在分布式数据库中,对全局对象名引用时,数据库链隐式地使用。
§ 数据库和实例的启动和关闭(在安装上介绍)
一个 ORACLE 数据库没有必要对所有用户总是可用,数据库管理员可启动
数据库,以致它被打开。在数据库打开情况下,用户可存取数据库中的信息。当
数据库不使用时,DBA 可关闭它,关闭后的数据库,用户不能存取其信息。
数据库的启动和关闭是非常重要的管理功能,通过以 INTERNAL 连接到
ORACLE 的能力来保护。以 INTERNAL 连接到 ORACLE 需要有下列先决条件:
该用户的操作系统账号具有使用 INTERNAL 连接的操作系统特权。
对 INTERNAL 数据库有一口令,该用户知道其口令。
另外:当用户以 INTERNAL 连接时,可连接到专用服务器,而且是安全连
接。
§ ORACLE 数据库系统启动
启动数据库并使它可用有三步操作:
启动一个实例;
装配数据库
打开数据库
启动一个实例
启动一实例的处理包含分配一个 SGA(数据库信息使用的内存共享区)和
后台进程的建立。实例起动的执行先于该实例装配一数据库。如果仅启动实例,
则没有数据库与内存储结构和进程相联系。
装配一数据库
装配数据库是将一数据库与已启动的实例相联。当实例安装一数据库之后,
该数据库保持关闭,仅 DBA 可存取。
打开一数据库
打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打
开所有用户可连接到该数据库用存取其信息。在数据库打开时,在线数据文件和
在线日志文件也被打开。如果一表空间在上一次数据库关闭时为离线,在数据库
再次打开时,该表空间与它所相联的数据文件还是离线的。
§ ORACLE 数据库系统关闭
关闭一实例以及它所连接的数据库也有三步操作:
关闭数据库
数据库停止的第一步是关闭数据库。当数据库关闭后,所有在 SGA 中的数
据库数据和恢复数据相应地写入到数据文件和日志文件。在这操作之后,所有联
机数据文件和联机的日志文件也被关闭,任何离线表空间中数据文件夹是已关闭
的。在数据库关闭后但还安装时,控制文件仍保持打开。
卸下数据库
停止数据库的第二步是从实例卸下数据库。在数据库卸下后,在计算机内
存中仅保留实例。在数据库卸下后,数据库的控制文件也被关闭。
停止实例
停止数据库的最后一步是停止实例。当实例停止后,SAG 是从内存中撤消,
后台进程被中止。
§ ORACLE 初始化参数文件
在启动一个实例时,ORACLE 必须读入一初始化参数文件(initialization
parameter file),该参数文件是一个文本文件,包含有实例配置参数。这些参数置
成特殊值,用于初始 ORACLE 实例的许多内存和进程设置,该参数文件包含:
一个实例所启动的数据库名字
在 SGA 中存储结构使用多少内存;
在填满在线日志文件后作什么;
数据库控制文件的名字和位置;
在数据库中专用回滚段的名字。
§ ORACLE 数据数据字典
数据字典是 ORACLE 数据库的最重要的部分之一,是由一组只读的表及其
视图所组成。它提供有关该数据库的信息,可提供的信息如下:
ORACLE 用户的名字;
每一个用户所授的特权和角色;
模式对象的名字(表、视图、快照、索引、聚集、同义词、序列、过程、
函数、包及触发器等);
关于完整性约束的信息;
列的缺省值;
有关数据库中对象的空间分布及当前使用情况;
审计信息(如谁存取或修改各种对象);
其它一般的数据库信息。
可用 SQL 存取数据字典,由于数据字典为只读,允许查询。
§ ORACLE 数据字典的结构
数据库数据字典是由基本表和用户可存取的视图组成。
基本表:数据字典的基础是一组基本表组成,存储相关的数据库的信息。
这些信息仅由 ORACLE 读和写,它们很少被 ORACLE 用户直接存取。
用户可存取视图:数据字典包含用户可存取视图,可概括地方便地显示数
据字典的基本表的信息。视图将基本表中信息解码成可用信息。
§ ORACLE 数据字典的使用
当数据库打开时,数据字典总是可用,它驻留在 SYSTEM 表空间中。数据
字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此
以 前缀 相区别,前缀 USER、ALL 和 DBA。
前缀为 USER 的视图,为用 视图,是在用户的模式内。
前缀为 ALL 的视图,为扩展的用户视图(为用户可存取的视图)。
前缀为 DBA 的视图为 DBA 的视图(为全部用户可存取的视图)。
在数据库中 ORACLE 还维护了一组虚表记录当前数据库的活动,这些表称
为动态性能表。动态性能表不是真正的表,许多用户不能存取,DBA 可查询这
些表,可以建立视图,给其它用户授予存取视图权。
§ ORACL 的事务管理
§ 事务概念
一个事务为工作的一个逻辑单位,由一个或多个 SQL 语句组成。一
个事务是一个原子单位,构成事务的全部 SQL 语句的结果可被全部提交或
者全部回滚。一个事务由第一个可执行 SQL 语句开始,以提交或回滚结束,
可以是显式的,也可是隐式的(执行 DDL 语句)。
在执行一个 SQL 语句出现错误时,该语句所有影响被回滚,好像该语句没
有被执行一样,但它不会引起当前事务先前的工作的丢失。
ORACLE 的事务管理
在 ORACLE 中一个事务是由一个可执行的 SQL 语句开始,一个可执
行 SQL 语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录
该事务的回滚项。一个事务以下列任何一个出现而结束。
当 COMMIT 或 ROLLBACK(没有 SAVEPOINT 子句)语句发出。
一个 DDL 语句被执行。在 DDL 语句执行前、后都隐式地提交。
用户撤消对 ORACLE 的连接(当前事务提交)。
用户进程异常中止(当前事务回滚)。
§ 提交事务
提交一事务,即将在事务中由 SQL 语句所执行的改变永久化。在提交前,
ORACLE 已有下列情况:
在 SGA 的回滚段缓冲区已生成回滚段记录,回滚信息包含有所修改值的老
值。
在 SGA 的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。
对 SGA 的数据库缓冲区已作修改,这些修改在事务真正提交之前可进入磁
盘。
在事务提交之后,有下列情况:
对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系
统修改号(SCN),记录在表中。
在 SGA 的日志缓冲区中日志项由 LGWR 进程写入到在线日志文件, 这是
构成提交事务的原子事务。
在行上和表上的封锁被释放。
该事务标志为完成 。
注意:对于提交事务的数据修改不必由 DBWR 后台进程立即写入数据文件,
可继续存储在 SGA 的数据库缓冲区中,在最有效时将其写入数据文件。
§ 回滚事务
回滚事务的含义是撤消未提交事务中的 SQL 语句所作的对数据修改。
ORALCE 允许撤消未提交的整个事务,也允许撤消部分。
在回滚整个事务(没有引用保留点)时,有下列情况:
在事务中所有 SQL 语句作的全部修改,利用相应的回滚段被撤消。
所有数据的事务封锁被释放。
事务结束。
当事务回滚到一保留点(具有 SAVEPOINT)时,有下列情况:
仅在该保留点之后执行的语句被撤消。
该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。
自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以
前所获取的全部数据封锁继续保持。
该事务仍可继续。
§ 保留点
保留点(savepoint)是在一事务范围内的中间标志,经常用于将一个长的
事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的
工作。在应用程序中经常使用保留点;例如一过程包含几个函数,在每个函数前
可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回
滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。
§ 数据库触发器
§ 触发器概念
数据库触发器(database trigger)是存储在数据库中的过程,当表被修改时它隐
式地被激发(执行)。在 ORACLE 中允许在对表发出 INSERT、UPDATE 或
DELETE 语句时隐式地执行所定义的过程,这些过程称为数据库触发器。触发器
存储在数据库中,并与所相关表分别存储。触发器仅可在表上定义。在许多情况
中触发器用于提供很高级的专用数据库管理系统,来补充 ORACLE 的标准功能。
触发器一般用于:
自动地生成导出的列值;
防止无效的事务;
实施更复杂的安全性检查
在分布式数据库中实施跨越结点的引用完整性;
实施复杂的事务规则;
提供透明事件日志;
提供高级的审计;
维护同步表复制;
收集关于存取表的统计。
注意:数据库触发器与 SQL*FORMS 触发器之间的差别。数据库触发器是
定义在表上,存储在数据库中,当对表执行 INSERT、UPDATE 或 DELETE 语
句时被激发,不管是谁或哪一应用发出。而 SQL*FORMS 触发器是 SQL*FORM
应用的部分,仅当在指定 SQL*FORMS 应用中执行一个指定触发器点时才被激
发。
触发器和说明性完整性约束都可用于约束数据的输入,但它们之间有一定
区别:
说明性完整性约束是关于数据库总是为“真”的语句。一个完整性约束应用
于表中已有数据和操纵表的任何语句。
而触发器约束事务不可应用于在定义触发器前已装入的数据,所以它不能
保证表中全部数据服从该触发器的规则。触发器实施瞬时约束,即在数据改变时
实施一约束。
§ 触发器组成
一个触发器有三个基本部件:触发事件或语句、触发器的限制、触发器动
作。
触发事件或语句:为引起触发器激发的 SQL 语句,是对指定表 INSERT、
UPDATE 或 DELETE 语句。
触发器限制:为一布尔表达式,当触发器激发时该条件必须为 TRUE。触
发器的限制是用 WHEN 子句来指定。
触发器的动作:为一个 PL/SQL 块(过程),由 SQL 语句和 PL/SQL 语句组
成。当触发语句发出,触发器的限制计算得 TRUE 时,它被执行。在触发器动
作的语句中,可使用触发器的处理的当前行的列值(新值、老值),使用形式为:
NEW.列名 引用新值
OLE.列名 引用老值
在定义触发器时可指定触发器动作执行次数:受触发语句影响每一行执行
一次或是对触发语句执行一次。
对每一触发语句可有四种类型触发器:
行触发器:对受触发语句所影响的每一行,行触发器激发一次。
语句触发器:该类型触发器对触发语句执行一次,不管其受影响行数。
定义触发器可以指定触发时间,指定激发器动作的执行相对于触发语句执
行之后或之前。
BEFORE 触发器:该触发器执行触发器动作是在触发语句执行之前。
AFTER 触发器:该触发器执行触发器动作是在触发语句执行之后。
一个触发器可处于两种不同的方式:使能触发器和使不能触发器。
使能触发器:只要当触发语句发出,触发器限制计算为 TRUE,这种类型
的触发器执行其触发动作。
使不能触发器:这种触发器即使其触发语句被发出,触发器限制计算为
TRUE,也不执行触发器动作。
触发器的源代码存储在数据库中,在第一次执行时,触发器的源代码被编
译,存储在共享池中。如果触发器从共享池中挤了,再使用时必须再重新编译。
§ 分布处理和分布式数据库
§ 简介
一个分布式数据库在用户面前为单个逻辑数据库,但实际上是由存储
在多台计算机上的一组数据库组成。在几台计算机 上的数据库通过网络可
同时修改和存取,每一数据库受它的局部的 DBMS 控制。分布式数据库中
每一个数据库服务器合作地维护全局数据库的一致性。
在系统中的每一台计算机称为结点。如果一结点具有管理数据库 软件,该
结点称为数据库服务器。如果一个结点为请求服务器的信息的一应用,该结点称
为客户。在 ORACLE 客户,执行数据库应用,可存取数据信息和与用户交互。
在服务器,执行 ORACLE 软件,处理对 ORACLE 数据库并发、共享数据存取。
ORACLE 允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由
网连接的不同计算机上时,更有效。
分布处理是由多台处理机分担单个任务的处理。在 ORACLE 数据库系统中
分布处理的例子如:
客户和服务器是位于网络连接的不同计算机上。
单台计算机上有多个处理器,不同处理器分别执行客户应用。
SQL*NET 是 ORACLE 网络接口,允许运行在网络工作站的 ORACLE 工具
和服务器上,可存取、修改、共享和存储在其它服务器上的数据。SAQL*NET
可被认为是网络通信的程序接口。SQL*NET 利用通信协议和应用程序接口(API)
为 OARCLE 提供一个分布式数据库和分布处理。
SQL*NET 驱动器为在数据库服务器上运行的 ORACLE 进程与 ORACLE
工具的用户进程之间提供一个接口。
参与分布式数据库的每一服务器是分别地独立地管理数据库,好 像每一
数据库不是网络化的数据库。每一个数据库独立地被管理,称为场地自治性。场
地自治性有下列好处:
系统的结点可反映公司的逻辑组织。
由局部数据库管理员控制局部数据,这样每一个数据库管理员责任域要小
一些,可更
好管理。
只要一个数据库和网络是可用,那么全局数据库可部分可用。不会因一个
数据库的故
障而停止全部操作或引起性能瓶颈。
故障恢复通常在单个结点上进行。
每个局部数据库存在一个数据字典。
结点可独立地升级软件。
可从分布式数据库的所有结点存取模式对象,因此正像非分布的局部的
DBMS,必须提供一种机制,可在局部数据库中引用一个对象。分布式 DBMS
必须提供一种命名模式,以致分布式数据库中一个对象可在应用中唯一标识和引
用。一般彩在层次结构的每一层实施唯一性。分布式 DVMS 简单地扩充层次命
名模型,实施在网络上唯一数据库命名。因此一个对象的全局对象名保证在分布
式数据库内是唯一。
ORACLE 允许在 SQL 语句中使用佤对象名引用分布式数据库中的模式对
象(表、视图和过程)。在 ORACLE 中,一个模式对象的全局名由三部分组成:
包含对象的模式名、对象名、数据库名、其形式如:
@
其中 SCOTT 为模式名,EMP 为表名,@符号之后为数据库名.
一个远程查询为一查询,是从一个或多个远程表中选择信息,这些表驻留在
同一个远程结点.
一个分布式查询可从两个或多个结点检索数据.一个分布式更新可修改两个
或两个以上结点的数据.
一个远程事务为一个事务,包含一人或多个远程语句,它所引用的全部是在
mailto:@
同一个远程结点上.一个分布式事务中一个事务,包含一个或多个语句修改分布式
数据库的两个或多个不同结点的数据.
在分布式数据库中,事务控制必须在网络上直辖市,保证数据一致性.两阶段
提交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务
中的语句.
ORACLE 分布式数据库系统结构可由 ORACLE 数据库管理员为终端用户
和应用提供位置透明性,利用视图、同义词、过程可提供 ORACLE 分布式数据库
系统中的位置透明性.
ORACLE 允 许 在 SELECT( 查 询 ) 、 INSERT 、 UPDATE 、 DELETE 、
SELECT…FOR UPDATE 和 LOCK TABLE 语句中引用远程数据。对于查询,包
含有连接、聚合、子查询和 SELECT …FOR UPDATE,可引用本地的、远程
的表和视图。对于 UPDATE、INSERT、DELETE 和 LOCK TABLE 语句可引用
本地的和远程的表。注意在引用 LONG 和 LONG RAW 列、序列、修改表和封
锁表时,必须位于同一个结点。ORACLE 不允许作远程 DDL 语句。
在单场地或分布式数据库中,所有事务都是用 COMMIT 或 ROLLBACK 语
句中止。ORACLE 提供两种机制实现分布式数据库中表重复的透明性:表快照
提供异步的表重复;触发器实现同步的表的重复。在两种情况下,都实现了对表
重复的透明性。
§ 分布式数据库全局名与数据库链
分布式数据库全局名:每一个数据库有一个唯一的全局名,由两部分组成:
数据库名(小于等于 8 字符)和网络域。全局数据库名的网络域成分必须服从标
准互联网规范。域名中的层次 由符号“.”分开,域名的次序由叶至根,从左至右。
数据库链:为对过程数据库定义的一路径。数据库链对分布式数据库的用
户是透明的,数据库链的名字与链所指向的数据库的全局名相同。其由二部分组
成:远程账号和数据库串。例建立数据库链的形式:
CREAT PUBLIC DATEBASE LINK sale。Division3。acme。com
CONNECT TO guest IDENTIFIED BY password
USING‘DB 串’;
其中:sales。Divisin3。acme。com 为定义的链名;guest/password 为远程
数据库的用户账号和口令;DB 串用于远程连接。由账号和 DB 串构成完全路径。
如果只有一个则为部分路径。
有三种数据库链可用于决定用户对全部对象名的引用:
专用数据库链:为一指定用户建立。专用数据库链仅链的主人可使用。在
SQL 语句中用于指定一全局对象名或者在持有者的视图过程定义中使用。
公用数据库链:为特殊的用户组 PUBLIC 建立。公用数据库链可为任何用
户使用,在 SQL 语句中用于指定一个全局对象名或对象定义。
网络数据链:由网络域服务器建立和管理,可为网络中的任何数据库的任
何用户使用,可在 SQL 语句中指定全局对象名或对象定义中使用。注意:当前
网络域服务器对 ORACLE 不能用,所以网络数据库链不可用。
§ 表快照
ORACLE 的表快照特征允许一个主表在分布式数据库的其它结点进行复制。
只允许修改主表,而复制只可读。主表达式每一个复制称为一个快照。快照异步
的刷新,反映主表的一个最近事务一致状态。
一个快照可为表的完全拷贝或者为表的一个子集,由引用一个或多个主表、
视图或其它快照的分布式查询所定义。包含主表的数据库称为主数据库。
快照有简单快照和复杂快照。简单快照的每行是基于单个远程表中的一行。
所以定义简单快照的查询中不能有 GROUB BY 或 CONNECT BY 子句,或子查
询、连接或集合操作。如果在快照定义的查询中包含有上述子句或操作,这种快
照称为复杂快照。
在快照建立时,ORACLE 在快照的模式中建立几种内部对象:
在快照结点,ORACLE 建立一基表用于存储由快照定义的查询所检索的行,
然后为该表建立一个只读的视图,并为远程主表建立一视图,该视图用于新快照。
一个快照周期地被刷新,反映它的主表的当前情况。为了刷新一快照,快
照定义查询是被发出,其查询结果想在存储在快照中,代替以前的快照数据。
当快照为简单快照时,可以由快照日志来刷新,这样可加快刷新处理。快
照日志是在主表数据库中的一表,与主表相关。ORACLE 使用快照日志跟踪主
表中已修改的行。当基于主表的简单快照刷新时,仅需要快照日志的相应行来刷
新快照,这种刷新称为快速刷新。
第 3 章 ORACLE9I 安装和管理
对于一般用户说,ORACLE RDBMS 在 UNIX 上的安装,可以说是一件不太容易对付的
事,主要原因是需要对 UNIX 有一定的了解;此外还需对 ORACLE 的安装的苛刻要求要认
真的阅读,即使是已经在 UINX 作过多次的安装的老手,也不能保证在新的 ORACLE 版本
上做到一次就安装正确。有鉴于此,我愿把在安装 ORACLE 常采用的方法描述如下,以对
国内用户在管理中有一点帮助。
注:ORACLE8I 安装的文档在 file:///E|/DOC/UNIXDOC/
使用 或 NETSCAPE 以上查阅:
Oracle8i Installation Guide
Release 3() for Sun SPARC Solaris
A85471-01
§ 硬件要求
硬件要求是 Oracle 运行环境的最低要求。如果硬件有某一项没有满足 Oracle 发行要求,
可能导致安装失败或使用问题。所以建议最终用户要按照 Oracle 的要求配置足够的硬件环
境。以保证系统的正常安装与运行。
§ 主机要求
Oracle8i 或 Oracle9i 对主机的要求相当高,特别提醒用户的是,在设计方案和购买服务
器时要留有余地,也就是说,不要仅仅按照最低要求进行服务器配置。而且还要考虑到真正
购买 Oracle 数据库时,可能会遇到版本升级等因素而对环境要求更高。下面是 Oracle8I 的
主机的基本要求说明。
内存:至少 128MB,客户端至少 64MB
交换区(Swap space):物理内存的两倍或至少 400MB,建议为 3 倍。
安装 CDROM 设备
确定内存总数:
$ /usr/sbin/prtconf | grep size
确定交换区总数:
$ swap -l
§ 硬盘要求
硬盘是用户安装 Oracle 系统必须的磁介质。它的要求也必须满足才能进行安装。从经
验来看,Oracle 的发行资料所提示的要求仅仅是最低的要求。为了保证 Oracle 系统安装后
能启动和运行,并存放数据文件等。除了必须 Oracle 的硬盘要求外,还必须留有一定的空
间用于存放表空间的数据文件。而且一般操作系统,都不能将硬盘用到 100% 。处于这样
的考虑, 硬盘空间最好是满足 Oracle 的空间要求外,还留有几百 MB 的空间才能启动运行。
下面是不同版本对硬盘的要求说明。
1. ORACLE 8i 企业版(Enterprose Edition)
典型安装: 1160MB
最小安装: 985MB
客户安装: 可达 1355MB
管理器基础部件(Manager Infrastrcture)
Oracle 管理服务器(Oracle Management Server) 395MB
Oracle 因特网目录(Oracle Internet Directory ) 810MB
Oracle 综合服务器(Oracle Integration Server) 930MB
客户端(Custom ) 可达 1245MB
Client
管理员(Administrator ) 435MB
程序员(Programmer ) 320MB
应用用户(Application User ) 230MB
客户(Custom ) 可达 440MB
§ 操作系统要求
操作系统的要求也是 Oracle 系统安装的基本要求,如果你的操作版本较低,则可能需
要许多补丁程序,但如果你的操作系统过低,则一般是不能进行安装。下面是 Oracle8i Release
对于 Solaris 操作系统的版本要求。
操作系统版本: Solaris , Solaris 7 OR Solrise 8
操作系统 Patch:Solaris 需要 patch revision #105181-15
操作系统包: SUNWarc, SUNWbtool, SUNWhea, SUNWlibm, SUNWlibms,
SUNWsprot, SUNWtoo
确定当前操作系统信息:
$ uname -a
确定当前操作系统 patch:
$showrev -p
确定当前操作系统已装的 package:
$ pkginfo -i [package_name]
( 仅给出 -i 列出所有的 package )
§ Oracle 其他产品环境需求
产品 所需 patch 说明
Apatche Server 106980-10
107636-03
107081-11
108376-03
Libthread patch
X Input & Output Method Patch
Motif and :Runtime library patch for
Solaris
Open Windows Xsun Patch
Oracle Parallel Server
,
SUN Enterprise Cluster or
higher
Oracle interMedia,
至少增加 10MB 硬盘空间用于存放 text 数据字典
Oracle Visual Information
Retrieval,
Oracle interMedia,
Oracle Internet
directory,
需要 Oracle8I 企业版并带 UTF8 字符集,用
select value from nls_database_parameters where
parameter=’NLS_CHARACTERSET’; 查询
Oracle message Broker,
设置 NLS_LANG 环境变量一致
§ Oracle 工具与预编译产品环境需求
Oracle 的一些工具的安装也要求具备一定的软件环境。这些软件环境是在购买操作系统
时购买的或免费提供的或第三方提供的。对不同的 Oracle 版本所要求的环境也各不相同。
具体的要求还需咨询硬件厂商。对于预编译产品,用户应该先确定你的环境高级语言是哪家
的产品(因为有的语言不是硬件厂家提供)和具体版的本等。然后再向 Oracle 说明要购买
该高级语言的相应版本的预编译产品。如果不是这样的话,有可能预编译产品不能使用。比
如 SUN SPARC Solaris 的 C/C++语言产品叫 SPARCWork /Workshop C/C++,而且你必须
购买该 C/C++产品,并从厂家获得一个 C/C++语言的序列号,按照该序列号进行 C/C++的安
装。然后在安装 Oracle 的预编译产品。
产品 所需 patch 说明
Java Runtime
Environment
107636-01
106980-05
107607-01
107078-10
X Input & Output Method Patch
Libthread path
Motif fontlist,fontset,libxm
Open Windows Xsun Patch(1)
Oracle data migration
Assistant,
,,
Oracle8I JVM, 参见 CDROM 中的 README
Pro*C/C++, SPARCWork/Workshop C compiler or
higher
Pro*COBOL, Micro Focus COBOL or higher or
SUN Nihongo COBOL
Pro*COBOL,
Pro*FORTRAN, FORTRAN77 or higher
SQL*Module Ada, SUN ADA or higher
关于预编译产品的使用见另外的资料。
§ Oracle 网络及系统管理产品环境需求
Oracle 对网络环境的要求不是必须的,下面给出环境要求仅仅是如果你要安装表中所列
的产品的环境要求。如果你的环境没有相应网络产品,建议你不要安装这些产品。可以在环
境具备后再安装。
产品 所需 patch 说明
Legato Storage Manager,
Version
见 Appendix B
Oracle Advanced
Security
TrustBroker
Biometric
MIT Kerberos Version 5,release
... ...
Oracle Enterprise
Manager
SPARC 20-266MHZ 以上,
Ultra 1-400MHZ 以上
Oracle protocol
Support,
Sun SNA , or higher
Oracle TCP/IP with SSl
Protocol Support,
SSL or higher
§ Oracle8i 安装说明与限制
用 Re-Installing 安装 ORACLE8
当已经安装了一些产品后,还需安装另外的产品时,必须要用 Re-Installing 进行安装。
新的 ORACLE_HOME
当旧版本上安装 ORACLE8I 时,要重新设置另外的 ORACLE_HOME
备份 脚本
当完成 ORACLE8I 的安装后,还想安装另外的产品到当前的 ORACLE_HOME 时,要备份
脚本。因为 ORACLE UNIVERSAL INSTALLER 会自动删除 的内容。如果你需要恢
复原来的 的话,就要对 文件进行恢复。
§ ORACLE 8i Relase 安装前的工作
与 WINDOWS NT/2000 不一样,在 UNIX 环境下安装 Oracle 数据库系统,主要的工作
是配置 UNIX 操作环境。下面是安装前的配置任务的解释,如果你已经熟悉安装的基本步骤,
你可以直接参考§ 节。
§ 以 root 用户设置的任务
可以手工配置环境,包括帐户、组、变量、许可权的设置等。也可以以 root 来运行
来帮助配置环境,但 ORACLE 建议要手工配置为好。
§ 理解 Oracle 的 OFA 结构
Oracle 的 OFA 结构是最佳灵活结构(Optimal Flexible Architecture)的意思。Oracle 的
OFA 结构是为了适应 Oracle 多个产品和多个不同类型文件及不同版本的要求而建议使用的
一种目录结构。安装这样的结构配置你的环境,可以保证在相应的目录能找到资料所提示的
资料和文件。而且可以确保在安装另外产品的时 Oracle 的安装程序自动能找到所需要的文
件。
Oracle 的 OFA 结构一般如下:
目录名 说明
/U[0-9] 用户数据目录
/*/home/* 用户主目录
/*/app/* 用户应用软件目录
/*/app/appmgrr Oracle apps 软件子目录
/*/app/oracle/product Oracle 服务器软件子目录
/*/app/oracle/product/ Oracle 服务器软件 分布文件
/*/app/oracle/admin/sab Sab 数据库管理员子目录
/*/app/oracle/admin/sab/arch/* Sab 数据库归档日志文件
/*/oradata Oracle 数据目录
/*/oradata/sab/* Sab 数据库文件
/*/oradata/sab/*.log Sab 数据库重做日志文件
有关 Oracle 的 OFA 结构,请参考附录 OFA。
§ UNIX 系统配置工作
在 UNIX 操作系统下安装 Oracle 系统之前,需要进行下面的环境配置:
设置操作系统核心参数;
建立安装点(即安装 Oracle 系统的路径);
为 Oracle 角色建立 UNIX 组;
指定 UNIX 组给安装 Oracle 系统的 Oracle 帐户;
建立 UNIX 帐户,该帐户能独立安装 Oracle 产品和升级 Oracle 产品的帐户;
指定文件建立许可 022 给 Oracle 帐户;
设置环境变量;
创建 ORACLE_BASE 基本目录和 ORACLE_HOME 目录。
§ 建立操作系统核心参数
在许多 UNIX 操作系统下安装 Oracle8i/9I 都需要建立操作系统核心参数。这些操作系
统参数必须以 root 登录来创建。比如在 SUN SPARC Solaris 下,操作步骤是:
首先要以 root 登录;
转到 etc 目录下;
在 /etc 目录下编辑 system 文件,在文件尾加下面内容:
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=200
set semsys:seminfo_semmns=310
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
注:这里的 semmsl 和 semmns 要设置大些,不要照抄原版资料的数字。如果该二参数不合
适,则在安装中出错,在 startup 中可能会提示 :"ORA-03113 end_of_file communication
channel"
§ 建立安装点
ORACLE8i 需要至少两个安装点:一是 ORACLE 软件本身;二是数据文件所在位置。
如果将三种文件分别存放的话,则需要 4 个安装点。如:
软件安装在 /u01
数据文件安装在 /u02、/u03、/u04
§ 建立数据库用 UNIX 管理组
在安装前,需要建立下面两个管理 UNIX 组:
.SYSDBA
.SYSOPER
在缺省情况下,ORACLE Universal Installer 将 SYSDBA 和 SYSOPER 权限授给 UNIX 的
DBA 组;如果你在 Custom 下运行 ORACLE8I 的安装或 Orcale 不是 DBA 的一个成员。
ORACLE Universal Installer 将提示你输入组名。
建立组与操作系统有关。安装人员可以查看“Setup Tasks to Perform as the root user”章节。下
面是几个操作系统建立组的方法:
Solaris 操作系统:用 admintool 建立,详细见下面介绍;
AIX 操作系统:用 smit groups 建立;
SCO UnixWarea 操作系统用 scoadmin 建立。
§ 为安装程序清单建立 UNIX 组
在安装过程,安装程序要用到一个叫 oinstall 的 UNIX 组。用 admintool 或 groupadd 建
立一个 oinstall 组,oinstall 组拥有 ORACLE Universal Installer 的 oraInventory 目录。Oracle
用户将作为主要组拥有 oinstall 组。
Solaris 操作系统:用 admintool 建立用户,详细见下面介绍;
AIX 操作系统:用 smit groups 建立;
SCO UnixWarea 操作系统用 scoadmin 建立。
§ 建立 ORACLE 帐户
在建立完组后,接着就是建立 Oracle 产品安装的 unix 帐户。下面是不同操作系统创建
Oracle 帐户的方法:
Solaris 操作系统:用 admintool 建立用户,详细见下面介绍;
AIX 操作系统:用 smit users 建立;
SCO UnixWarea 操作系统用 scoadmin 建立。
在 SUN SPARC Solaris 下用 admintool 或 groupadd 建立一个 oracle 帐户,并允许有下面属
性:
特性 说明
登录名 oracle
主要组(primary GID) Oinstall 组
次要组(second GID) Dba 组
根目录(home directory) 选择与 ORACLE_HOME 不同的目录
登录命令(login Shell) /usr/bin/sh(缺省),/usr/bin/csh,/usr/bin/ksh
§ 为 APACHE 建立帐户
如果 Oracle 软件产品是 Release 以后的版本,则产品中包含有 Apache 的软件。关
于 Apache 软件的介绍另见其它章节。这里 Apache 帐户是一个 UNIX 帐户,在安装后该帐
户拥有 Apache Server 的文件。
用 admintool 或 groupadd 建立一个 apache 帐户,并允许有下面属性:
特性 说明
登录名 apache
主要组(primary GID) Oinstall 组,建议安装后改变
次要组(second GID) Apache 的一个成员
根目录(home directory) 选择与其他用户相同的目录
§ 设置所需环境变量
在 UNIX 环境,Oracle 的通用安装程序要用到以下环境变量:
§ 为 ORACLE 帐户设置许可权
安装程序需要安装 Oracle 的用户具有 umask 022 权限。建议你将 umask 022 写到安装 Oracle
产品的用户的.profile 中,使用得登录完成后,该参数自动有效。
§ 为 ORACLE 帐户设置环境变量
在安装 Oracle 产品前,需要设置一些环境变量。建议你将环境变量加到 Oracle 帐户的.profile
文件中,使用得登录完成后所有变量自动有效。下表是需要设置的环境变量的简单说明:
变量 说明 需要?
DISPLAY 工作站名: YES
PATH $ORACLE_HOME/bin,/usr/bin,/etc,/usr/ccs/bin,/usr/openwin/
bin
YES
ORACLE_BA
SE
Siftware_mount_point/app/oracle. 如/u01/app/oracle NO
ORACLE_HO
ME
$ORACLE_BASE/product/release,
如/u01/app/oracle/product/
NO
NLS_LANG 缺省 US7ASCII,如果装 Oracle Internet directory,则选
NLS_LANG 为 UTF8
NO
ORA_NLS33 $ORACLE_HOME/ocommon/nls/admin/data NO
ORACLE_SID 所希望的数据库名字 NO
ORACLE_DO
C
NO
DISPLAY 变量
在运行安装程序时,需要 DISPLAY 变量。此参数一般为:
$DISPLAY=workstation_name:
$export DISPLAY
PATH 变量
需要指定 shell 的搜索路径。如:
$PATH=$ORACLE_HOME/bin:/usr/bin:/etc:usr/ccs/bin; export PATH
ORACLE_BASE 变量
ORACLE_BASE 变量是安装程序需要的 Oracle 基本变量,它的设置建议按照 OFA 结构进行
处理。它的格式为:
Software_mount_point/app/oracle
比如安装点为 u01,则 ORACLE_BASE 可以设置为 /u01/app/oracle 。
ORACLE_HOME 变量
ORACLE_HOME 变量是安装程序需要的 Oracle 基本变量,它与 ORACLE_BASE 有下面的
关系:
ORACLE_BASE/product/
比如根据上面的 ORACLE_BASE 设置,ORACLE_HOME 可以设置为:
/u01/app/oracle/product/
NLS_LANG 变量
NLS_LANG 变量是可选择的变量,如果不选择此变量,则安装程序按照缺省来设置数据库
的字符集。现在的安装程序的缺省字符集是 US7ASCII,如果安装 Oracle Internet 目录软件,
则字符集缺省为 UTF8 。详细 NLS_LANG 描述请参考 “附录 NLS_LANG”。
ORA_NLS33 变量
这个 ORA_NLS33 变量指定 Oracle 的*.nlb 文件所在的目录路径。这些 *.nlb 定义语言、本
地、字符集及语言学(linguistic)分类排序方法。当 ORACLE_HOME 有多个版本时需要设
置此参数。它的缺省路径为:
$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_SID 变量
这个变量用于在安装中指定数据库实例的名字。如果没有指定这个参数,则在安装过程中一
定回答数据库实例的名字。如果已经设置了这个变量,则安装程序将采用该变量值作为数据
库实例的名字,但是也可以在安装时输入另外的名字。
ORACLE_DOC 变量
这是一个可选择的变量,它指定 Oracle 文档所在目录的名字。
§ 让 ORACLE 帐户环境变量有效
要使 .profile 文件中的变量有效,除了重新登录到 Oracle 帐户外,一个直接的方法就是运
行.profile 文件。命令如下:
$ ../.profile
§ 设置 Oracle 产品任务
在启动安装程序前,如果你的环境不是一般简单环境,比如是并行环境、要求预编译产品等。
则可能需要进行下面的工作(一般的环境安装可以跳过这一节):
安装前 Oracle 选择;
工具和预编译;
网络与系统管理产品。
§ 安装前 ORACLE 选择
1)并行服务器安装前步骤设置
当环境是并行服务器时,要进行下面设置:
要 create raw devices;
因为与并行服务器有关的文件都要以原始设备的形式存放,以便被 Cluster 的所有节点访问。
除日志文件是各个节点自己使用外,控制文件和数据文件都必须被所有实例共享。
建立 ASCII file;
在各个节点上运行安装程序来建立 ASCII 文件,这些 ASCII 文件包含数据库对象和对应的
原始设备文件名。这些文件名被 Oracle 的配置助理在设置并行服务器时使用。
设置 DBCA_RAW_CONFG 变量
设置 DBCA_RAW_CONFG 变量以指向 ASCII 映象文件,使 Oracle 配置助理在查数据库时
能搜寻到该变量,然后读该 ASCII 文件、使用文件名实现建立表空间。
2)以 root 用户运行:
确认在 Cluster 的所有节点上的 /etc/group 文件的各参数的正确性;
在 Cluster 的每个节点建立 UNIX 帐户:
oinstall 组(作主要组)
dba 组(作次要组)
安装 ORACLE 软件的帐户(如 oracle 帐户)
远程目录有写的权限
建立安装点;
从节点上运行 Oracle 安装程序:
设置所有 Cluster 的节点有相同的环境,选择运行 .rhosts 文件或 /etc/ 文件。
退出 root 帐户。
3)以 Oracle 用户运行:
检查所有节点的环境变量一致,检查是否可以进行远程登录。以 Oracle 进行登录,如果系
统提示要口令,则表示 Oracle 帐户在所有的节点上属性名不一样。Oracle 安装程序还不能
用 rpc 拷贝 Oracle 的产品。这样,你还必须检查前面的步骤。
§ 工具和预编译产品
现在的 Oracle 安装程序都借助 Java 环境来运行安装程序,比如需要 JDK 等。不
同的 Oracle 版本要求的 JDK 有所不同。具体操作者再看相应的原版资料。
1)安装前设置 PRO*COBOL 预编译:
如果需要安装 COBOL 语言环境的预编译的话,需要做:
确认 COBOL 预编译的可执行路径 PATH;
确认在 LIBPATH 变量中$COBLIB 的设置;
设置 COBOL 编译的 COBDIR 环境变量。
2)安装前设置 PRO*C/C++预编译:
如果需要安装 C/C++语言环境的预编译的话,要确认 PATH 中包含有 C 编译可执行的路径。
3)安装前设置 PRO*FORTRAN 预编译:
如果需要安装 FORTRAN 语言环境的预编译的话,要确认 PATH 中包含有 FORTRAN 编译
可执行的路径。
4)安装前设置 SQL*Module Ada:
如果需要安装 Ada 语言环境的预编译的话,要确认 PATH 中包含有 Ada 编译可执行的路径
和 OC System Power 预编译器的环境设置。
§ 网络和管理产品
1) 配置 LDAP 服务:
LDAP 轻型目录访问协议(Lightweight Directory Access Protocol)V3 是因特网目录访问协
议的开放标准。而 Oracle8i Release 中可以使用 LDAP V3 进行 Oracle 因特网目录的配
置。如果计划用 LDAP 目录服务来配置 Oracle 产品,则 Oracle 的 LDAP 因特网目录必须先
安装。从性能出发,Oracle 公司建议你分开安装 Oracle 因特网目录( Oracle Internet
Directory=OID)。即与 Oracle 的其它软件分开。
2) 安装 Oracle 因特网目录前步骤:
要安装 Oracle 因特网目录,还需要进行一些附加的工作。比如在你的系统上 已经安装了
Oracle8I ,则需要做:
Oracle8i 服务器正在运行;
连接到内部:$sqlplus internal
检查连接器的状态:$lsnrctl status [listener_name]
如果你的系统没有安装 Oracle 因特网目录,则可以在安装过程中选择 Oracle 因特网目录。
§ ORACLE 8I 安装具体操作
下面给出在 SUN SPARC Solaris 操作系统的安装操作过程,关于其它操作系统的安装仅给
出不同部分的提示。
§ 以 root 建立 oinstall 和 dba 组
首先以 root 帐户进行登录。在 Solaris 操作系统下用 admintool 进入图形界面来建立 oinstall
组和 dba 组。进入该图形界面后,选择“Browse”=》“Groups”;然后选择“Edit”=》“Add”进入增
加新组的信息输入。你可以在该屏幕上输入组名 oinstall,比如输入组号为 101。输入完成后
接着点击“Add”在输入 DBA 组的相应的信息。屏幕的格式参考下图。
注:在 AIX 操作系统下:
创建组用 smit groups 命令进入图形界面进行操作;
创建用户用 smit users 命令进入图形界面进行操作。
§ 建立 ORACLE 帐户
用 admintool 进入图形界面:选择“Browse”=》“Users”;然后选择“Edit”=》“Add”进入增加新用
户的信息输入。你可以在该屏幕上输入用户名 oracle;主要组为 oinstall;次要组为 dba;口
令为 oracle;主要目录(Home directory)为/usr/oracle。输入完成后接着点击“OK”即可。屏幕
的格式如下图:
提示:如果你安装的版本是 Oracle 的话,建议你选择的“主目录”不与所安装的 Oracle
产品的目录相同,否则,有可能安装失败。
§ 授权 ORACLE 帐户
如果希望在 /home/目录下安装 ORACLE RDBMS,则可按照下面进行目录的建立:
#pwd
# home
#mkdir /home/u1
#chown oracle /home/u1
#chgrp dba /home/u1
#chmod 755 /home/u1
用户名 用户号
… …
oas 1002
oracle 1001
用户标识
用户名:oracle
用户号:1001
首要组:oinstall
次要组:dba
口令:正常口令
主目录
路径:/usr/oracle
§ 修改 Oracle 帐户 .profile 文件
#
# @(#) 98/02/06 SMI
#
stty istrip
PATH=/usr/bin:/usr/ucb:/etc:/usr/sbin:/usr/ccs/bin:/opt/NSCPcom:.
export PATH
#
# If possible, start the windows system
#
if [ "`tty`" = "/dev/console" ] ; then
if [ "$TERM" = "sun" -o "$TERM" = "AT386" ] ; then
if [ ${OPENWINHOME:-""} = "" ] ; then
OPENWINHOME=/usr/openwin
export OPENWINHOME
fi
echo ""
echo "Starting OpenWindows in 5 seconds (type Control-C to interrupt)"
sleep 5
echo ""
$OPENWINHOME/bin/openwin
clear # get rid of annoying cursor rectangle
exit # logout after leaving windows system
fi
fi
DISPLAY=:;export DISPLAY
ORACLE_BASE=/export/home/oraware/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/;export ORACLE_HOME
ORACLE_OWNER=oracle; export ORACLE_OWNER
ORACLE_TERM=xsun; export ORACLE_TERM
ORACLE_SID=s450; export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_BASE/product/ export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/assistants/jlib:$ORACLE_HOME/ass
istants/dbca/jlib:$ORACLE_HOME/assistants/dbma/jlib:$ORACLE_HOME/network/jlib:$ORA
CLE_HOME/rdbms/jlib:$ORACLE_HOME/wmt/jlib:$ORACLE_HOME/ord/ts/jlib:$ORACLE_
HOME/ord/jlib;export CLASSPATH
TNS_ADMIN=$ORACLE_BASE/product/ export TNS_ADMIN
PATH=$ORACLE_BASE/product/ export PATH
umask 022
注意:不要将 ORACLE8I 的 ORACLE_HOME 变量设置与任何已存在的以前的
ORACLE_HOME 相同,比如不要与已存在的 ,, 等相同。
§ 建立 ORACLE 结构目录
#exit
$
$cd /home/u1
$pwd
$ /home/u1
$mkdir app
$cd app
$mkdir oracle
$cd oracle
$mkdir product
$cd product
$mkdir
§ UNIX 操作系统环境设置
在 UNIX 上安装 ORACLE8i,一般都需要设置 UNIX 上的信号量等参数。具体操作步骤如
下:
注:
在 AIX 操作下,不需要设置这样的核心参数;
在 SCO Unixware 操作下,设置核心参数是在/etc/conf/ 目录的 stune 文件中进行设置。
在 SUN SPARC Solaris 操作系统下,设置核心参数步骤如下:
1. 以 root 帐户登录;
2. cd /etc
3. 编辑 system 文件,在该文件后加如下设置:
*ident "@(#)system 97/06/27 SMI" /* SVR4 */
*
* SYSTEM SPECIFICATION FILE
*
* moddir:
*
* Set the search path for modules. This has a format similar to the
* csh path variable. If the module isn't found in the first directory
* it tries the second and so on. The default is /kernel /usr/kernel
*
* Example:
* moddir: /kernel /usr/kernel /other/modules
* root device and root filesystem configuration:
*
* The following may be used to override the defaults provided by
* the boot program:
*
* rootfs: Set the filesystem type of the root.
*
* rootdev: Set the root device. This should be a fully
* expanded physical pathname. The default is the
* physical pathname of the device where the boot
* program resides. The physical pathname is
* highly platform and configuration dependent.
*
* Example:
* rootfs:ufs
* rootdev:/sbus@1,f8000000/esp@0,800000/sd@3,0:a
*
* (Swap device configuration should be specified in /etc/vfstab.)
* exclude:
*
* Modules appearing in the moddir path which are NOT to be loaded,
* even if referenced. Note that `exclude' accepts either a module name,
* or a filename which includes the directory.
*
* Examples:
* exclude: win
* exclude: sys/shmsys
* forceload:
*
* Cause these modules to be loaded at boot time, (just before mounting
* the root filesystem) rather than at first reference. Note that
* forceload expects a filename which includes the directory. Also
* note that loading a module does not necessarily imply that it will
* be installed.
*
* Example:
* forceload: drv/foo
* set:
*
* Set an integer variable in the kernel or a module to a new value.
* This facility should be used with caution. See system(4).
*
* Examples:
*
* To set variables in 'unix':
*
* set nautopush=32
* set maxusers=40
*
* To set a variable named 'debug' in the module named 'test_module'
*
* set test_module:debug = 0x13
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=250
set semsys:seminfo_semmns=610
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
4. 当重新启动后,要验证参数的有效性
在 Solaris UNIX 中,用 sysdef 命令可显示当前的系统参数,如:
#sysdef [enter]
. . . . . .
*
*IPC Semaphores
*
10 entries in semphore map(SEMMAP)
10 semphore identifier (SEMMNI)
610 semphore in system (SEMMNS)
30 undo structures in system (SEMMNU)
250 max semphore perid (SEMMSL)
10 max operations per semop call (SEMOPM)
10 max undo entires per process (SEMUME)
32767 semaphore maximum value (SEMUMX)
16384 adjust on exit max value (SEMAEM)
说明:
SHMMAX=The maximum size (in bytes) of a single shared memory segment.
一个共享内存段的最大字节数,这里仅是一个最大值(上界)而已。
SHMMIN=The minmum size (in bytes) of a single shared memory segment.
一个共享内存段的最小字节数。
SHMMNI= The number of shared memory identifiers.
一个共享内存段的最大数目
SHMSEG=The maxmum number of shared memory segment that can be attached
by a process. 进程能连接的段的最大数目。
SEMMNS=The number of segments in the system.
系统信号数的最大值。
SEMMNI=The number of segment set identifiers in the
determines the number of semaphore sets that can be created
at any one time.
系统信号的最大设置数。
SEMMSL=The maximum number of semaphores that can be in one semaphore
set. Should be equal to the maximum number of ORACLE processes.
一个信号组中最大的信号数,注意,这里的值如果要设置则必须比
文件中的 processes, 如 processes =120,则
SEMMSL=150.
注意:
SHMMAX 仅是在 UNIX 中设置的共享内存最大字节数(即最高上限),在实际中
ORACLE 是根据 文件的 DB_BLOCK_SIZE,DB_BLOCK_BUFFERS
SHARED_POOL_SIZE 以及 LOG_BUFFERS 参数来决定。
下面二变量不要照抄安装手册给出数字,要根据其说明设置大一些,如:
set semsys:seminfo_semmsl=250
set semsys:seminfo_semmns=610
§ 重新启动操作系统
为了使所设置的操作系统的核心参数有效,就必须重新启动 UNIX 操作系统,这样还可使
ORACLE 帐户的相应变量有效。
$su root
password:root
#
# reboot
(等待数分钟)
§ 检查环境变量有效性
当重新启动操作系统并以 Oracle 帐户登录后,建议要检查环境变量是否有效。办法是:以
oracle 登录,用 set 命令检查以下环境变量有效性:
$set
(应出现)
DISPLAY=:
ORACLE_BASE=/export/home/oraware/app/oracle
ORACLE_HOME=/export/home/oraware/app/oracle/product/
ORACLE_TERM=xsun
ORACLE_SID=s450
. . . . . .
§ 安装 ORACLE 8I
如果所需要的环境变量已经有效,则可安装 ORACLE8i,安装操作步骤如下:
§ 启动 ORACLE UNIVERSAL INSTALLER
1. 以 oracle 帐户登录。
2. 到 CD-ROM 光盘的安装目录下:
$cd /cdrom
$cd oracle8i
提示:不要从插入光盘后的自动启动窗口来安装 Oracle 产品。建议你先关闭掉该窗口,然
后用下面的方法来启动安装程序。如果你从光盘自动启动窗口来安装,则可遇到不能弹出光
盘的麻烦。
3. 使用下面命令启动安装程序:
$ ./runInstaller
提示:安装运行程序的的正确拼写是 runInstaller。(中间的 I 是大写)。
4. 在 WELCOME 窗口
上点击[Next]
当出现 Welcome 窗口
后,之间点击“下一步
(Netx)”进入下一屏
幕。
5. 输入 安装 ORACLE
产品的目录路径:
该路径不能与任何已
经安装的 Oracle 产品
路径相同。如下图:
6. 点击[Next]
当输入合适的路径时并点击“NEXT”时,系统提示“正在装载产品信息。。。”的百分比。
7. 点击[Next]
如果 /var/opt/oracle 不存在或 Oracle 帐户无写的权限,则安装程序打开一个窗口并提示你以
另外一个窗口并以 root 帐户去运行/tmp/OraInstall/ 脚本。完成后再转到本窗口
来点击[Retry]一继续安装。
8.有效的产品出现在窗口上,点击[Next]以选择产品:
如果选择。。。
将看到:
Oracle 8I Enterprise edition
"Installing Oracle8I Enterprise Edition".
Oracle8I Client
"Installing Oracle8I Client".
Oracle8I Management and Integration
"Installing Oracle8I Management and Integration".
9.如果选择了 Oracle8I Enterprise Edition 产品后,安装程序提示:
如果选择。。。
将看到。。。
Typical
"Oracle8I Enterprise Typical Installation".
Minimal
"Oracle8I Enterprise Minimal Installation".
Custom
"Oracle8I Enterprise Custom Installation".
§ 企业版中的典型安装
1.如果在 UNIX 中,Oracle 帐户不是 dba 的成员,则提示你输入 UNIX 组名。
2.点击[Next]
3.如果 Oracle 安装程序测到以前的 Oracle 产品,则提示是否升级。
如果选择升级则转到第 8 步。
4.点击[Next]
5.输入全局数据库名字和 Oracle 系统标识 SID(System Identifier):
6.点击[Next]
点击[Next]到数据库文件的定位。
7.输入数据库文件路径
可以输入数据库文件所希望安装的路径,也可以用“Browse”来导航到相应的目录。
8.点击[Next]
9.浏览下是否有足够的空间,然后点击“Install”。
10.安装窗口出现,运行
当安装程序提示运行 脚本时,一定要在另外一个窗口以 root 帐户来运行该 ,
然后在到本窗口来,这里与以前的版本不一样。运行时应该提示如下信息:
# sh ./
Running Oracle8 script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /export/home/oraware/app/oracle/product/
ORACLE_SID= s450
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Entry will be added to the /var/opt/oracle/oratab file by
Database Configuration Assistant when a database is created
Finished running generic part of script.
Now product-specific root actions will be performed.
IMPORTANT NOTE: Please delete any log and trace files previously
created by the Oracle Enterprise Manager Intelligent
Agent. These files may be found in the directories
you use for storing other Net8 log and trace files.
If such files exist, the OEM IA may not restart.
#
11.配置工具助手窗口
配置工具助手可帮助你配置数据库和网络环境。
配置工具助手 启动 完成。。。
Net8 Configuration
Assistant
所有情况 自动配置服务器 network.
Apache Web Server
Configuration Assistant
所有情况 启动端口 7777 上监听器
Oracle Database
Configuration Assistant
如果不选择升级 自动建立数据库
Oracle Database
Migration Assistant
如果选择升级或移植 升级或移植到 Oracle8I()
12.点击[Exit]退出安装。
§ 企业版中的中最小安装
1.如果在 UNIX 中,Oracle 帐户不是 dba 的成员,则提示你输入 UNIX 组名。
2.点击[Next]
3.如果 Oracle 安装程序测到以前的 Oracle 产品,则提示是否升级。
如果选择升级则转到第 8 步。
4.点击[Next]
5.选择[Yes]安装 Oracle8I 数据库,选择[No]安装所有产品,但不建立数据库,只能在安装
完后手工运行脚本来建立数据库。
6.输入全局数据库名字和 Oracle 系统标识 SID(System Identifier)。
注意,全局数据库名字要求为字母数字串,字符数在 8 个字符以内。
7.点击[Next]
点击[Next]到数据库文件的定位。
8.输入数据库文件路径
可以输入数据库文件所希望安装的路径,也可以用“Browse”来导航到相应的目录。
9.点击[Next]
10.浏览下是否有足够的空间,然后点击“Install”。
11.安装窗口出现,运行
当安装程序提示运行 脚本时,一定要在另外一个窗口以 root 帐户来运行该 ,
然后在到本窗口来,这里与以前的版本不一样。
# cd $ORACLE_HOME
# ./
12.配置工具助手窗口
配置工具助手可帮助你配置数据库和网络环境。
配置工具助手 启动 完成。。。
Net8 Configuration
Assistant
如果选择网络所需的产品 自动配置服务器 network.
Apache Web Server
Configuration Assistant
如 果 选 择 Oracle 的 HTTP
Server
启动端口 7777 上监听器
Oracle Database
Configuration Assistant
如果不选择升级 自动建立数据库
Oracle Database
Migration Assistant
如果选择升级或移植 升级或移植到 Oracle8I()
13.点击[Exit]退出安装。
§ 企业版的自定义安装
1.选择所希望的产品,点击[Next]。
2.出现产品的 SUMMARY
如果有足够的空间,则点击“Install”进行安装。
3.安装窗口出现,运行
当安装程序提示运行 脚本时,一定要在另外一个窗口以 root 帐户来运行该 ,
然后在到本窗口来,这里与以前的版本不一样。
# cd $ORACLE_HOME
# ./
4.配置工具助手窗口
配置工具助手可帮助你配置数据库和网络环境。
配置工具助手 启动 完成。。。
Net8 Configuration 如果选择网络所需的产品 自动配置服务器 network.
Assistant
Apache Web Server
Configuration Assistant
如 果 选 择 Oracle 的 HTTP
Server
启动端口 7777 上监听器
Oracle Database
Configuration Assistant
如果不选择升级 自动建立数据库
Oracle Database
Migration Assistant
如果选择升级或移植 升级或移植到 Oracle8I()
Oracle Enterprise
Manager Configuration
Assistant
如果选择 Manager server 可以配置 Oracle Enterprise
Manager
5.点击[Exit]退出安装。
注意:字符集 : 点击屏幕上方的“change charact...” ,然后选择你希望的字符集,如选择
ZHS16CGB231280。
建议:一般情况下,建议不要选择特殊的字符集,采用缺省字符集即可。
注意:不要 .profile 中加 NLS_LANG=SIMPLIFIED_CHINESE 这样的设置,要设置应设置
成 :
NLS_LANG=; export NLS_LANG
当安装正常,并且已经完成 Oracle rdbms 的安装后,再安装 Oracle8i ORACLE Enterprise
Manager 时提示下面信息:
。。。 。。。
修改配置参数
用户名:dbsvr
口令:dbsvr
确认口令:dbsvr
服务:(空)
提示:如果你的 Net8 不是为 Oracle 主目录配置的,可以使用以下形式指定该服务:
<主机>:<端口>:<SID> 。 如 orange:1521:orcl
§ 安装结果验证
当安装工作完成后,最好对安装日志进行检查。看在安装过程中是否存在错误。如果存
在错误,则根据错误的严重情况进行相应的处理。如果安装没有问题,则可以按照下面的步
骤对 Oracle 的安装情况进行检查。
a. 用 svrmgrl 启动和关闭 Oracle 系统:
可以在命令方式下用 svrmgrl 来启动 Oracle 系统,操作步骤是:
在$ORACLE_HOME/bin 目录启动:
$svrmgrl
SVRMGR>connect internal
Connected.
SVRMGR>startup
ORACLE Instance Started.
Total system Global Area 59057520 bytes
Fixed Size 70924 bytes
Variable Size 42131456 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
Database Mounted.
Database Opened.
如果能看到 “DATABASE OPEN.”类似的提示,则表示安装成功。如果遇到错误,就要根据
错误的情况进行检查。比如提示 ORA-03114 ,则可能是操作系统的核心参数还未生效。
b.用 lsnrctl start 验证监听进程:
可以 用 lsnrctl start 启动 NET8 的监听进程。如果能启动成功,则考虑下面步骤的验证。否
则要根据错误提示对 和 文件进行设置。设置请用 NETASST 图形界
面进行设置。这样可以保证少出错。
c. 用 sqlplus system/manager@sid1 登录到数据库系统
如果监听进程启动正确,则可以用 sqlplus system/manager@sid1 进行登录。
§ 安装后的工作
当安装完 ORACLE 数据库系统并且检查没有错误后,建议还需要做下面的相应工作:
§ Oracle 用户口令的修改
如果你 Oracle 数据库系统是用来存放实际数据的话,为了保证系统的安全,建议在完成安
装后,对 Oracle 的两个特权帐户的口令进行修改。
Sqlplus username/password
SQL>alter user username identified by password;
§ 建立附加的 UNIX 帐号
如有必要,可建立附加的 UNIX 帐号;如果建立了另外的 UNIX 帐户,而且希望该用户也
能使用 Oracle 系统的话,简单的办法是将 Oracle 目录下的.profile 文件拷贝到该用户的缺省
目录下替换该用户的.profile,然后再登录到该用户即可使用 Oracle 。
§ 核实数据文件的安全性
为了保证 Oracle 所有的文件的安全性,建议核实数据文件的安全性。如:
SQL> select username from dba_users;
可以删掉不需要的 ORACLE 帐户。最主要的工作是保证 ORACLE 目录下的各文件的安全
性,具体如下:
目录/文件 允许 说明
数据文件,控制文件及日志文件
(.dbf,.ctl,.log)
640
rw-r----
只允许 ORACLE 帐户只读
$ORACLE_HOME 751
rwxr-x--x
ORACLE 帐户可写,其他帐户可执行
Oracle 可执行程序及网络可执行
程序:
cmctl,cmadmin,cmgw,names,names
ctl,tnsping,osslogin,trcroute,trcasst,
onrsd,oemevnt,oratclsh,dbsnmp,lsnr
ctl,tnslsnr
6751
rws-r-s--x
Oracle 和 DBA 可以执行
所有其它可执行程序 751
rwxr-x--x
Oracle 必须是可写,其他用户可执行
$ORACLE_HOME/lib/ 755
rwxr-xr-x
该目录可读可写,所有用户可执行
$ORACLE_HOME/lib/目录下的所
有文件
644
rw-r—r--
Oracle 可读可写,其他用户可读
$ORACLE_HOME/rdbms/log 751
rwxr-x--x
Oracle 和 DBA 限制访问 log 文件
产品及其子目录,如
$ORACLE_HOME/sqlplus,
$ORACLE_HOME/rdbms
751
rwxr-x--x
Oracle 和 DBA 限制访问 log 文件
在$ORACLE_HOME/sqlplus,
$ORACLE_HOME/rdbms 目 录 下
的文件
644
rw-r—r--
Oracle 可读可写;其他用户只读
$ORACLE_HOME/network/trace 777 或 730
rwxrwxrwx 或
rwx-wx---
在$ORACLE_HOME/rdbms/admin
和
$ORACLE_HOME/sqlplus/admin
644
-rw-r—r--
SQL 脚本可以 SYS 用户来运行
§ 数据库的自动与关闭的设置
自动启动是可选的,但自动关闭建议要进行设置。要完成自动启动和自动关闭的设置有如下
步骤:
1) 编辑 /var/opt/oracle/oratab 文件:
ORACLE_SID:ORACLE_HOMEL:{Y|N}
如:
ccpitdb:/home/u1/app/oracle/product/:Y
修改为 Y ,“Y”表示需要自动启动与自动关闭。
2)在 /etc/ 目录下建立文件 dbora, 如果该文件不存在的话,并在该文件后加:
#!/bin/sh
#Set ORACLE_HOME to be equivalent to the ORACLE_HOME
# from which you wish to execute dbstart and dbshut
#
ORA_HOME=/u1/app/oracle/product/
ORA_OWNER=oracle
If[ ! -f $ORA_HOME/bin/dbstart ]
Then
Echo "Oracle startup: cannot start "
Exit
Fi
Case "$1" in
'start ' )
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart &
;;
'stop')
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut &
;;
esac
3) 连接 dbora 到:
#ls -s /etc/ /etc/
#ls -s /etc/ /etc/
§ 为 ORACLE 帐户配置 .profile 文件
1.设置环境变量
本节介绍在安装完成后,在 Oracle 帐户的.profile 文件中设置变量的方法:
环境变量 缺省设置
LD_LIBRARY_PATH ( 或
LIBPATH)
$ORACLE_HOME/lib
ORACLE_BASE Software_point/app/oracle
ORACLE_HOME $OARCLE_BASE/product/
ORACLE_SID Sid1
PATH $ORACLE_HOME/bin
CLASSPATH JRE_location,$ORACLE_HOME/jlib,
$ORACLE_HOME/product/jlib
TNS_ADMIN 设置 NET8 配置文件的路径。如果 NET8 配置文件不在缺
省的路径下才有必要设置。
TWO_TASK 设置此参数可使客户以缺省连接到一个服务器。
以上的各个变量中,LIBPATH、ORACLE_BASE、ORACLE_HOME、ORACLE_SID 与安
装前的设置一样,用户只要在 Oracle RDBMS 安装完成后检查一下以上的变量即可。下面是
另外变量的设置说明:
CLASSPATH 变量
CLASSPATH 用于设置 JAVA 功能。一般来说,此变量必须包括下面 JRE 位置:
$ORACLE_HOME/JRE/lib/:$ORACLE_HOME/jlib/<product jar file>:$ORACLE_HOME/
product/jlib/<product jar file>
TNS_ADMIN 变量
如果 NET8 的 文件不在缺省路径下时需要设置这个参数。
TWO_TASK 变量
如果需要进行客户/服务器配置,就需要设置 TWO_TASK 以提示客户以缺省连接的的服务
名。
一般安装时设置了 two_task 变量,如果你在服务器端设置了 client/server 配置,则应
在 client 端的 中设置 Two_task 变量以指向服务器.
操作系统交换区要求
UNIX 操作系统:应该是物理内存的 2 倍,在磁盘划分时就应该设置好。
WINDOWS NT 操作系统:可设为物理内存的 2 倍。可以在安装后设置,步骤为:
1)点击“开始”==》“设置”==》“控制面板”==》“系统”==》“性能”==》“更改”,然后进
行设置即可。
在 UNIX 下安装要考虑的相关文件有:
defaultrouter
这些文件的内容要确保正确才行。
2.设置初始化参数文件
安装工作完成后,为了性能的改善,建议你对初始化参数进行初步的设置。这里的初步是指
不 进 行 详 细 的 分 析 和 规 划 的 简 单 设 置 。 初 始 化 参 数 文 件 一 般 存 放 在
$ORACLE_HOME/admin/sid/pfile 目录下。比如修改回滚段参数为:
将
#rollback segments = ( r01,r02,r03,r04)
改为
rollback segments = ( r01, r02, r03, r04 )
§ ORACLE 产品的后来安装
Oracle 的产品都是积木式的模块,可以根据需要选择其中的部分产品进行安装。有的产品可
以在安装完 RDBMS 后再补充安装。下面介绍的是“post_Installation for Oracle Products”的内
容。
* Multi_Threaded Server
* Net8
* Oracle Configuration Assistants
* Oracle Enterprise Manager
* Oracle Internet Directory
* Oracle Options
* Oracle parallel Server Management
* Oracle Precompilers
* Oracle Supported protocols
* Recovery Manager
1. Multi_Threaded Server
如 果 要 配 置 Multi-Threaded Server , 则 需 要 在 文 件 中 设 置 更 高 的
SHARED_POOL_SIZE 参数。一般每个预期的用户(anticipated concurrent user)需要加
1KB。见《Oracle8i designing and Tuning for Performance》中的 Multi-Threaded Server。
2. Net8
用下面方法确认和完成初始配置:
1) 以 root 登录并为 NET8 监听器预留(reserve)一个端口号,即在/etc/services 文件中输入:
listener_name 1521/tcp #NET8 Listener
2) 检查监听器的状态:
$ lsnrctl status [listener_name]
如果 Listener 没有运行,则用
$lsnrctl start listener_name
3)安装和配置客户端,如果必要可用 SQL*PLUS 连接到服务器进行测试,如:
sqlplus username/password@net_service_name
3. Oracle Configuration Assistants
Oracle Configuration Assistants 配置助理包括:
§ 浏览安装的数据库内容
§ 系统缺省的 ORACLE 用户名和口令
用户名 口令 说明 参见
CTXSYS CTXSYS CTXSYS 是 interMedia Text 的用户,
具有 connect,resource,dba 权限
Oracle8i interMedia
Text Reference
DBSNMP DBSNMP DBSNMP 包 括 CONNECT,RESOURCEHE
SNMPAGENT 数据库角色。运行 脚本可
删除这个角色和该用户。
Oracle intelligent
agent user’s guide
INTERNA
L
ORACLE INTERNAL 用于执行数据库管理任务。包括启动、
关闭。注 1:INTERNAL 不是真正的用户名,它是
SYS 用户名和 SYSDBA 权限的一个别名。注 2:当
没有安装 Oracle8I 数据库时该用户需要口令,否则
不需要口令。
Oracle8I
Administrator’s
Guide
MDSYS MDSYS MDSYS 是 Oracle 的 空 间 数 据 ( spatial ) 和 媒 介
(interMedia)、音频(audio)、视频(Vidio)及图象
的管理员用户名。
Oracle Spatial User’s
Guide and Reference
Oracle8i interMedia
Locator User’s Guide
and Reference
MTSSYS MTSSYS MTSSYS 是在 Oracle 的 MTS 下的用户名 Using Microsoft
Transaction Server
With Oracle8
ORDPLUG
INS
ORDPLUGI
NS
ORDPLUGINS 是 Oracle InterMedia 和 Video 的用户
名。它有 CONNECT 和 RESOURCE 角色。
Oracle8I interMedia
Audio, Image, and
Video User’s Guide
and Reference
ORDSYS ORDSYS ORDSYS 是 Oracle InterMedia Audio Video Locator
和 Image 的用户名。它有 CONNECT 和 RESOURCE
角色。
Oracle8i Time Series
User’s
Guide
Oracle8i Visual
Information Retrieval
User’s Guide and
Reference
Oracle8i interMedia
Audio,
Image, and Video
User’s
Guide and Reference
OUTLN OUTLN OUTLN 拥有 CONNECT 和 RESOURCE 角色并支
持计划稳定性。计划稳定性是 Oracle 的新功能。用
于优化。
Oracle Concepts 和
Oracle8I Designing
and Tuning for
performance
SYS CHANGE_O
N_INSTALL
SYS 用于执行数据库管理任务。它包括下列角色:
AQ_ADMINISTRATOR_ROLE
AQ_USER_ROLE ,CONNECT
CTXAPP ,DBA, DELETE_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
EXP_FULL_DATABASE
HS_ADMIN_ROLE , IMP_FULL_DATABASE
JAVA_ADMIN ,JAVADEBUGPRIV
JAVAIDPRIV, JAVAUSERPRIV
OEM_MONITOR
RECOVERY_CATALOG_OWNER
RESOURCE ,SELECT_CATALOG_ROLE
SNMPAGENT ,TIMESERIES_DBA
TIMESERIES_DEVELOPER
Oracle8I
Administrator’sGui
de
SYSTEM MANAGER SYS 用于执行数据库管理任务。它包括下列角色:
AQ_ADMINISTRATOR_ROLE 和 DBA 角色。
Oracle8i
Administrator’s Guide
SCOTT TIGER SCOTT 用户包括 CONNECT 和 RESOURCE 数据库
角色。
Oracle8i
Administrator’s Guide
§ ORACLE 数据库标识
数据库标识是全局名称来进行标识,它包括两部分:数据库名部分 和 网络域名(Domain)
部分。可以在安装时输入两部分名字。格式如:
_domin
例如:
这里的 sales 是数据库名字。数据库名字一般不许超过 8 个字母数字字符。数据库名字在
参数文件的 DB_NAME 中指定。
是网络网络域名。它与数据库名字构成数据库的唯一名字。域名一般不能超
过 128 个字符。这些字符可以是字母、数字和点(.)和一写附加的字符。域名要在
参数文件中 DB_DOMIN 参数来指定。
现在是:
DB_NAME 是 sales;
DB_DOMAIN 是 ;
在 文件中的数据库全局名为 SERVICE_NAME 为 。
§ 表空间及数据文件
Oracle8i 的数据库内分成较小的部分就是表空间。每个表空间对应一个或 多个物理数据文
件。数据文件包含逻辑数据库结构的内容,比如表、索引等。
数据文件一般存放在$OARCLE_HOME/oradata/<db_name>目录下。
§ 初始化参数文件
初始化参数文件 一般安装完成后建立在$ORACLE_HOME/admin/<db_name>目录
下。用户可以在经过认真规划和分析对初始化参数文件的各个参数进行设置。详细的参数解
释见《Oracle8I 高级数据库管理》一书。
§ 日志文件
开始数据库包含 3 个日志文件。它们建立在:
$ORACLE_HOME/oradata/<db_name>
目录下。它们的缺省名字为:
、 和 。
§ 控制文件
在数据库安装完成后,安装程序建立了 3 个控制文件。它们建立在:
$ORACLE_HOME/oradata/<db_name>
目录下。它们的缺省名字为:
、 和 。
§ 回滚段
Oracle 的回滚段用来存放被修改的数据,用于可能的恢复之用。开始时,数据库系统仅包含
下面几个回滚段。
SYSTEM 回滚段,存放在 SYSTEM 表空间里,由 SYS 使用
RB_TEMP 回滚滚,存放在 SYSTEM 表空间,由 SYS 使用
RB01 至 RB16 回滚段,存放在 RBS 表空间,由 PUBLIC 使用。
§ 升级或移植 ORACLE 应用系统方案建议
1、 以各分系统分别进行完全备份,建议不要以整个系统进行全系统备份,这样在导入(IMP)
时会方便得多。
2、 建议将触发器,过程以及视图进行文件化备份,即将它们导出变为 txt 文件,方法如下:
Select Decode (Line,1,'CREATE OR REPLACE ' ||TEXT,TEXT)
From user_source order by Name,Type,Line;
这样,可以在升级时重新改过程内容。
3、 安装 oracle8 时,建议正常安装,不要采用升级安装。
4、 在 oracle8 建立类似 orade7 的 oracle 帐户,重新规划表空间。
5、 逐个分系统进行恢复表、索引等。
6、 重新编译应用,如果必要,可重新编写过程或视图等。
7、 优化新系统,包括部分表可以作为簇重新构造等。
8、 优化应用。
9、 建立新的分系统(见建立新分系统建议方案)
§ ORACLE8I 的重新安装问题
在实际工作中,有可能进行多次 ORACLE 的安装,但一般是当有第一次的安装删除再安装
就有可能总是出现安装失败。下面给出在 UNIX 和 WINDOWS NT 的多次安装的处理方法:
§ UNIX 环境的重新安装
在 UNIX 环境,如果需要对 ORACLE 系统进行安装,则需做如下工作:
1) 用 UNIX 的 ORACLE 帐户关闭所有 Oracle 进程;
svrmgrl [Enter]
SVRMGR>connect internal
SVRMGR>SHUTDOWN IMMEDITE;
SVRMGR>exit
2) 用 UNIX 的 root 帐户登录,删除 ORACLE 目录下的所有文件,如:
$cd /u01/oracle
rm -R *
3) 删除旧的 ORACLE_SID
每次安装成功后,ORACLE_SID 的名字被写到 /var/opt/oracle/oratab 文件中,要想重
复用原来的名字安装,应编辑该 oratab 文件,并把 相应的名字删掉。然后再安装。(虽然
将 ORACLE_HOME 中的文件都删掉,但在安装时仍出现 "此 sid 已经被使用" )。
4)启动 runInstall 安装程序
选择“Deindtall” 将各个产品进行 remove 完成后,再进行新的安装。
§ WINDOWS NT 环境的重新安装
在 NT 环境,要想重新安装 ORACLE8I,则必须做如下工作:
1. 停止所有 ORACLE 进程的运行;
1) 点击:开始=》设置=》控制面板=》服务;
2) 停止所有 ORACLE 的服务项;
3) 置所有“自动”ORACLE 的服务项为“手工”;
4) 重新起动机器。
2.用资源管理器删除 ORACLE 目录及所有文件;
3.用 regedit 清除注册表中的所有 ORACLE 项;
1) 点击:开始=》运行=》输入 regedit;
2) 点击“HEY_LOCAL_MACHINE”左边的“+”以展开目录;
3) 点击“SOFTWARE”左边的“+”以展开目录;
4) 删除“ORACLE”项;
5) 点击“SYSTEM”左边的“+”以展开目录;
6) 点击“CurrentControlSet”左边的“+”以展开目录;
7) 点击“Services”左边的“+”以展开目录;
8) 用上下滚动条查看 Oracle 的各项,并删除各项(光标在当前项,按 Del 键再按确定);
9) 完成以上操作后,重新起动机器;
10) 开始进行基于 NT 的 ORACLE8I 的安装。
§ ORACLE9I 的启动与关闭
§ 连接到一个特权用户
§ 口令文件验证
§ 启动一个数据库
§ 关闭一个数据库
§ 阅读警告文件
第 4 章 创建数据库和数据字典配置数据库
好房子要有好地基。这个道理在数据库领域中也成立。创建数据库类似于打地基。在创建
和配置数据库中所做的某些选择对提高数据库的功能特性具有长远的影响。有几种创建数据
库的方法,而配置数据库的方法更多。DBA 需要了解可用的选项,并根据环境作出恰当的
决策。本章考察创建和配置数据库的几种不同方法(本章中假定已安装了Oracle 软件。关
于Oracle 的安装)。包括下列的技巧和技术:
• 怎样进行数据库创建规划。
• 怎样知道必须提什么样的问题。
• 怎样确定恰当的数据块尺寸。
• 怎样建立参数文件。
• 怎样配置数据字典存储参数,以及为什么在创建数据库前必须配置数据字典存储参数。
• 选择C R E ATE DATABASE 命令选项的技巧。
• 怎样利用Oracle Installer 创建一个数据库。
• 怎样利用已有数据库克隆一个数据库。
• 怎样用定制脚本创建一个数据库。
• 怎样利用Oracle8i Database Configuration Assistant 创建一个数据库。
• 数据库文件的命名约定。
• 如何设计数据库的物理布局。
• 如何设计便于恢复的文件布局。
• 如何设计改进性能的文件布局。
• 如何设计灵活性最好的文件布局。
• 如何配置符合O FA (Optimal Flexible Architecfure, 最佳灵活结构)的文件系统。
§ 数据库创建规划
好的数据库需要好的规划。它们的设计要与用途相配。本节给出开始创建数据库前的一些
重要规划考虑。
§ 规划以及提出正确的问题
创建高性能的数据库需要站在DBA 的立场上进行仔细的思考和规划,规划与提出正确的问
题是密不可分的。不能提出正确的问题,就不能作出好的规划。提出问题通常比回答问题更
为重要。一般不存在精确的答案。即使你不能准确地回答所有问题,但提出问题和考虑问题
的行为也会在规划和作出决定的过程中涉及到更多需要考虑的因素。下表列出了一些应该提
出的问题以及相关的决定。
问题相关的决定打算怎样使用数据库?主要用于联机事务数据块尺寸处理还是主要与用户
加载的联机分析处理一初始化参数作为数据仓库/数据集市使用?临时表空间
回退段此数据库是用作实际的数据库还是用于测初始化参数
测试或开发活动?尺寸因素
数据文件布局
备份计划
将支持多少并发用户?并发事务处理数目初始化参数
可能是多少?回退段配置
此数据库的可能增长速率?哪个表增长得段尺寸调整
最快?数据文件大小调整与配置
要建立多少表与索引?数据库中将包含多数据字典大小调整参数
少存储程序包、存储过程和触发器?
数据库的运行需求是什么?它是否需要支运行配置
持2 4 x 7 ?归档日志方式
归档日志位置
联机重做日志的大小与数量
有什么样的性能要求?什么样的因素最可与性能有关的初始化参数
能成为性能瓶颈?操作系统文件或原始文件
数据文件布局
此数据库是新的还是可以从其他数据库克创建数据库所用的方法
隆?
提出和思考这些问题以及其他的问题对帮助设计和建立更适合完成指定任务所需的数据库
很有好处。在创建数据库的过程中,需要作出几个关键决定。有的决定,诸如选择适当的数
据
库块大小和配置数据字典对象的初始参数等,会对数据库使用中的总体性能和操作产生影响。
这些关键的决定会在下面的段落中详细介绍。
§ 怎样确定恰当的数据块尺寸
或许,在创建数据库之前所要作的最重要的决定是选择数据库中数据块的尺寸。一旦作出
了这个决定并创建了数据库,就不能改变了。数据块的尺寸在数据库的整个生存期中既不能
增
加也不能减少。数据块的尺寸由数据库初始化参数DB_BLOCK_SIZE 指定。后面的段落中
将要
详细介绍怎样创建数据库参数文件并说明其参数。
为了作出明智的决定,应该确实理解数据块的含义,以及它在数据库运行中所起的作用。
在最基本的层次上,Oracle 按数据块组织和管理所有数据库存储。数据块是存储的最小单
元,
也是数据库I/O 的最小单元。注意到Oracle 数据块与操作系统数据块不同很重要,操作系统
数
据块是操作系统级的最小数据单元。在需要从磁盘取出数据时,Oracle 按Oracle 数据块的
倍数
读取数据。因此,数据库的数据块尺寸决定了读出和写入磁盘的最小数据单元。数据块的尺
寸
对数据库的操作和性能有重要的I/O 方面的含义。下面的指导原则有助于选择恰当的数据尺
寸。
Oracle 数据块的尺寸必须是操作系统块尺寸的倍数虽然Oracle 按Oracle 数据块处理数
据,但操作系统(O S )执行诸如磁盘I/O 这样的操作是按照操作系统块进行的。为了保证
I / O
尽可能有效,所选择的数据块尺寸必须为操作系统块尺寸的倍数。例如,在某些UNIX 系统
上,
如果OS 块尺寸设置为512 字节,那么所选择的数据块尺寸必须是512 字节的倍数。最小允
许
值和最大允许值进一步限制数据块尺寸。在所有操作系统上,数据块尺寸最小必须为2 048
字节。
而允许的最大数据块尺寸有赖于操作系统的类型,不过在Oracle8i 中最大不能超过3 2 K 。
考虑利用数据库的应用程序的类型在选择数据块尺寸中,怎样使用和访问数据库是一个重
要的因素。如用于数据仓库的决策支持或联机分析处理(online analytical processing, OLAP )
的
应用程序一般涉及大量的顺序读取操作,采用较大的数据块尺寸会得到更多好处,因为可以
用
较少的I/O 开销读出更多的数据。而联机事务处理(Online transaction processing, OLT P )
应用
程序一般涉及大量较小的随机的读/写,所以利用较小的数据块尺寸更为有效。
考虑数据块尺寸对存储效率的影响并非数据块中所有空间都可用来存储数据。每个数据块
中有一定量的空间用于存储块的开销,这些开销如下表所示:
开销描述
块标题包含块的一般信息,如块地址及段类型等
表目录包含在该块中具有行的表的信息
行目录包含存放在该块中的行的信息,包括行数据区中每行的地址
块开销部分是可变的,但其余部分固定。因为块开销在大数据块中所占的百分比较小,所
以使用较大的数据块尺寸比使用较小的数据块尺寸的空间利用率更有效,能达到更高的数据
密
度。
考虑行尺寸与数据库中存储的数据类型一般,每行应该完全存储在一个数据块内。但是,
如果行尺寸大于数据块中可用的空间数,Oracle 需要将行分解并将行的各段存储在两个或
多个
数据块中,这些数据块可能不是连续的。这种情形称为行链接。涉及链接行的I/O 操作必定
更
为复杂,因为它们必须处理横跨多个数据块的行,并且比只涉及常规的非链接行的那些操作
更
慢。由于此原因,应该尽可能地避免行链接。
在确定恰当的数据块尺寸中,预先知道存储在数据库中数据的类型,以及数据库中大型、
复杂表的定义会很有帮助。行链接可能在下列情形下出现:
• 字段中包含大数据类型的表,如L O N G 、LONG RAW 、B L O B 、CLOB 以及NCLOB
数据
类型。
• 包含大量字段的表,这些字段之和大于数据块中可用空间。
在第一种情形下,虽然较大的块尺寸仍然有助于减少行链接,但一定量的行链接可能是不
可避免的。而在包含具有大量列的表的第二种情况下,通过使用下面的任一种方法,可以更
好
地避免行链接:
根据表中每列的数和数据类型,估计出最大的行尺寸,使用比最大行尺寸更大的数据块。
• 减少表中的列数(提高数据规范化程度)以降低行的大小。
关于调整表尺寸以及防止和纠正行链接的详细信息,请参阅第2 章,其中详细介绍了数据
库的存储。
从前一节可知,适合于某种特定情形的数据块尺寸有赖于各种因素,在创建数据库前这些
因素都需要很好地考虑。不幸的是,不存在可用来确定最佳数据块尺寸的简单公式。在估计
不
同的因素以便作出最好的决定中,应该利用前面给出的规则和指导原则。一旦创建了数据库,
除了重新创建数据库外,数据块的尺寸就不能改变了。
§ 组织文件系统
要建立一个用来组织与Oracle 有关的文件的规划,最好是在安装Oracle 和创建数据库之前
进行。组织文件系统的好的规划有几个方面,如采用标准惯例为文件命名,利用标准文件尺
寸,
规划文件布局使其对灾难有最大的恢复能力,通过最小化磁盘争用并利用一种可靠灵活的模
式
组织目录树以优化性能。这些最好的经验与技巧在本节中介绍。
§ 怎样命名数据库文件
组成Oracle 数据库的文件有下列几种类型:
• 数据文件。
• 联机重做日志文件。
• 控制文件。
• 参数文件。
以某种特定的方式命名数据文件可能会给管理带来不便。为了防止含混,使管理文件系统
的任务更为容易,应该使用标准的文件命名约定。在UNIX 系统上,不同类型文件的命名约
定
在下面各节中介绍。其他操作系统可采用类似的约定。
1. 数据文件的命名约定
数据文件存储数据内容,构成数据库主体。数据文件与表空间具有多对一的关系,即,一
个表空间可以有一个或多个数据文件。因此,一个或多个数据文件可以对应一个单一的表空
间,
反之不成立;即多个表空间不能共有一个数据文件。应该以下列方式命名数据文件:
< t a b l e s p a c e _ n a m e > < t w o _ d i g i t _ n u m b e r > . d b f
这样的命名约定使每个数据文件易于与其表空间相关联。例,SYSTEM 表空间可能具有一
个名为 的数据文件。而E M P D ATA 表空间可能相当大,包含三个数据文件,
名称
分别为:e m p d a t a 0 1 . d b f 、e m p d a t a 0 2 . d b f 、e m p d a t a 0 3 . d b f 。
2. 联机重做日志文件
联机重做日志文件记录与数据库有关的重做数据。重做数据包括用户活动与批量处理对数
据库中数据进行插入、更新和删除所产生的更改。这些改动记录在数据库的重做日志文件中,
在系统崩溃时用以恢复数据。联机重做日志组成重做日志组,每个重做日志组可由多个成员
组成,以消除无后援的故障。每组必须由相同个数的成员组成。
联机重做日志文件应按如下格式命名:
r e d o < m e m b e r _ n u m b e r > < g r o u p _ i d e n t i f i e r > . l o g
其中成员号为两位数字,表示日志组中日志文件号,而组标识符为单一字符,表示重做日
志组。
假如有一个数据库,具有三个重做日志组,每个组中有两个成员,每个重做日志文件可如
下命名:
磁盘1 磁盘2
日志组成员号1 成员号2
组A r e d o 0 1 a . l o g r e d o 0 2 a . l o g
组B r e d o 0 1 b . l o g r e d o 0 2 b . l o g
组C r e d o 0 1 c . l o g r e d o 0 2 c . l o g
这个模型的应用可扩充到更多的日志组和更多的成员。
3. 控制文件
数据库的控制文件存储数据库的关键性的结构信息。从Oracle8 开始,控制文件也存储数据
库的恢复信息。控制文件的命名约定如下:
control <nn>.ctl
其中<nn> 为两位数字。
每个Oracle 数据库应该至少有两个(最好有三个)控制文件。各个控制文件应该放置于独
立的磁盘上,以防止由单一磁盘导致的无后援故障。如果各个文件都位于不同的安装位置,
那
么增加后缀以区分文件可能没有必要,因为每个文件的完全限定名都是不同的。
4. 数据库参数文件
定义Oracle 启动数据库实例时所用的Oracle 参数的那些文件是文本文件。主要的初始化参
数文件的命名约定如下:
i n i t < S I D > . o r a
其中<SID> 是唯一的实例标识符。
默认情况下实例启动时,Oracle 在$ORACLE_HOME/dbs 下查找名称符合这一规则的参数
文件。除了init<SID>.ora 文件外,还可以建立其他参数文件来指定其他参数。这些文件都
可以
在主要的init<SID>.ora 通过IFILE 参数来指定。利用IFILE 功能,能够更好地组织参数文件
以及
在多个实例中共享某些配置。一般情况下,另加的参数文件用config<SID>.ora 命名,有时
直接
命名为c o m m o n . o r a 。
§ 使用最佳灵活结构
因为Oracle 是一个多组件的系统,它的文件系统特别复杂,由许多不同类型的文件组成。
每种文件具有不同的I/O 特性,执行不同的功能,具有不同的需求。如果多个数据库和/或
多个
版本的Oracle 安装在同一个系统上,文件系统甚至会变得更为复杂。在这些情况下,以一
种预先确定好和规划好的方式组织文件系统就更为重要了。
最佳灵活结构
Oracle 设计了一种配置Oracle 文件系统的标准,称为最佳灵活结构(Optimal Flexible
Architecture, OFA )。O FA 要达到下列目标:
• 将文件按功能和特性分到逻辑上易于辩认的目录之中。
• 按数据库和Oracle 版本将文件分开。
• 允许进一步灵活地增长和扩充。
• 使管理开销最小化。
• 使跨磁盘的文件读/写活动的磁盘争用最小化。
• 通过将文件分存在多个磁盘上,使磁盘故障引起的文件丢失或毁坏最小化。
§ 怎样配置符合 O FA 的 Oracle 文件系统
本节以UNIX 平台为例介绍配置符合O FA 文件系统的一组简化步骤。虽然这里使用的文件
约定与UNIX 有关,但其中的O FA 文件系统的一般原理在大多数平台上也是相同的。实现
符合
O FA 的目录结构的简化步骤如下:
1. 步骤1 :将Oracle 软件与Oracle 数据库文件分开
为Oracle 数据库文件建立多个/ <安装位置>/oradata 形式的目录,为Oracle 软件和管理文件
建立一个/ <安装位置>/app/oracle 形式的基目录。基目录/ <安装位置>/app/oracle 称为
ORACLE_BASE 并且使用同一名字的操作系统环境变量指出这个基目录。一般用一个字母
和两
位数字的组合命名安装位置,如u01 与u 0 2 。
2. 步骤2 :将Oracle 软件文件按版本号分开
在步骤1 建立的ORACLE_BASE 目录下,应该建立安装Oracle 的子目录。一般,相应于
单个Oracle 版本的所有软件文件安装在后面所示的每个目录中:/ <安装位置
> / a p p / o r a c l e / p r o d u c t / < o r a c e l _ v e r s i o n >。因而,在具有三个Oracle 版本
(7 . 3 . 4 . 1 、 和8 . 1 . 5 )
的系统上,对应于这些版本的软件文件可分别安装在名为/ u 0 1 / a p p / o r a c l e / p r o d u c t
/ 7 . 3 . 4 . 1 、
/u01/app/oracle/product/ 和/u01/app/oracle/product/ 的三个目录中。目录/ <安装位置
>/app/oracle/product/<oracle_version> 称为O R A C L E _ H O M E 。
因 此 , 上 述 例 子 中 / u 0 1 / a p p / o r a c l e / p r o d u c t / 7 . 3 . 4 . 1 、
/u01/app/oracle/product/ 和
/u01/app/oracle/product/ 是系统上三个不同的ORACLE_HOME 目录。可利用操作系统
环境
变量定义ORACLE_HOME 和O R A C L E _ B A S E 。
3. 步骤3 :按SID 将数据库文件分开
为了按每个数据库的SID 将数据库文件分开,建立一般形式/ <安装位置
>/oradata/<Database_SID> 的子目录。文件应该分布在多个安装位置。例如,在存放一个名
为
PROD 数据库的系统上,对应于PROD 数据库的各个文件可以放置在名为/ u 0 1 / o r a d a t a
/ P R O D /、
/ u 0 2 / o r a d a t a / P R O D /、/ u 0 3 / o r a d a t a / P R O D /、/u04/oradata/PROD/ 等的目录
路径下。如果相同的系
统还存有另一名为TEST 的数据库,那么对应于TEST 的各个文件可以放置在
/ u 0 1 / o r a d a t a / T E S T /、/ u 0 2 / o r a d a t a / T E S T /、/ u 0 3 / o r a d a t a / T E S T /、
/u04/oradata/TEST/ 之下。相同的模式可扩充用于更多的数据库。
4. 步骤4 :针对每个数据库S I D ,为管理文件建立独立的目录树
每个数据库都与数据库管理中生成的管理文件有关。这些文件有各种类型,如:
• 初始化参数文件。
• 用户生成的跟踪文件。
• Oracle 后台进程生成的跟踪文件。
• 信息转储。
• 与数据库导出有关的文件。
• 创建数据库脚本。
• 归档重做日志文件。
对于每个数据库,建立如下名称的目录来存储这些管理文件:
/<mount_point>/app/oracle/ admin/ <SID>
也可以用O R A C L E _ B A S E / a d m i n / < S I D >表示,其中<SID> 是唯一的实例标识符。
在这个目录下,应建立不同的子目录来存储每种类型的文件。这些子目录通常名为p f i l e
(用于存放参数文件)、u d u m p (用户转储文件)、b d u m p (Oracle 后台进程转储文
件)、c d u m p
(信息转储)、e x p (导出)、、c r e a t e (数据库创建脚本)以及a r c h (归档文件)。
§ 规划数据库文件布局
对数据库文件布局的规划,必须满足下列两个目标:
• 通过配置文件系统使数据库出问题时的中断期最短,以使数据库的可用性最大化。
• 使磁盘争用最小化以避免出现性能瓶颈。
下面介绍实现这两个目标的技巧。
§ 最大化可用性的规划
数据库文件在磁盘上的安排方式极大地影响数据库抵御灾难的能力。高可用性的数据库配
置,包括文件布局和RAID 考虑,将在第4 章详细介绍。规划最大化可用性和最大恢复能力
文
件配置的某些通用技巧和原则如下:
• 控制文件、联机重做日志、系统表空间以及回退段是数据库重要的部分,应该给予特殊的
重视。
• 始终通过在不同磁盘上使用不同控制器建立至少两个(最好三个)控制文件成员,多路复
用控制文件。
• 在每个联机重做日志组中建立至少两个成员(最好三个)以防止出现无后援的故障。将每
个重做日志组成员放置在最好是具有不同控制器的不同磁盘上。
• SYSTEM 表空间包含数据字典,这对于数据库运行是必须的。如果SYSTEM 表空间不可
用,Oracle 实例就会崩溃。在冗余的磁盘(如RAID 阵列)上建立SYSTEM 表空间文件,
可以使其免遭介质故障损坏。
将回退段放置在某种类型的RAID 磁盘上,防止出现故障。R A I D 1 (镜像)或R A I D
(0 + 1 )(条带化镜像)可能是最好的选择。要避免R A I D 5 ,因为它需要大量的性能开
销,
这种开销是由写操作的奇偶计算引起的。
§ 最小化磁盘争用的规划
数据库文件的布局会影响I/O 限制系统上的磁盘争用和性能。在同一磁盘上具有几个访问量
很大的文件将会增加磁盘的争用并降低其性能。
优化文件I/O 应该是全面的性能优化策略(第8 章中介绍)的组成部分。在数据库建立并
使用之后,可以更容易得到文件I/O 的更好和更准确的描述。但是,也可以并且应该根据所
有
Oracle 数据库共有的已知操作特性进行某种初步的规划,以最小化磁盘争用。下面是一些
通用
的技巧和原则,有助于初步规划文件的物理布局:
• 将I/O 访问尽量分布在尽可能多的磁盘上。一般,使用许多小磁盘比使用较少的大磁盘更
好。即使采用磁盘条带化,使用大量磁盘也是很有利的。
• 将归档重做日志目的文件和联机重做日志文件分散在不同的磁盘上。
• 如果有可能的话,将回退段放在独立的专用磁盘上。
• 将所有与数据库有关的文件放置在专用磁盘上,使其不与其他应用程序共用同一磁盘。这
样使对磁盘I / O 的分析和研究,更容易也更有预见性。
• 如果采用冗余(R A I D )磁盘,应该使用合适的RAID 类型。不同的RAID 磁盘类型具
有
不同的性能。应避免使用R A I D 5 ,特别是对写操作密集的文件(如面向事务处理的数据
库
上的重做日志文件和回退段)更不要用。一般RAID0+1 具有更好的读取性能,同时提供
磁盘故障保护。
• 查看应用程序供应商的特定文件配置说明和建议,因为数据库应用程序的设计对不同表及
包含它们的数据文件的I/O 比率有很大的影响。
• 在数据库创建前完全预测出数据文件I/O 即便不是不可能,也是很困难的。在数据库创建
并投入使用后,可以查询数据字典视图清楚地了解I/O 比率。如果观察到I/O 瓶颈,则可
以按需要将数据文件移动到不同的磁盘上以减少磁盘争用。性能优化技术在第8 章中还会
详细介绍。
§ 建立参数文件
数据库参数文件确定实例的初始化参数。它必须在创建数据库前建立和准备。初始化参数
文件是标准的文本文件,这个文件可用文本编辑器方便地打开和编辑,如U N I X 的v i ,Wi
n d o w s
中的n o t e p a d 。参数文件可以通过在一个新文件中输入每个参数从头建立,也可以通过
修改一个
现有参数文件的备份来建立。
提示应该只对样例参数文件的备份进行编辑,因为可能以后在其他数据库中需要原始
的样例文件。
提示如果数据库将用于数据仓库应用程序或数据集市,则应该使用I N I T D 文
件(这是一个与Oracle8i 一道提供的样例参数文件模板,该文件安装在
$ORACLE_HOME/dbs 目录下),它含有适合数据仓库和数据集市特定需求的参数设置。
为新数据库建立参数文件的一种快速方法是拷贝和编辑与新数据库的配置相近的其他已有
数据库的参数文件。或者,如果安装Oracle 时安装了Oracle 演示数据库,可使用它的参数
文件。
还可以拷贝和编辑Oracle 为此目的提供的样例参数文件。Oracle 的样例参数文件名为i n i t .
o r a ,
位于$ORACLE_HOME/dbs 目录下。对于Windows NT 上的 和8 . 0 . x ,
文件的
路径为$ O R A C L E _ H O M E / d a t a b a s e 。而此路径在Oracle8i 中有变化,但在U N I X
中,其路径仍
为$ O R A C L E _ H O M E / d b s 。
提示也可以用Database Configuration Assistant (DBCA) 来建立参数文件,这是
Oracle8i 的一个新工具。
提示初始化参数有两种类型:静态的或动态的。赋给静态参数的值只能通过修改初始
化参数文件并重启数据库实例来使其生效。而动态参数可通过像对静态参数一样更改参
数文件来修改,也可以在实例打开时利用SQL 命令动态修改。
应该将样例参数文件拷贝到一个名为init<SID>.ora 的新文件中,其中SID 是将要创建的新
Oracle 数据库的唯一标识符。Oracle 建议SID 选用四个字符。例如,如果打算创建一个名
为
TEST 的新数据库,则应该建立名为init<TEST>.ora 的参数文件。
在建立了样例参数文件后,可用任意文本编辑器打开该参数文件进行编辑,如用UNIX 系
统的vi 或Windows 系统的notepad 进行编辑。对于较小数据库大多数基本参数都使用缺省
值。
大中型数据库的建议值在注释中给出。如果有必要,在创建数据库前,应该专门查看和修改
下
列参数:
• B A C K G R O U N D _ D U M P _ D E S T 为数据库的 文件和Oracle 后台进程的
调试跟踪
文件指定要写入的操作系统路径。 文件对DBA 特别重要,因为它含有实例的有
用信息和错误消息。在符合O FA 的UNIX 系统上,BACKGROUND_DUMP_DEST 一般
设置为$ O R A C L E _ B A S E / a d m i n / < S I D _ n a m e > / b d u m p 。此参数可动态更
改,即在数据库打
开时利用A LTER SYSTEM 命令修改此参数。
• C O R E _ D U M P _ D E S T 指定核心文件转储的目录。其缺省值为$ O R A C L E _ H O M
E / d b s 。
但是,在大多数符合O FA 的UNIX 系统上,一股是设置为$ O R A C L E _ B A S E / a d m i
n
/ < S I D _ n a m e > / c d u m p 。此参数可以动态更改,即在数据库打开时利用A LTER
SYSTEM 命
令修改此参数。
• C O M PAT I B L E 指定当前发布版必须保持兼容的Oracle 版本。如果设置为一个比当前
版
本更旧的值,可能会限制当前版本的某些功能。因为这个参数可能会影响使用数据库的应
用程序的行为,所以应该保证其设置能够满足每个应用程序的需求。此参数缺省为允许的
最旧版本。对于O r a c l e 8 i ,C O M PATIBLE 缺省为8 . 1 . 0 。这是一个静态参数,只能
通过关
闭实例,在 文件中更改其值并重新启动实例才能改变此参数。
• C O N T R O L _ F I L E S 指定数据库控制文件的的名称。应该保证所指定的名称含有文件
的完
整的操作系统路径名。在执行C R E ATE DATABASE 命令时,Oracle 在此参数指定的位置
建立数据库的控制文件。如果此参数没有设置,或者设置值不对,Oracle 将在缺省位置建
立控制文件,缺省位置有赖于所用的操作系统类型。参数CONTROL_FILES 可用来指定1
到8 个不同的文件。为了防止无后援的故障,应该将CONTROL_FILES 至少设置为三个具
有不同控制器的不同磁盘上的控制文件位置。CONTROL_FILES 为一个静态参数,只能通
过关闭实例在 文件中更改其值并重新启动实例才能改变此参数。
• D B _ B L O C K _ B U F F E R S 这是一个与性能有关的关键参数,它根据数据块的数目确
定数
据缓冲区高速缓存的大小。总的数据缓冲区高速缓存的大小按下列公式确定:
Data buffer cache size = DB_BLOCK_BUFFERS ´ DB_BLOCK_SIZE
因为数据块的尺寸一旦数据库创建后就不能更改,所以可以使用这个参数来更改和优化数
据缓冲区高速缓存的尺寸。优化数据缓冲区高速缓存尺寸的详细信息和技术请参阅第8 章。
DB_BLOCK_BUFFERS 缺省值为32 768 。其最小允许值为4 ,而最大允许值与所用的操作
系统
有关。DB_BLOCK_BUFFERS 是一个静态参数,表示只能通过关闭实例在 文件中更
改
其值并重新启动实例才能更改此参数。
• D B _ F I L E S 指定数据库能够同时打开的最大数据库文件数。其缺省值与操作系统有关。
DB_FILES 是一个静态参数,表示只能通过关闭实例,在 文件中更改其值并重新
启动实例才能更改此参数。
• D B _ N A M E 这是一个可选的参数,用来指定数据库的标识性名称。此名称最多可由8
个
字符组成。如果未指定这个参数,则数据库名称必须在C R E ATE DATABASE 命令中给出。
虽然这个参数是可选的,但Oracle 建议在创建数据库之前设置此参数,然后再在
C R E ATE DATABASE 命令中引用它。DB_NAME 的缺省值为N U L L 。
• D B _ B L O C K _ S I Z E 指定数据块尺寸。不管这个参数设置为什么值,在执行C R E AT
E
D ATABASE 命令时都确定了数据库的数据块尺寸。一旦创建了数据库,数据块的尺寸就
不能更改了,并且这个参数的值必须保持相同。在数据库创建后,更改数据块尺寸的唯一
方法是重建该数据库。因为数据块尺寸的值对数据库的性能和操作有很大的影响,所以应
该仔细地考虑各种因素,并利用前面给出的规则和原则为数据库选择恰当的数据块尺寸。
对于O r a c l e 8 i ,数据块尺寸的最小值为2 048 字节或2 K ,最大值依赖于具体的操作系
统,
但最大不能超过3 2 K 。在执行C R E ATE DATABASE 命令前,应该确认明确地定义
DB_BLOCK_SIZE 为所需的值,否则会使用与操作系统有关的缺省值。
• I F I L E 指定其他参数文件的位置。这个参数可用来将其他参数文件嵌入当前的参数文件
中。
IFILE 一般在Oracle 并行服务器环境中使用,用来将所有实例都必须有的公共参数存放在
具有诸如 名称的单个文件中,然后在实例的专有参数文件中引用。使用
这个参数的另一原因是放置所有通常必须保持不变的参数(如D B _ B L O C K _ S I Z E )
在一个
独立的文件中(一般名为c o n f i g . o r a ),然后从 文件中调用它。
提示IFILE 可在相同的文件中指定多次以引用不止一个参数文件。
• S H A R E D _ P O O L _ S I Z E 指定实例共享内存池的大小。允许的取值范围最小为3 0 0
K ,最
大值依赖于操作系统。SHARED_POOL_SIZE 在大多数操作系统上缺省值为1 6 M B ,而在
64 位操作系统上为6 4 M B 。这是最重要的性能优化参数之一。在创建数据库之后,
SHARED_POOL_SIZE 可以根据需要进行更改和优化。关于性能优化的详细内容及调整这
个参数的技术,请参阅第8 章。
• S O RT_AREA_SIZE 指定用于数据排序的内存区的大小。请注意,S O RT _ A R E A _ S I
Z E
给出了可由每个用户进程用来完成数据排序的内存区域的大小。如果需要更多的内存,
Oracle 将在磁盘上完成数据排序,这样必定很慢。
• USER_DUMP_DEST 指定建立用户会话跟踪文件的目录。在UNIX 系统上,
USER_DUMP_DEST 一般设置为$ O R A C L E _ B A S E / a d m i n / < S I D _ n a m e > / u d
u m p 。此参数可
动态更改,即在数据库打开时,用A LTER SYSTEM 命令进行更改。
上面的参数清单只是强调了某些可能希望在创建数据库前进行修改的重要参数。可能还有
一些重要的参数需要调整。本章后面将介绍在创建数据库之后,与启用归档日志方式有关的
一
些初始化参数。第8 章将更详细地讨论与性能优化有关的一些参数。关于所有初始化参数的
完整
说明,请参阅Oracle8i 参考手册。请注意,如果不明确指定,每个初始化参数都有一个缺省
值。
§ 配置参数的一注意事项
• 选择DB_BLOCK_SIZE 参数的值时,要十分小心。一旦创建了数据库之后,此参数的值
就不能更改了。数据库创建之后,更改DB_BLOCK_SIZE 参数的唯一方法是使用某种技
术重建数据库。例如,可完全导出该数据库,然后将其导入一个具有正确
DB_BLOCK_SIZE 参数的数据库中。
• 在数据库创建之后,更改DB_NAME 参数的唯一方法是使用本章中别的地方介绍的方法
重建此数据库控制文件。
• CONTROL_FILES 参数值的设置要非常仔细。Oracle 将在这个参数指定的确切位置建立
新
数据库的新控制文件。在Oracle8 中,如果C R E ATE DATABASE 与C O N T R O L F I L E
REUSE 选项一起使用,在相同位置具有相同名称的已有文件将被覆盖。这有可能会破坏
已有的数据库。在修改已有参数文件的备份时,这个警告特别重要,因为保留旧的
C O N T R O L _ F I L E S 的参数值可能会覆盖该位置中的已有文件。
•从性能的观点来看,参数D B _ B L O C K _ S I Z E 、D B _ B L O C K _ B U F F E R S 、
SHARED_POOL_SIZE 和S O RT_AREA_SIZE 的取值对性能的影响最大。在数据库创建之
后,DB_BLOCK_SIZE 不能更改,但可以更改和调整其他几个参数来优化性能。
• 样例参数文件的注释提供了每个参数的简要描述和有用的建议。
• 如果没有在C R E ATE DATABASE 语句中指定数据库名,则会使用init<SID>.ora 文件中
初
始化参数“D B _ N A M E ”所指定的名称。
§ 建立参数文件的连接
此步骤仅与UNIX 平台有关。连接(l i n k )UNIX 文件系统中是一个指向文件的指针,是
用
UNIX 的l n 命令建立的。如果某个程序或脚本引用UNIX 连接,它会自动地、透明地重定
向到连
接指向的文件。缺省时,如果实例启动命令未指定参数文件,Oracle 将会在
ORACLE_HOME/dbs 下查找相应的文件。但是,与O FA 原理一样,将初始化参数文件放
置在
$ORACEL_BASE/admin/<SID>/pfile 子目录中更好一些。为了使Oracle 能够在参数文件子
目录
中找到参数文件,可在ORACLE_HOME/dbs 目录中建立一个操作系统连接,指向
ORACLE_BASE/admin/<SID>/pfile 目录中的init<SID>.ora 文件。在大多数UNIX 平台上,
可
利用ln 命令建立连接,它的一般语法如下:
应该查阅相应的操作系统手册,看看在所用的操作系统平台上这个命令语法上的差异以及
可用的选项。可使用UNIX man 命令得到命令帮助。
通过将参数文件放置ORACLE_BASE/admin/<SID>/pfile 目录中,有效地将所有数据库专用
文件移出ORACLE_HOME 目录树,并在很大程度上达到了Oracle 数据库与Oracle 软件文
件的
分离。ORACLE_HOME 位置的未来变化(如由于升级引起的变化)将不需要移动参数文件。
因
为这时只需在新ORACLE_HOME/dbs 目录下建立新连接,指向仍然存放在
ORACLE_BASE/admin/<SID>/pfile 之下的参数文件即可。
这种方法在Windows NT 平台上不起作用,因为Windows NT 目前不支持连接。
模板文件清单
§ 优化数据字典存储
Oracle 数据字典含有数据库管理所用的Oracle 内部表和索引。这些对象由SYS 用户所拥有
并驻留在SYSEM 表空间中,SYSTEM 表空间是用C R E ATE DATABASE 命令创建的,是
所有
Oracle 数据库中第一个表空间。数据字典中的这些对象存储有关数据库特性的信息。因此,
数
据字典中表和索引的信息增长速度主要受存储代码对象的数量和大小以及其他数据库特性
因素
的影响,存储代码对象包括存储程序包、过程和触发器等。如果数据字典的增长速度过快,
数
据字典对象的缺省尺寸参数将导致多个区和空间碎片,这又可能导致性能问题。通过修改数
据
字典对象的缺省存储参数,可以优化数据字典对象的存储配置,从而通过(a )最小化每个
对象
所需区的数目(b )减少空间碎片来帮助改进数据库的整体性能。
通过执行C R E ATE DATABASE 命令可以创建数据字典对象。因此,数据字典对象的缺省
存
储配置,特别是那些与初始存储位置相关的数据字典对象的缺省存储配置必须在执行C R E
AT E
D ATABASE 命令之前修改。怎样修改数据字典对象的存储参数?答案在
$ORACLE_HOME/rdbms/admin 目录下的 文件中。这个文件在安装Oracle 时放于
ORACLE_HOME 目录中。该文件中包含执行C R E ATE DATABASE 命令时,Oracle 为创
建数据
字典执行的SQL 命令。可在创建数据库前(即在执行C R E ATE DATABASE 命令前)编
辑
文件来定制数据字典存储。为了更改数据字典对象的缺省存储配置,可利用文本编
辑
器打开 文件,然后编辑C R E AT E 等命令,设置存储参数为一新的、非缺省值。
I N I T I A L 、NEXT 和PCTINCREASE 参数是可能需要修改的最重要的参数。
提示在更改 前,应该拷贝该文件到另一个文件作为备份。
INITIAL 参数确定了对象在创建时所需区的尺寸。INITIAL 参数的缺省值一般设置为大多
数对象的最小值。可根据数据库和所考虑的对象的特性,将INITIAL 的缺省值设为一个更
为现
实的值。 文件包含注释,这些注释与对象名一起表明了对象的用途。例如,如果将
使
用大量的完整性约束,可考虑设置存储约束定义的CON$ 表的INITIAL 参数为一个适当大
的值。
怎样确定这个值呢?如果有一个类似的数据库存在,那么可以查看该数据库中数据字典对象
的
尺寸和增长速度以得出恰当的估计。否则,应该根据经验进行估计。一般都希望将INITIAL
设
置得足够大,以便尽可能将整个表或索引存储在单个区中。
提示因为 文件中某些存储参数被设置为最小值,因此除P C T I N C R E A S E 以
外,不应该减少任意存储参数的值。
如果或者当对象增长超过了其初始区并需要增加更多的区时,NEXT 和P C T I N C R E A S
E
的值开始起作用。PCTINCREASE 确定段需要的下一个区的尺寸要增加的百分比。缺省时,
包
含数据字典对象的SYSTEM 表空间将PCTINCREASE 设置为5 0 ,这可能增加空间碎片。
如
果NEXT 的值等于INITIAL 的值,且PCTINCREASE 设置为0 ,则数据字典对象获得的所
有
区都具有相同的大小。一般情况下,选择区的大小为一致比较好,因为这有助于减少空间碎
片。
数据字典表和索引所能获得的区的最大数目由数据库的数据块尺寸决定并受其限制。数据
字典表所获得的区不能多于区中允许的最大块数。区中允许块最大的数目取决于数据块尺寸,
如下所示:
块尺寸(字节)块最大的区
5 1 2 2 5
1 0 2 4 5 7
2 0 4 8 1 2 1
4 0 9 6 2 4 9