Oracle 联机重做日志文件(ONLINE LOG FILE)(一)

2014-11-24 18:00:09 · 作者: · 浏览: 2

--=========================================


--=========================================



一、Oracle中的几类日志文件


Redo log files -->联机重做日志


Archive log files -->归档日志


Alert log files -->告警日志


Trace files -->跟踪日志


user_dump_dest -->用户跟踪日志


backupground_dump_dest -->进程跟踪日志



--查看后台进程相关目录


SQL> show parameter dump



NAME TYPE VALUE


------------------------------------ ----------- ------------------------------


background_core_dump string partial


background_dump_dest string /u01/app/oracle/admin/orcl/bdump


core_dump_dest string /u01/app/oracle/admin/orcl/cdump


max_dump_file_size string UNLIMITED


shadow_core_dump string partial


user_dump_dest string /u01/app/oracle/admin/orcl/udump



关于Oracle 常用目录及路径请参考:Oracle 常用目录结构(10g)


关于Oracle 体系结构请参考:Oracle实例和Oracle数据库(Oracle体系结构)



二、联机重做日志的规划管理


1.联机重做日志


记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)


提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)


可以被分组管理



2.联机重做日志组


由一个或多个相同的联机日志文件组成一个联机重做日志组


至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)


LGWR后台进程同时将日志内容写入到一个组的所有成员


LGWR的触发条件


在事务提交的时候(COMMIT)


Redo Log Buffer 三分之一满


Redo Log Buffer 多于一兆的变化记录


DBWn写入数据文件之前



3.联机重做日志成员


重做日志组内的每一个联机日志文件称为一个成员


一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同


每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组


LSN号用于唯一区分每一个联机日志组和归档日志


处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中



4.日志文件的工作方式


日志文件采用按顺序循环写的方式


当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入


写入下一组的过程称为日志切换


切换时发生检查点过程


检查点的信息同时写入到控制文件



5.联机日志文件的规划


总原则


分散放开,多路复用


日志所在的磁盘应当具有较高的I/O


一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求


建议使用rdo结尾的日志文件名,避免误删日志文件。如redo1.rdo,redo2.rdo


规划样例


Redo Log Group1 Redo Log Group2 Redo Log Group3



Member1 Member1 Member1 -->Physical Disk 1



Member2 Member2 Member2 -->Physical Disk 2



Member3 Member3 Member3 -->Physical Disk 3



6.日志切换和检查点切换


ALTER SYSTEM SWITCH LOGFILE; --强制手动切换



ALTER SYSTEM CHECKPOINT;



强制设置检查点间隔


ALTER SYSTEM SET FAST_START_MTTR_TARGET = n



7.添加日志文件组


ALTER DATABASE ADD LOGFILE [GROUP n]


('$ORACLE_BASE/oradata/u01/logn1.rdo',


'$ORACLE_BASE/oradata/u01/logn2.rdo')


SIZE mM;



8.添加日志成员


ALTER DATABASE ADD LOGFILE MEMBER


'$ORACLE_BASE/oradata/u01/logn1.rdo' TO GROUP 1,


'$ORACLE_BASE/oradata/u01/logn2.rdo' TO GROUP 2;



9.删除日志成员


不能删除组内的唯一一个成员


不能删除处于active current 状态组内的成员


删除处于active current 状态组内的成员,应使用日志切换使其处于INACTIVE状态后再删除


对于组内如果一个成员为NULL 值,一个为INVALID,且组处入INACTI