Skip to content

Oracle 物理架构

数据文件

数据文件类型

  • 永久数据文件:存储永久数据,如用户表和索引
  • 临时数据文件:存储临时数据,如排序操作的中间结果
  • UNDO数据文件:存储回滚数据,用于事务回滚和一致性读取

数据文件特性

  • 自动扩展:数据文件可以设置为自动扩展
  • 最大大小:每个数据文件有最大大小限制
  • Bigfile:单个数据文件最大可达128TB
  • Smallfile:传统数据文件,大小较小

数据文件管理

  • 创建数据文件:使用 ALTER TABLESPACE ADD DATAFILE 语句
  • 修改数据文件:使用 ALTER DATABASE DATAFILE 语句
  • 删除数据文件:使用 ALTER TABLESPACE DROP DATAFILE 语句
  • 数据文件状态:ONLINE、OFFLINE、READ ONLY、READ WRITE

数据文件监控

  • 空间使用:监控数据文件的空间使用情况
  • I/O性能:监控数据文件的I/O性能
  • 数据文件信息:通过 V$DATAFILEDBA_DATA_FILES 视图查看

控制文件

控制文件内容

  • 数据库名称和ID:唯一标识数据库
  • 数据文件和重做日志文件信息:位置和状态
  • 检查点信息:数据一致性检查点
  • 归档日志信息:归档日志文件位置
  • 备份信息:RMAN备份信息
  • 数据库创建时间:数据库创建的时间戳

控制文件管理

  • 创建控制文件:使用 CREATE CONTROLFILE 语句
  • 备份控制文件:使用 ALTER DATABASE BACKUP CONTROLFILE 语句
  • 多路复用控制文件:在 init.oraspfile 中配置多个控制文件
  • 控制文件恢复:当控制文件丢失时的恢复方法

控制文件监控

  • 控制文件状态:通过 V$CONTROLFILE 视图查看
  • 控制文件大小:监控控制文件大小变化
  • 控制文件备份:确保控制文件有定期备份

重做日志文件

重做日志功能

  • 事务恢复:在实例崩溃后恢复未提交的事务
  • 介质恢复:在数据文件损坏时恢复数据
  • 数据复制:Data Guard和GoldenGate使用重做日志进行数据复制

重做日志管理

  • 创建重做日志组:使用 ALTER DATABASE ADD LOGFILE GROUP 语句
  • 添加重做日志成员:使用 ALTER DATABASE ADD LOGFILE MEMBER 语句
  • 删除重做日志:使用 ALTER DATABASE DROP LOGFILE 语句
  • 清空重做日志:使用 ALTER DATABASE CLEAR LOGFILE 语句

重做日志状态

  • CURRENT:当前正在使用的重做日志组
  • ACTIVE:包含未 checkpoint 的重做信息
  • INACTIVE:所有重做信息已 checkpoint 到数据文件
  • UNUSED:尚未使用的重做日志组

重做日志监控

  • 重做日志切换:监控重做日志切换频率
  • 归档等待:监控是否有归档等待
  • 重做日志信息:通过 V$LOGV$LOGFILE 视图查看

归档日志文件

归档日志功能

  • 介质恢复:用于数据文件损坏时的恢复
  • 数据库复制:用于Data Guard和GoldenGate的数据复制
  • 时间点恢复:恢复到特定时间点
  • 闪回数据库:用于数据库闪回操作

归档日志管理

  • 启用归档模式:使用 ALTER DATABASE ARCHIVELOG 语句
  • 禁用归档模式:使用 ALTER DATABASE NOARCHIVELOG 语句
  • 归档日志目标:配置归档日志的存储位置
  • 归档日志保留:配置归档日志的保留策略

归档日志监控

  • 归档日志空间:监控归档日志目录的空间使用
  • 归档日志生成率:监控归档日志的生成速率
  • 归档日志信息:通过 V$ARCHIVED_LOG 视图查看

参数文件

服务器参数文件

  • SPFILE:二进制参数文件,支持动态修改参数
  • 自动备份:参数修改时自动备份
  • 默认位置:默认存储在数据库目录中
  • 修改参数:使用 ALTER SYSTEM 语句修改参数

文本参数文件

  • INIT.ORA:文本格式的参数文件
  • 手动修改:需要手动编辑修改参数
  • 静态参数:所有参数都是静态的,需要重启数据库

参数文件管理

  • 创建参数文件:从模板创建参数文件
  • 修改参数:修改参数文件中的参数
  • 备份参数文件:定期备份参数文件
  • 参数文件信息:通过 V$PARAMETER 视图查看

密码文件

密码文件管理

  • 创建密码文件:使用 ORAPWD 工具创建
  • 修改密码文件:使用 ALTER USER 语句修改用户密码
  • 删除密码文件:删除密码文件后需要重新创建
  • 密码文件权限:控制密码文件的访问权限

密码文件监控

  • 密码文件状态:监控密码文件的存在性和完整性
  • 特权用户:监控具有特权的用户

告警日志和跟踪文件

告警日志

  • 告警日志:记录数据库的重要事件和错误信息
  • 位置:默认存储在 ADR(自动诊断仓库)中
  • 内容:数据库启动和关闭信息、错误信息、DDL操作等
  • 监控:定期检查告警日志,及时发现问题

跟踪文件

  • 跟踪文件:记录数据库进程的详细信息
  • 类型:后台进程跟踪文件和用户进程跟踪文件
  • 位置:默认存储在 ADR 中
  • 内容:进程执行的详细信息,用于故障诊断

自动诊断仓库

  • ADR:自动诊断仓库,存储数据库诊断信息
  • 结构:按数据库和实例组织的目录结构
  • 文件:包含告警日志、跟踪文件、健康检查报告等
  • 工具:使用 ADRCI 工具管理 ADR

物理存储结构

存储层次

  • 数据库:由多个表空间组成
  • 表空间:由多个数据文件组成
  • :由多个区组成
  • :由多个数据块组成
  • 数据块:Oracle最小的存储单位

数据块

  • 数据块大小:默认8KB,可在创建数据库时指定
  • 块结构:数据块包含头部、数据区和空闲区
  • 块格式化:数据块需要格式化后才能使用
  • 块复用:数据删除后,块空间可以复用

  • 区大小:由表空间的存储参数决定
  • 区分配:当段需要空间时,分配新的区
  • 区管理:本地管理表空间使用位图管理区分配

  • 段类型:表段、索引段、临时段、回滚段等
  • 段存储参数:控制段的存储行为
  • 段空间管理:自动段空间管理使用位图管理段内空间

存储管理

文件系统存储

  • 本地文件系统:使用操作系统的文件系统
  • 网络文件系统:使用NFS等网络文件系统
  • 优缺点:易于管理,但性能可能不如裸设备

裸设备存储

  • 裸设备:直接使用磁盘分区,不经过文件系统
  • 优缺点:性能较好,但管理复杂
  • 使用场景:适用于对性能要求高的数据库

自动存储管理

  • ASM:Oracle自动存储管理,专门为Oracle数据库设计的存储管理解决方案
  • 优点:简化存储管理,提高性能和可靠性
  • 组件:ASM实例、ASM磁盘组、ASM磁盘
  • 特性:条带化、镜像、自动平衡

存储最佳实践

  • 分离存储:将数据文件、重做日志文件和归档日志文件存储在不同的存储设备上
  • I/O均衡:均匀分布I/O负载
  • 冗余:使用RAID等技术提供存储冗余
  • 性能:选择适合数据库工作负载的存储设备

备份和恢复

备份类型

  • 完全备份:备份整个数据库
  • 增量备份:只备份更改的数据
  • 差异备份:备份自上次完全备份以来更改的数据
  • 累积备份:备份自上次累积备份以来更改的数据
  • 归档日志备份:备份归档日志文件

恢复类型

  • 实例恢复:实例崩溃后的自动恢复
  • 介质恢复:数据文件损坏后的恢复
  • 完全恢复:恢复到最新状态
  • 不完全恢复:恢复到特定时间点或SCN
  • 表级恢复:只恢复特定表

备份恢复工具

  • RMAN:Oracle恢复管理器,推荐的备份恢复工具
  • 用户管理的备份:使用操作系统命令进行备份
  • 数据泵:用于逻辑备份和恢复

备份恢复策略

  • 备份频率:根据数据重要性和变更率确定备份频率
  • 备份保留:根据业务需求确定备份保留时间
  • 恢复测试:定期测试备份的可恢复性
  • 灾难恢复:制定灾难恢复计划

高可用性

冗余架构

  • Real Application Clusters (RAC):多个实例共享存储,提供节点级冗余
  • Data Guard:主备数据库架构,提供站点级冗余
  • GoldenGate:基于日志的复制,提供异构环境的冗余

故障检测和恢复

  • 自动故障转移:在故障发生时自动切换到备用资源
  • 快速启动故障转移:Data Guard的自动故障转移功能
  • 透明应用故障转移:客户端自动重连到可用实例

存储高可用

  • RAID:使用RAID技术提供存储冗余
  • ASM镜像:使用ASM的镜像功能提供存储冗余
  • 存储区域网络:使用SAN提供存储冗余和共享

性能优化

I/O优化

  • 存储选择:选择高性能的存储设备
  • I/O分布:均匀分布I/O负载
  • 存储参数:调整存储参数,如RAID级别
  • 数据文件布局:合理安排数据文件的布局

数据文件优化

  • 表空间设计:为不同类型的数据创建专用表空间
  • 分区策略:为大型表使用分区,提高查询性能
  • 段存储参数:调整段的存储参数
  • 数据压缩:使用数据压缩减少存储空间和I/O

重做日志优化

  • 重做日志大小:设置合适的重做日志大小,减少日志切换频率
  • 重做日志位置:将重做日志存储在高性能存储上
  • 重做日志组:创建足够的重做日志组

控制文件优化

  • 多路复用:至少有2-3个控制文件副本
  • 控制文件位置:将控制文件副本存储在不同的存储设备上

物理架构最佳实践

安装配置

  • 存储规划:在安装前进行详细的存储规划
  • 文件布局:合理安排数据文件、重做日志文件和控制文件的布局
  • 参数配置:根据硬件和工作负载配置合适的参数
  • 备份策略:在数据库创建后立即制定备份策略

日常管理

  • 监控:定期监控物理架构的状态
  • 维护:定期进行物理架构的维护,如空间回收
  • 备份:定期备份数据库和相关文件
  • 优化:根据性能监控结果优化物理架构

故障处理

  • 备份验证:定期验证备份的可恢复性
  • 恢复测试:定期进行恢复测试
  • 故障演练:定期进行故障切换演练
  • 文档:维护详细的物理架构文档

性能调优

  • I/O监控:监控I/O性能,识别I/O瓶颈
  • 存储优化:根据I/O监控结果优化存储
  • 参数调整:根据性能需求调整数据库参数
  • 最佳配置:根据Oracle最佳实践配置物理架构

物理架构与逻辑架构的关系

映射关系

  • 逻辑对象:表、索引等逻辑对象最终映射到物理存储上
  • 表空间:逻辑表空间对应一个或多个物理数据文件
  • :逻辑段对应物理存储中的段
  • :逻辑区对应物理存储中的区
  • 数据块:逻辑数据块对应物理存储中的数据块

设计考虑

  • 逻辑设计:逻辑架构设计应考虑物理存储的限制
  • 物理设计:物理架构设计应支持逻辑架构的需求
  • 平衡:在逻辑设计和物理设计之间取得平衡
  • 性能:物理架构设计直接影响数据库性能

未来发展趋势

云存储

  • 云存储服务:越来越多的数据库使用云存储服务
  • 弹性存储:根据需求自动调整存储容量
  • 存储即服务:使用云提供商的存储服务

存储技术

  • 闪存存储:越来越多的数据库使用闪存存储
  • 混合存储:结合闪存和传统存储的优势
  • 软件定义存储:使用软件定义存储技术

自动化管理

  • 自动存储管理:ASM功能不断增强
  • 智能存储:存储系统更加智能化
  • 自优化:存储参数自动优化

安全性

  • 存储加密:存储级别的数据加密
  • 安全审计:存储操作的审计
  • 访问控制:更精细的存储访问控制

常见问题(FAQ)

Q1: Oracle数据库的物理架构包括哪些组件?

A1: Oracle数据库的物理架构包括以下组件:

  • 数据文件:存储数据库实际数据
  • 控制文件:存储数据库结构信息
  • 重做日志文件:记录数据库的所有变更操作
  • 归档日志文件:重做日志文件的归档副本
  • 参数文件:存储数据库配置参数
  • 密码文件:存储特权用户密码
  • 告警日志和跟踪文件:记录数据库事件和错误信息

Q2: 如何优化Oracle数据库的数据文件布局?

A2: 优化Oracle数据库数据文件布局的方法:

  • 分离存储:将数据文件、重做日志文件和归档日志文件存储在不同的存储设备上
  • I/O均衡:均匀分布I/O负载
  • 表空间分离:为不同类型的数据创建专用表空间
  • 存储性能:将频繁访问的数据存储在高性能存储上
  • 文件大小:合理设置数据文件大小,避免过多的小数据文件

Q3: 控制文件在Oracle数据库中的作用是什么?

A3: 控制文件在Oracle数据库中的作用:

  • 存储数据库结构信息:数据文件和重做日志文件的位置和状态
  • 检查点信息:数据一致性检查点
  • 归档日志信息:归档日志文件位置
  • 备份信息:RMAN备份信息
  • 数据库启动:数据库启动时需要读取控制文件
  • 数据库运行:数据库运行过程中需要访问控制文件

Q4: 如何管理Oracle数据库的重做日志文件?

A4: 管理Oracle数据库重做日志文件的方法:

  • 创建足够的重做日志组:至少需要2个重做日志组
  • 设置合适的重做日志大小:减少日志切换频率
  • 多路复用重做日志:每个重做日志组有多个成员
  • 监控重做日志状态:通过 V$LOG 视图查看
  • 定期检查重做日志:确保重做日志正常工作

Q5: 什么是Oracle的归档模式?如何启用?

A5: Oracle的归档模式和启用方法:

  • 归档模式:数据库运行在归档模式时,重做日志文件会被归档
  • 非归档模式:数据库运行在非归档模式时,重做日志文件不会被归档
  • 启用方法
    1. 关闭数据库:SHUTDOWN IMMEDIATE
    2. 启动数据库到挂载状态:STARTUP MOUNT
    3. 启用归档模式:ALTER DATABASE ARCHIVELOG
    4. 打开数据库:ALTER DATABASE OPEN

Q6: 如何监控Oracle数据库的物理存储使用情况?

A6: 监控Oracle数据库物理存储使用情况的方法:

  • 数据文件空间:通过 DBA_DATA_FILESDBA_FREE_SPACE 视图查看
  • 表空间使用:通过 DBA_TABLESPACE_USAGE_METRICS 视图查看
  • I/O性能:通过 V$FILESTAT 视图查看
  • 存储监控工具:使用Oracle Enterprise Manager或第三方工具

Q7: Oracle的ASM是什么?它有什么优势?

A7: Oracle的ASM和它的优势:

  • ASM:自动存储管理,是Oracle专门为数据库设计的存储管理解决方案
  • 优势
    • 简化存储管理
    • 提高性能:自动条带化
    • 提高可靠性:自动镜像
    • 自动平衡:自动在磁盘间平衡数据
    • 易于扩展:可以动态添加磁盘

Q8: 如何备份Oracle数据库的物理文件?

A8: 备份Oracle数据库物理文件的方法:

  • RMAN:使用Oracle恢复管理器备份数据库
  • 冷备份:在数据库关闭状态下备份物理文件
  • 热备份:在数据库打开状态下备份物理文件
  • 增量备份:只备份更改的数据
  • 归档日志备份:备份归档日志文件

Q9: 如何恢复丢失的数据文件?

A9: 恢复丢失的数据文件的方法:

  • 如果有备份
    1. 将数据文件标记为 offline:ALTER DATABASE DATAFILE '<文件路径>' OFFLINE
    2. 恢复数据文件:RMAN> RESTORE DATAFILE '<文件路径>'
    3. 恢复完成后,将数据文件标记为 online:ALTER DATABASE DATAFILE '<文件路径>' ONLINE
  • 如果没有备份
    1. 如果是临时表空间的数据文件,只需删除并重建
    2. 如果是永久表空间的数据文件,可能需要从其他来源恢复数据

Q10: 未来Oracle数据库的物理架构会有哪些变化?

A10: 未来Oracle数据库物理架构的可能变化:

  • 云存储:越来越多的数据库使用云存储服务
  • 闪存存储:闪存存储的使用越来越广泛
  • 自动化管理:物理架构管理更加自动化
  • 智能存储:存储系统更加智能化
  • 软件定义存储:软件定义存储的使用增加
  • 安全性:存储级别的安全性增强