在线修改Redo log的大小及增加新的日志组

如果在线日志文件设置过小,会导致日志切换非常频繁。可以通过以下步骤进行在线Redo日志修改。

相关的知识普及:

1、Redo log File存放了Redo log信息,最少有两组日志文件,供Oracle循环使用。

2、Redo log File每组最少一个,建议两个,防止损坏而导致的数据丢失。

3、每组中的文件大小必须一致,因为他们是同时修改的,不同组的文件大小可以不一致。

4、每组中的文件个数必须一致。

由于ORACLE并没有提供类似RESIZE的参数来重新调整REDO LOG FILE的大小,因此只能先把这个文件删除了,然后再重建。又由于ORACLE要求最少有两组日志文件在用,所以不能直接删除,必须要创建中间过渡的REDO LOG日志组。因此,如果只是修改REDO LOG FILE的大小,建议的操作步骤应该如下:

1) 先创建两组新的日志组5、6

2) SWITCH LOGFILE到新创建的日志组5、6

3) 删除旧的日志组1、2、3

4) 重建旧的日志组1、2、3

5) SWITCH LOGFILE到日志组1、2、3

6) 删除过渡的日志组5、6

但本次操作,既要修改原有日志组的大小,又要增加新的日志组,所以省去了中间过渡日志组的操作,操作过程如下:

1) 查看当前日志组的状态,GROUP编号,日志文件所在的位置。

SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG;
    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ----------------
         1          1        500 CURRENT
         2          1        500 INACTIVE
         3          1        500 INACTIVE

SQL> col member for a50
SQL> SELECT GROUP#, MEMBER FROM V$LOGFILE;
    GROUP# MEMBER
---------- --------------------------------------------------
         1 /SDS/u01/app/oracle/oradata/ora11g/redo1.log
         2 /SDS/u01/app/oracle/oradata/ora11g/redo2.log
         3 /SDS/u01/app/oracle/oradata/ora11g/redo3.log

2) 增加新的日志组

SQL> alter database add logfile group 4 '/SDS/u01/app/oracle/oradata/ora11g/redo.4.log' size 500M;
SQL> alter database add logfile group 5 '/SDS/u01/app/oracle/oradata/ora11g/redo.5.log' size 500M;
SQL> alter database add logfile group 6 '/SDS/u01/app/oracle/oradata/ora11g/redo.6.log' size 500M;

查看新增日志组的状态

SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG;
    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ----------------
         1          1        500 CURRENT
         2          1        500 INACTIVE
         3          1        500 INACTIVE
         4          1        500 UNUSED
         5          1        500 UNUSED
         6          1        500 UNUSED
6 rows selected.

可以看到,新增的三组日志GROUP4、5、6,状态为UNUSED。

3) 切换当前的redo log

SQL> ALTER SYSTEM SWITCH LOGFILE; 

4) 查看切换后的状态

SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG;
    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ----------------
         1          1        500 ACTIVE
         2          1        500 INACTIVE
         3          1        500 INACTIVE
         4          1        500 ACTIVE
         5          1        500 ACTIVE
         6          1        500 CURRENT
6 rows selected.

可以看见,现在切换到新增的第6组日志上使用。

5) 改变检查点

SQL> ALTER SYSTEM CHECKPOINT;
System altered.

6) 查看切换后的状态

SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG;
    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ----------------
         1          1        500 INACTIVE
         2          1        500 INACTIVE
         3          1        500 INACTIVE
         4          1        500 INACTIVE
         5          1        500 INACTIVE
         6          1        500 CURRENT
6 rows selected.

可以看见,GROUP1、2、3三组日志状态变成了INACTIVE了,这时候可以删除它们。

7) 删除状态为inactive的日志

SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
Database altered.

SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
Database altered.

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
Database altered.

8) 重建新的GROUP 1、2、3三组日志

SQL> alter database add logfile group 4 '/SDS/u01/app/oracle/oradata/ora11g/redo.4.log' size 1G;
SQL> alter database add logfile group 5 '/SDS/u01/app/oracle/oradata/ora11g/redo.5.log' size 1G;
SQL> alter database add logfile group 6 '/SDS/u01/app/oracle/oradata/ora11g/redo.6.log' size 1G;

这时候创建成功了!

9) 切换测试

SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.

10) 检查切换后的状态

SQL> SELECT GROUP#, MEMBERS, BYTES / 1024 / 1024 BYTE_MB, STATUS FROM V$LOG;
    GROUP#    MEMBERS    BYTE_MB STATUS
---------- ---------- ---------- ----------------
         1          1        1000 INACTIVE
         2          1        1000 INACTIVE
         3          1        1000 INACTIVE
         4          1        500 INACTIVE
         5          1        500 INACTIVE
         6          1        500 CURRENT
6 rows selected.

11) 多切换几次,让他每组日志都使用一遍。

SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.

日志切换没有发生错误,每组日志都能正常使用和切换。顺利结束!

时间: 2024-09-12 08:12:26

在线修改Redo log的大小及增加新的日志组的相关文章

oracle-Redo log频繁切换问题,生成的archivelog文件远小于Redo log设置大小

问题描述 Redo log频繁切换问题,生成的archivelog文件远小于Redo log设置大小 Dear all, 遇到个问题Oracle DB Redo log每分钟差不多切换两次,设置的大小为600MB,但实际切换生成的archivelog文件只有1MB左右. 在alert log每分钟都有alter system archive log的记录,请教各位可能是什么原因造成?

Oracle Online Redo Log能否放在Flash闪存卡上?

Flash 闪存卡的性能远超SAS 盘,所以在数据库中使用广泛. 但是online redo log 是否应该存放在闪存卡上一直是有争议的话题.今天由DBA+社群合肥发起人戴明明来谈一谈他通过理论和实际的实验去测试这个问题.   专家简介     戴明明 DBA+社群合肥发起人   Oracle ACE Associate,中国 ORACLE 用户组(ACOUG) 核心成员,中国浙江应用中间件与数据库用户组成员. 超过7年的DBA经验,在Oracle 高可用性方面有一定的经验积累,擅长Oracl

MySQL · 引擎特性 · InnoDB redo log漫游

前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前,保证之前的redo日志已经写到磁盘. LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数.在 InnoDB 的日志

数据库内核月报 - 2015 / 05-MySQL · 引擎特性 · InnoDB redo log漫游

前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前,保证之前的redo日志已经写到磁盘. LSN(log sequence number) 用于记录日志序号,它是一个不断递增的 unsigned long long 类型整数.在 InnoDB 的日志

【体系结构】Oracle重做日志文件(Redo Log Files)

Oracle重做日志文件 --========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --=========================================   一.oracle中的几类日志文件     Redo log files      -->联机重做日志     Archive log files   -->归档日志     Alert log files     --&

redo log buffer小结

整理自<OCA/OCP认证考试指南> 001     日志重做缓冲区是小型的.用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域."变更向量"是应用于某些对象的修改,执行DML语句会生成应用于数据的变更向量.有了重做日志,数据库就可以确保数据永不丢失:每当数据块发生更改时,都会将应用于块的变更向量写到重做日志,如果需要还原数据文件,则通过重做日志,可以将变更向量提取并应用于数据文件备份. 002     会话服务器进程不将重做记录直接写入重做日志文件,否则,每当执行D

MySQL: 对超长blob列的redo log限制

我们知道,Innodb使用固定长度的N个iblog文件来存储redo log,文件空间可以被复用.这些被复用的空间redo需要保证已经做了checkpoint. 假定我们的iblog大小为1G,如果我们更新一个非常大的字段,就有可能覆盖掉未checkpoint的redo log,因为Innodb并没有根据其可能产生的log长度来判断redo log空间是否够用.而只是保证会预留一定比例的redo log空间.详细见bug链接:http://bugs.mysql.com/bug.php?id=69

【DataGuard】10GR2 DataGuard的几个redo log相关问题

1.备库启动报redo log不存在的问题: 错误信息: Errors in file /home/oracle/admin/kgbdwmyj/bdump/kgbdwmyj_mrp0_11986.trc: ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1: '/oradata/kgbdwmyj/redo02.log' ORA-27037: unable to

archive log文件大小与redo log文件大小关系探究

     首先我们来看下什么是archive log file,oracle 11g 的concept中是这样定义的:When you enable archiving of the online redo logs, Oracle Database copies the online redo log files to another location before they are overwritten. These copied files are referred to as arch