### Oracle9i数据库设计指引全集
#### 一、数据库物理设计原则
##### 1.1 数据库环境配置原则
**1.1.1 操作系统环境:**
- **中小型数据库系统:** 通常建议使用Linux操作系统。对于需要较高冗余和负载均衡能力的系统,可以考虑使用Oracle9i RAC(Real Application Clusters)集群数据库解决方案,其集群节点数量可在2至64个之间灵活选择。
- **大型数据库系统:** 对于高性能需求的应用场景,推荐使用Sun Solaris SPARC 64位小型机系统或HP 9000系列小型机系统。
**RAID级别选择:**
- RAID 5适用于读取密集型的数据库操作,因为它提供了良好的读取性能且具有容错性。
- RAID 1(磁盘镜像)更适合用于OLTP(在线事务处理)数据库,因为它能提供更高的写入性能和更好的数据安全性。
**1.1.2 内存要求:**
- **Linux操作系统下:** 由于Oracle对SGA(共享全局区)的管理能力在正常情况下不超过1.7GB,因此整个系统的物理内存应在4GB以下。SGA的大小通常是物理内存的50%-75%。对于64位系统,Oracle可以管理更大的SGA,建议设置为物理内存的50%-70%。需要注意的是,如果SGA过大,可能会导致内存分页问题,从而影响系统性能。
- **64位小型机系统:** Oracle数据库可以有效管理超过2GB的SGA,但同样需要合理规划,避免内存分页问题。
**1.1.3 交换区设计:**
- 当物理内存小于2GB时,交换分区(swap)的大小应为物理内存的3倍。
- 当物理内存大于2GB时,swap的大小应为物理内存的1-2倍。
**1.1.4 其他环境变量:**
根据Oracle提供的安装文档和相关指南进行配置。
##### 1.2 数据库设计原则
**1.2.1 数据库SID:**
- 数据库SID(System Identifier)是唯一标识数据库的符号,其长度不能超过5个字符。对于单节点数据库,应使用5个字符以内的字符串作为SID;对于集群数据库,命名规则会自动扩展,例如rac1、rac2等。
**1.2.2 数据库全局名:**
- 需要定义一个唯一的全局数据库名称,以便于远程访问。
**1.2.3 数据库类型选择:**
- **海量数据库系统:** 推荐使用Data Warehouse类型。
- **小型数据库或OLTP类型数据库:** 使用Transaction Processing类型。
**1.2.4 数据库连接类型选择:**
- **批处理服务:** 建议使用专用服务器连接类型。
- **OLTP服务:** 推荐使用MTS(Multi-threaded Server)连接类型。通过网络服务配置,也可以实现某些批处理服务采用专用服务器连接方式。
**1.2.5 数据库SGA配置:**
- 在数据库设计初期,可以根据物理内存的比例来配置SGA。随着系统运行,可以根据系统调优的需求调整SGA大小。
**1.2.6 数据库字符集选择:**
- 为了支持多国语言,建议配置为UTF8字符集。
**1.2.7 数据库其他参数配置:**
**1.2.7.1 DB_FILES:**
- 默认值为200个。当预计文件数量接近或超过200个时,需适当增加此值。
**1.2.7.2 DB_BLOCK_SIZE:**
- **数据仓库类型:** 推荐较大的块大小,例如8192或16384字节。
- **OLTP类型:** 可选用较小的块大小,如2048或4096字节。块大小应与系统操作的块大小兼容。
**1.2.8 数据库控制文件配置:**
- **控制文件镜像:** 控制文件应该存放在不同的物理位置,以提高可用性和可靠性。
- **控制文件配置:** 控制文件中的最大数据文件数量应不小于数据库参数DB_FILES。
**1.2.9 数据库日志文件配置:**
- **日志文件大小:** 日志文件的大小取决于数据库的事务处理量。通常,设计时确保每20分钟左右切换一次日志文件。对于批处理系统,日志文件大小可设为几百MB到几GB;对于OLTP系统,则建议为几百MB之内。
- **日志文件组数量:** 批处理系统建议5-10组;OLTP系统推荐3-5组,且每组大小应保持一致。
- **日志成员数量:** 为了实现日志镜像功能,每个日志组应至少有两个成员。
**1.2.10 数据库回滚段配置:**
- Oracle9i引入了Undo表空间的概念来替代传统的回滚段表空间。Undo表空间的大小可根据以下公式计算:`Undospace = UR * UPS * db_block_size + 冗余量`,其中:
- `UR`表示在Undo表空间中保留数据的最长时间。
- `UPS`表示单位时间内并发更新事务的数量。
以上是关于Oracle9i数据库设计的一些核心原则和技术要点,这些指南有助于构建高效、可靠的数据管理系统。在实施具体方案时,还需根据实际情况进行适当的调整和优化。