Redo log files

1. 概述
    在恢复操作中最关键的就是redo log, 它是由两个或更多的预先分配的文件来存储数据库所发生的所有改变。每个实例必须配置多个redo log files来保护数据库以防发生故障。
   
2. 基本概念
    2.1 Redo Threads
           当涉及到多个数据库实例时,每个数据库实例的redo log也可以称为redo thread。在典型的数据库配置中,一个数据库实例只对应于一个数据库,因此只有一个线程thread。然而在RAC环境中,多个是实例可以并发的访问单个数据库,并且每个实例都有它们自己的redo thread。这样可以避免对单个redo log files的竞争,因此很好的排除了潜在的性能瓶颈问题。

    2.2 Redo Log Contents
           Redo log files也叫redo records 或redo entry, 它是有一组change vectors组成的。change vectors 是用于记录数单个据库块的改变信息,其中包括表的数据块、撤销段的数据块、撤销段的transaction 表。
           由于它包含了撤销段信息,所以redo entries 数据可以用于重构数据库的所有更改,也可以用于包含回滚数据(rollback data).
            重做日志信息先是记录在log buffer里的,在满足一定的条件是由LGWR进程把buffer里的数据写到redo log 文件里。

3. Redo Log生成流程
    一个数据库至少需要两个重做日志组,每个组至少需要一个成员。因此,LGWR 进程将以循环的方式把日志写到每个组的日志成员中。当一个日志组写满时将切换到下一个组. 在ARCHIVELOG模式下,如果下一个组处于active状态(未归档), LGWR将会等待ARCn进程归档该组的日志。在NOARCHIVELOG模式下,将直接覆盖。

4. Redo Log 的状态
     CURRENT: 当前真正使用
     ACTIVE: 实例恢复还需要
     INACTIVE: 实例恢复不需要

5. Planning the Redo Log
     为了保证REDO LOG的安全性和数据库的可靠性,应该很好的规划redo log,以下是需要考虑的点:
     1). 重做日志组的个数
          数据库至少需要2个组,但根据实际情况可以设置组的个数。一般情况配置3个组比较合适。

     2). 成员的个数和存放位置
           数据库要求每个组至少要一个成员。但需根据实际硬盘环境的情况分配成员个数。一般原则是分配多个成员并存放于不同的磁盘驱动器上,可以防止单点故障和磁盘竞争。
           注:最大允许的组个数和成员个数有初始化参数决定
                   MAXLOGFILES: 指定最大允许多少个组
                   MAXLOGMEMBERS: 指定最大允许多少个成员

     3). Controlling Archive Lag
           当一个组的日志被写满时,将发生日志切换。也可以通过手工的切换日志,也可以周期性的自动切换日志。自动切换有参数ARCHIVE_LAG_TARGET决定,一般设置为1800(30分钟),默认值为0(无效)。当然设置该值也许会降低性能。在data guard里该参数比较有用。

6. 管理REDO LOG groups, members
    1). 创建redo log groups
         ALTER DATABASE ADD LOGFILE ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 4M;
         ALTER DATABASE ADD LOGFILE GROUP 10 ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo') SIZE 4M;
   
    2). 创建redo log members
          ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2b.rdo' TO GROUP 2;
          ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2c.rdo'
                       TO ('/oracle/dbs/log2a.rdo', '/oracle/dbs/log2b.rdo');
    
     3). Relocating and Renaming Redo Log Members
           a). SHUTDOWN
           b). 拷贝文件到新目录
                mv /diska/logs/log1a.rdo /diskc/logs/log1c.rdo
       
mv /diska/logs/log2a.rdo /diskc/logs/log2c.rdo
           c). CONNECT / as SYSDBA
        
STARTUP MOUNT
           d). ALTER DATABASE RENAME FILE '/diska/logs/log1a.rdo', '/diska/logs/log2a.rdo'
                                                                        TO '/diskc/logs/log1c.rdo', '/diskc/logs/log2c.rdo';
           e). Relocating and Renaming Redo Log MembersALTER DATABASE OPEN;

      4). 删除redo groups, members
            ALTER DATABASE DROP LOGFILE GROUP 3;
            ALTER DATABASE DROP LOGFILE MEMBER '/oracle/dbs/log3c.rdo';
 
     5). Clearing a Redo Log File
           ALTER DATABASE CLEAR LOGFILE GROUP 3;
           ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9466564/viewspace-609066/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9466564/viewspace-609066/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值