10分钟了解Oracle体系结构( 四 )


在说说Oracle 的几个后台进程(DBWn和LGWR较重要 , 前面已做了了解 , 在此不再赘述)
SMON(System Monitor):安装和打开数据库 , 实例恢复也是由此进程完成的
PMON(Process Monitor):进程监视器 , 主要监视服务器进程 。前面提到过 , 专有服务器体系模式下 , 用户进程和服务器进程是一对一的关系 , 如果某个会话发生异常 , PMON会销毁对应的服务器进程 , 回滚未提交的事务 , 并回收会话专有的PGA内存区域 。
CKPT(Checkpoint Process):CKPT负责发起检查点信号 , 手动设置检查点的语法:
SQL>alter system checkpoint;检查点可强制DBWn写入脏缓冲区 , 当数据库崩溃后 , 由于大量脏缓冲区未写入数据文件 , 在重新启动时 , 需要由SMON进行实例恢复 , 实例恢复需要提取和应用重做日志记录 , 提取的位置就是从上次检查点发起的位置开始的(检查点之前的数据已经被强制写入到数据文件中去了) , 这个位置称为RBA(redo byte address) , CKPT会不断将这个位置更新到控制文件中去(以确定实例恢复需要从哪儿开始提取日志记录) 。
MMON(Manageability Monitor)数据库的自我监视和自我调整的支持进程 。实例在运行中 , 会收集大量有关实例活动和性能的统计数据 , 这些数据会收集到SGA中 , MMON定期从SGA中捕获这些统计数据 , 并将其写入到数据字典中 , 便于后续对这些快照进行分析 。(默认情况 , MMON每隔一个小时收集一次快照)
ARCn(Archiver)归档进程 , 这个进程是可选的 , 如果数据库配置为归档模式 , 这个进程就是必须的 。所谓归档 , 就是将重做日志文件永久保存(生产库一般都会配置为归档模式)到归档日志文件中 。归档日志文件和重做日志文件作用是一样的 , 只不过重做日志文件会不短被重写 , 而归档日志文件则保留了关于数据更改的完整的历史记录 。
至此 , Oracle基础的内存结构和进程结构我们已大概了解 , 来看下完成的进程和内存的交互情况 , 可以根据前面的理解将整个交互流程串联一下 。

10分钟了解Oracle体系结构

文章插图
 
针对Oracle存储结构将分别从物理存储结构和逻辑存储结构两个维度来进行阐述 。
物理存储结构
10分钟了解Oracle体系结构

文章插图
 
所谓外部文件 , 意味着这些文件从严格意义上来讲并不属于Oracle数据库的一部分 。
控制文件:控制文件虽小 , 但作用重大 , 它包含指向数据库其余部分的指针(包括重做日志文件 , 数据文件 , 归档日志文件等的位置) , 存储重要的序列号和时间戳 , 存储RMAN备份的详细信息 。控制文件一旦受损 , 那实例会立马终止 , 一般对数据文件的保护采用多路复用机制 , 就是冗余多份在不同物理位置 。
重做日志文件重做日志文件的作用在讲解内存和进程结构的时候有提到过 , 重做日志按时间顺序存储应用于数据库的一连串的变更向量(包含联机重做日志文件和归档日志文件) 。由SMON在数据库启动时自动执行的实例恢复 和 磁盘损坏所要求的提取备份恢复都会应用到重做日志进行相应的数据恢复
重做日志文件也建议进行多路复用 , 一个数据库至少要有两组重做日志文件 。一组供LGWR进行写入 , 日志文件是固定大小 , 业务高峰期会很快写满 , 写满之后会切换到第二组上 , 在配置为归档模式的数据库中 , 这时由归档进程(ARCn)开始将第一组的内容进行归档备份 , 如此循环地进行写入和归档 。需要注意的是 , 在归档进程还未对当前组的日志归档完毕前 , 是不允许LGWR对其进行重写的 。
数据文件数据文件存储着实际的数据 , DBWn会将数据库缓冲区中的内容写入到这类文件中去 , 数据文件的大小和数量是不受限制的 。Oracle从10g开始 , 创建一个数据库至少需要两个数据文件 , 一个用于SYSTEM表空间 , 该表空间用来存储数据字典;一个用于SYSAUX表空间 , 这个表空间用来存储一些数据字典的辅助数据 。


推荐阅读