外观
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$DATAFILE和DBA_DATA_FILES视图查看
控制文件
控制文件内容
- 数据库名称和ID:唯一标识数据库
- 数据文件和重做日志文件信息:位置和状态
- 检查点信息:数据一致性检查点
- 归档日志信息:归档日志文件位置
- 备份信息:RMAN备份信息
- 数据库创建时间:数据库创建的时间戳
控制文件管理
- 创建控制文件:使用
CREATE CONTROLFILE语句 - 备份控制文件:使用
ALTER DATABASE BACKUP CONTROLFILE语句 - 多路复用控制文件:在
init.ora或spfile中配置多个控制文件 - 控制文件恢复:当控制文件丢失时的恢复方法
控制文件监控
- 控制文件状态:通过
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$LOG和V$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的归档模式和启用方法:
- 归档模式:数据库运行在归档模式时,重做日志文件会被归档
- 非归档模式:数据库运行在非归档模式时,重做日志文件不会被归档
- 启用方法:
- 关闭数据库:
SHUTDOWN IMMEDIATE - 启动数据库到挂载状态:
STARTUP MOUNT - 启用归档模式:
ALTER DATABASE ARCHIVELOG - 打开数据库:
ALTER DATABASE OPEN
- 关闭数据库:
Q6: 如何监控Oracle数据库的物理存储使用情况?
A6: 监控Oracle数据库物理存储使用情况的方法:
- 数据文件空间:通过
DBA_DATA_FILES和DBA_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: 恢复丢失的数据文件的方法:
- 如果有备份:
- 将数据文件标记为 offline:
ALTER DATABASE DATAFILE '<文件路径>' OFFLINE - 恢复数据文件:
RMAN> RESTORE DATAFILE '<文件路径>' - 恢复完成后,将数据文件标记为 online:
ALTER DATABASE DATAFILE '<文件路径>' ONLINE
- 将数据文件标记为 offline:
- 如果没有备份:
- 如果是临时表空间的数据文件,只需删除并重建
- 如果是永久表空间的数据文件,可能需要从其他来源恢复数据
Q10: 未来Oracle数据库的物理架构会有哪些变化?
A10: 未来Oracle数据库物理架构的可能变化:
- 云存储:越来越多的数据库使用云存储服务
- 闪存存储:闪存存储的使用越来越广泛
- 自动化管理:物理架构管理更加自动化
- 智能存储:存储系统更加智能化
- 软件定义存储:软件定义存储的使用增加
- 安全性:存储级别的安全性增强
