2、Oracle Database 12c备份与恢复体系结构概述
整理自《Oracle database 12C RMAN备份与恢复》及网络
1、术语
HA:High Availablility ,高可用性
RPO:Recovery Point Option 恢复点目标
RTO:Recovery Time Option 恢复时间目标
LGWR(Log Writer的缩写):也是一种后台进程。主要负责将日志缓冲内容写到磁盘的在线重做日志文件或组中。DBWn将dirty块写到磁盘之前,所有与buffer修改相关的redo log都需要由LGWR写入磁盘的在线重做日志文件(组),如果未写完,那么DBWn会等待LGWR,也会产生一些相应的等待事件(例如:log file prarllel write,后面单独作为话题再聊)。总之,这样做的目的就是为了当crash时,可以有恢复之前操作的可能,也是Oracle在保持交易完整性方面的一个机制。
1、LGWR写日志是顺序写,这就解释了一个Orace Server只能有一个LGWR进程,不能像DBWR那样可以有多个,否则就无法保证顺序写的机制,而且可能会产生锁的问题。
2、用户进程每次修改内存数据块时,都会在日志缓冲区(redo buffer)中构造一个相应的重做条目(redo entry),它记录了被修改数据块修改之前和之后的值。
3、LGWR将redo entry写入联机日志文件的情况可以概括为两种:后台写和同步写,或者说异步写和同步写。
后台写的条件:
(1)、每3秒LGWR启动一次。
(2)、DBWR启动时如果发现dirty块对应的redo entry还没写入联机日志文件,则DBWR触发LGWR进程并等待LGWR完成后继续。
(3)、redo entry数量达到整个log buffer的1/3时,触发LGWR。
(4)、redo entry的数量达到1M。
同步写的条件:
COMMIT。即执行COMMIT时,必须等待log buffer进行flushing操作(可能产生log file sync等待事件),写入磁盘中的联机日志文件。但一般上述1/3满的条件触发LGWR,几乎强制LGWR实时写,因此当需要执行COMMIT,可能没有任何redo entry需要写入了。
4、3秒触发LGWR的规则,事实上,这个超时是DBWR的,但是因为LGWR总在DBWR调用之前执行,因此效果上也相当于LGWR的超时是3秒即调用。
警报日志(alter log):一个文本日志文件,记录数据库的错误和状态信息,通常情况下,警报日志位于后台转存目标目录中,该目录有数据库参数DIAFNOSTIC_DEST定义的,其中警报日志的格式为alter.log。
归档日志重做(ARCHIVELOG redo log):当时数据库处于ARCHIVELOG模式时,每次Oracle通过LGWR进程切换练级重做日志时都会生成归档重做日志。归档重做日志可以写入10个不同的目录,这些目录由数据库参数文件的中的Oracle参数LOG_ARCHIVE_DEST_n定义。
备份控制文件(backup control file):控制文件的备份是由命令alter database backup controlfile to ‘file_name’ 或者命令 later database backup control file to trace 生成的。
块(block):Oracle中最小的存储单元,默认的块大小有数据库参数中的参数DB_BLOCK_SIZE决定的,并且创建数据库后该设置不变。Oracle Database 12c允许表空间具有不同于默认值的块大小。
检查点(checkpoint):一种数据库事件,是数据库将脏(已使用)数据块从内存中移除并写入磁盘。
数据库(database):有构成Oracle数据库的不同组件(表空间,重做日志等)组成,数据库不同于实例,数据库用于存储数据,使用RMAN可以备份和恢复数据库。
数据库一致性(database consistency):指数据库中的每一个对象在某个相同的时间点时一致的。也意味着数据库控制文件与数据库数据文件头保持一致。
数据库控制文件(database control file):数据库控制文件存储于数据库有关的元数据。包含数据库数据文件、归档重做日志、RMAN备份的信息、以及其他数据库内部信息。
数据库数据文件(database datafile):与表空间相关的物理实体。一个数据库至少含有一个数据库数据文件组成的。一个给定的数据库数据文件只能有一个关联的表空间,但是一个表空间可以有多个数据库数据文件。
数据库参数文件(database parameter file):数据库参数文件含有实例和数据库配置信息,它分为两部分(各部分相互独立):一分部分是文本文件init.ora;另一部分是spfile.ora,该文件允许通过alter system 命令来未出数据库参数的设置。
快速恢复区(FRA,Fast Recovery Area):磁盘的可选配置区域,用于存储各种与恢复相关的文件。RMAN的备份文件,归档重做日志,连击重做日志和控制文件都可以存储在这个区域中。
区组(granule):Oracle连续内存单位,所有系统全局区(System Global Area,SGA)的内存分配都近似为最近的区组单位。区组单位的由预计的整个SGA内存的大小决定,可能为4M或者16M,当Oracle使用较大的区组大小时,大于128M的SGA就有可能出现断点。分配数据库的区组数量在数据库启动时确定。
实例(instance):实例是Oracle内存和进程的集合,若分配了SGA且相应的Oracle进程均启动和运行成功,就可以说启动了Oracle实例。注意实例运行不代表数据库自身已经被打开。
联机重做日志(online redo log):生成重做日志时,重做会被实际存储在数据库的练级重做日志中。Oracle要求至少为一个数据的操作创建两个练级重做日志。这些联机重做日志可含有多个保护重做的镜像副本。这些被称为多路重做日志。当一个联机重做日志写满重做内容时,就切换到下一个联机重做日志,这被称为日志切换操作。每一个联机重做日志文件都有关联的唯一日志系列号,一个日志序列号唯一的标识一个联机重做日志文件。通过V L O G 视 图 可 找 到 联 机 重 做 日 志 的 日 志 序 列 号 , 在 V LOG视图可找到联机重做日志的日志序列号,在V LOG视图可找到联机重做日志的日志序列号,在VARCHIVED_LOG视图或者V$LOG_HISTORY视图中可查找给定的归档重做日志的日志序列号。一个联机重做日志(以及一个归档重做日志)包含该日止文件独特的一组数据库系统更改号(System Change Number,SCN),在恢复期间按照序列号的顺序来应用联机重做日志或者归档重做日志中的撤销(undo)操作。
进程(process):执行Oracle数据库实际操作的程序。
重做(redo):记录对给定数据库的所有修改。
模式(schema):拥有Oracle中的多种逻辑对象,实际上与用户的意义相同。
系统全局区(System Global Area,SGA):Oracle启动时分配的共享内存区。所有的Oracle进程都共享这部分内存。
系统更改号(System Change Number,SCN):一个表示某时间点上数据库当前状态的计数器。
表空间(tablespace):一个物理逻辑实体。由一个或者多个数据库数据文件组成。一个数据库至少含有一个表空间(及system表空间)。
跟踪文件(trace file):数据库会在许多不同的情况下生成跟踪文件,包含进程错误。
2、备份与恢复概要
2.1、收集备份与恢复策略需求
1、可以承受的数据丢失量
2、恢复数据时允许的最长时间
3、恢复数据所花费的成本
4、备份期间是否可以关闭系统
5、更换受损硬件设备需要多长时间
6、成长和扩展考虑事项
3、Oracle九大基础进程
1、PMON
进程监控进程,是一个Jamaican进程,监视其他的后台进程,若果进程失败,则它负责恢复。用户进程正常退出或者异常终止,则PMON负责管理数据库缓冲区缓存和其他资源的清理。若其自身进程异常则数据库将出现故障。
2、SMON
系统监控进程,是另一个Jamaican进程,负责执行实例恢复、奔溃恢复、只读或者丢失空间上已终止事物的恢复,清理未使用的临时段、管理字段托管的表空间上的空闲区段(extent)。
3、LREC
监听器注册(Listener Registration,LREC),是12C新引入的进程。
4、DBW/DBWn
数据库写入器(DataBase Writer,),负责将SGA中国存储的内容写入数据库的数据文件中。FAST_START_MTTR_TAARGET参数控制DBW的进程写入方式,默认值0表示尝试尽量减少内存中数据与磁盘上的分歧。DB_WRITER_PROCESSES参数来配置应该运行的DBW的进程数量,12C默认是1或者CPU_COUNT/8中的较大者。通常情况默认即可满足要求。
5、LGWR
日志写入器(Log Writer ,LGWR):负责将生成的重做日志从日志缓存中写入数据库联机重做日志。以下情况会通知LGWR进程执行操作:
- 执行用户提交
- 发生联机重做日志切换
- 距离上次LGWR写入重做数据的时间已有3秒
- 重做日志缓冲区已有三分之一变满或者包含1MB数据
- DBW碧玺将修改的缓冲区写入磁盘
LGDW与DBW是共生关系。
6、CKPT
检查点进程,使用检查点信息来更新数据文件头和