5ilinux.com
域名年龄: 21年5个月26天HTTP/1.1 200 OK 服务器:nginx/1.2.1 访问时间:2015年08月03日 09:33:39 类型:text/html; charset=UTF-8 Transfer-Encoding: chunked 连接:keep-alive 语言环境:PHP/5.4.39-0+deb7u2 设置Cookie:wfvt_929041906=55bec4f3b2bd3; expires=Mon, 03-Aug-2015 02:03:39 GMT; path=/; httponly X-Pingback: http://www.5ilinux.com/xmlrpc.php Content-Encoding: gzip 网站编码:UTF-8
我爱linux我是一个linux运维从业者,这个网站记录一些平时调试linux相关文档及生活随笔oracle联机重做日志OracleNo Responses »六 052014联机重做日志的基本概念1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)可以被分组管理2.联机重做日志组由一个或多个相同的联机日志文件组成一个联机重做日志组至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)由LGWR后台进程同时将日志内容写入到一个组的所有成员LGWR的触发条件1:当commit事务发生2:当redo log buffer存储达到1/33:当重做日志缓冲区有超过1M的更改记录没被写入磁盘4:每隔3秒钟5:在DBWN将buffer cache修改过的数据块的信息写入到数据文件之前6:日志切换出发LGWR3.联机重做日志成员重做日志组内的每一个联机日志文件称为一个成员一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组LSN号用于唯一区分每一个联机日志组和归档日志处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中4.日志文件的工作方式日志文件采用按顺序循环写的方式当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入写入下一组的过程称为日志切换切换时发生检查点过程检查点的信息同时写入到控制文件5.联机日志文件的规划总原则分散放开,多路复用日志所在的磁盘应当具有较高的I/O一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求建议使用rdo结尾的日志文件名,避免误删日志文件。如redo1.rdo,redo2.rdo联机日志文件不建议放在raid5的磁盘上,但可以放在raid0或者raid0+1 当然有条件最好放在固态硬盘上,总之iops越高越好查询日志组切换时间语句SQL> SELECT TO_CHAR(first_time,'yyyy-mm-dd hh24:mi:ss'),GROUP# FROM v$log;这样我们就能控制添加删除日志组成员,大小更改等,以满足10-20分钟切换的业务需求6.联机重做日志状态SQL> SELECT * FROM v$log;日志文件组的状态一般有INACTIVE、ACTIVE、CURRENT、UNUSED、CLEARING、CLEARING_CURRNT等六种状态:UNUSED : 表示该联机重做日志文件组对应的文件还从未被写入过数据,通常刚刚创建的联机重做日志文件组会显示成这一状态。当日志切换到这一组时,就会改变状态。CURRENT : 表示当前正在使用的日志文件组。该联机重做日志组是活动的。当前Oracle数据库正在使用的联机重做日志文件组。ACTIVE : 表示该组是活动的但不是当前组,实例恢复时需要这组日志。如果处于这一状态,表示虽然当前并未使用,不过该文件中内容尚未归档,或者文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。INACTIVE: 表示实例恢复已不再需要这组联机重做日志组了。表示对应的联机重做日志文件中的内容已被妥善处理,该组联机重做日志当前处于空闲状态。CLEARING:表示该组重做日志文件正被重建(重建后该状态会变成UNUSED)。CLEARING_CURRENT:表示该组重做日志重建时出现错误。SQL> Sselect * from v$logfile;日志文件的状态有STALE,INVALID 、DELETED、空白 四种状态。可以通过下面语句查看INVALID : 表示该文件是不可以被访问的。STALE : 表示该文件中的内容是不完全的。空白 : 表示该文件正在使用。DELETED : 表示该文件已不再有用了。ARCHIVED列值为YES表示已经归档,NO表示未归档。 SEQUENCE列值表示日志序列号,每进行一次日志切换就+17.日志的基本操作创建新的日志组:SQL> ALTER DATABASE ADD LOGFILE [GROUP n] ('$ORACLE_BASE/oradata/u01/logn1.rdo','$ORACLE_BASE/oradata/u01/logn2.rdo') SIZE mM;一开始增加的日志文件,日志序列为0,状态为UNUSED,因为没有使用过,进行切换后,就可以正常使用了。删除旧的日志组:SQL> ALTER DATABASE DROP LOGFILE GROUP n以下情况不能删除1:一个实例至少需要两个联机日志文件组2:不能删除正在活动的日志组(即current,active状态的日志文件),一般我们通过手工切换日志的方法,把日志切换成其它状态就可以进行删除,改名等操作SQL> alter system switch logfile;3:当日志组只有1个成员的时候,不能删除日志组成员4:不能删除没有归档的文件组5:组内成员状态有NULL 值或INVALID状态并存,组不可删除6:执行删除日志组命令后,其实只是在数据字典中删掉了对于日志信息。你查看对应的日志文件,你会发现日志文件还在,只有手动删除日志文件,才能真正的删除日志文件。增加日志组文件:SQL> ALTER database add logfile member '/oracle/oradata/orcl/redo1.log' TO GROUP 1;删除日志组文件:1:不能删除日志组中唯一的日志文件,可以使用删除组的方法直接删除组;2:不能删除处于active 和current 状态组内的成员3:不能删除还没归档的日志文件成员4:对于组内如果一个成员为NULL 值,一个为INVALID,且组处入INACTIVE,仅能删除INVALID状态成员5:删除日志成员,物理文件并没有真正删除,需要手动删除6:删除日志文件后,控制文件被更新SQL> ALTER DATABASE DROP LOGFILE MEMBER '$ORACLE_BASE/oradata/u01/logn1.rdo';重命名日志组文件:不能移动正在使用的日志文件确保执行命令前把目标文件已经移动到新目录下了建议该行为之前备份数据库重命名或重定位之后建议立即备份控制文件SQL> ho cp <oldfile> <newfile>SQL> ALTER DATABASE RENAME FILE '<oldfile>' TO '<newfile>'清空日志文件数据:清空是说删除日志文件的内容。主要用于数据库无法进行有效恢复的时候。比如标识为current的日志文件组所有文件都坏了等。只有非active 和非current状态的组才能被清空SQL> ALTER DATABASE CLEAR LOG
© 2010 - 2020 网站综合信息查询 同IP网站查询 相关类似网站查询 网站备案查询网站地图 最新查询 最近更新 优秀网站 热门网站 全部网站 同IP查询 备案查询
2025-05-02 08:21, Process in 0.0070 second.