`
wanglihu
  • 浏览: 917554 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

在线修改redo.log文件的大小

阅读更多
1.查看当前日志组成员:
SQL> select member from v$logfile;

MEMBER
------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG
2.查看当前日志组状态:
SQL> select group#,members,bytes/1024/1024,status from v$log;

    GROUP#    MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
         1          1              50 INACTIVE
         2          1              50 INACTIVE
         3          1              50 CURRENT
       
现有三个日志组,每个组内有一个成员,每个成员的大小为50MB,现在想把此三个日志组的成员大小都改为100MB ,步骤如下:

1、创建2个新的日志组
SQL> alter database add logfile group 4 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO04.LOG') size 100MB;
SQL> alter database add logfile group 5 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO05.LOG') size 100MB;

2、切换当前日志到新的日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> select group#,members,bytes/1024/1024,status from v$log;

    GROUP#    MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------------
         1          1              50 ACTIVE
         2          1              50 ACTIVE
         3          1              50 ACTIVE
         4          1             100 CURRENT
         5          1             100 ACTIVE

3、删除旧的日志组
SQL> alter database drop logfile group 1;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;

4、操作系统下删除原日志组1、2、3中的文件REDO01.LOG、REDO02.LOG、REDO03.LOG。

5、重建日志组1、2、3
SQL> alter database add logfile group 1 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO01.LOG') size 100MB;
SQL> alter database add logfile group 2 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO02.LOG') size 100MB;
SQL> alter database add logfile group 3 ('C:\ORACLE\PRODUCT\10.2.0\ORADATA\FYDB\REDO03.LOG') size 100MB;

6、切换日志组
SQL> alter system switch logfile;
SQL> alter system switch logfile;

7、删除中间过渡用的日志组4、5
SQL> alter database drop logfile group 4;
SQL> alter database drop logfile group 5;
SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 UNUSED
         2 UNUSED
         3 UNUSED
         4 INACTIVE
         5 CURRENT

8、到操作系统下删除原日志组4、5中的文件

9、备份当前的最新的控制文件
SQL> conn / as sysdba
SQL> alter database backup controlfile to trace resetlogs;

(注意:如果为安全考虑每个group可以多加几个文件)
==============================
跟redo logfile有关的其它数据库参数    
1、log_buffer
   log_buffer是ORACLE SGA的一部分, 所有DML命令修改的数据块先放在log_buffer里, 如果满了或者到了check_point时候通过lgwr后台进程写
   到redo logfile里去。它不能设得太大,这样在意外发生时会丢失很多改变过的数据。它最好不要大于512K或者128K*CPU个数。
我们可以用下面的SQL语句检测log_buffer使用情况:       
   SQL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio"
from v$sysstat rbar,v$sysstat re
where rbar.name='redo buffer allocation retries'
and re.name='redo entries';
       这个比率小于1%才好,否则增加log_buffer的大小
2、log_checkpoint_interval
   Oracle8.1 版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
   checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
   一般UNIX操作系统的数据块为 512 bytes。
   从性能优化来说log_checkpoint_interval = redo logfile size bytes / 512 bytes
3、log_checkpoint_timeout
   Oracle8.1 版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
   Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout = 0
log_checkpoint_timeout = 900

Redo Log Buffer
redo log buffer 可以循环使用,存放数据库改变牵涉的信息,其内部放的是redo entry。
redo entry存放的是INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 等操作对数据库的改变信息,这些信息在recovery的时候是很重要。这些redo entry
由oracle server进程从用户内存放到redo buffer。

LGWR(Log writer)
LGWR(Log writer)是oracle启动时候必须启动的进程,它负责把redo log buffer中的redo entry写到redo log文件中。
在如下情况下写文件:
- redo log buffer 三分之一满了
- 达到某时间点
- 在 DBWR w把修改的数据块写到数据文件之前写redo log file
- 事务commit的时候
- 在数据库做归档redo log 文件的时候

Redo Log file
redo log就是存放redo log 信息的文件了,至少有两个redo log 组,oracle循环使用之。当然推荐有更多的redo log 组。既然是循环使用redo log,
必然会有一个log switch的过程。

log switch发生在:
- log file 已经写满了
- 使用了ALTER SYSTEM SWITCH LOGFILE 命令

在log switch 的时候自动会做checkpoint。

只要redo log组里面有一个redo log file可以用,就能进行log switch。当然如果redo log file坏了,LGWR肯定会记录到 trace和alert文件.

关于redo log的设置
一般至少两组redo log 文件,
每组中的redo log文件最好在不同的磁盘上,防止一起损坏。
每组中的redo log文件必须大小一致,它们是同时修改的。
不同组的redo log文件大小不一定一致。
每组的redo log文件数目必须一致。


修改redo log的位置
- 看看当前的redo log文件是不是正在使用,如果在使用如下命令
ALTER SYSTEM SWITCH LOGFILE;
- 把该文件copy到你想要放到位置
- ALTER DATABASE RENAME FILE ’filename’ TO filename’

增加redo log 文件
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ ’filename’ [REUSE]
[, ’filename’ [REUSE]]...
TO {GROUP integer
|(’filename’[, ’filename’]...)
}

删除redo log 文件
如果redo log 文件是invalid状态,可以删除之
ALTER DATABASE [database] DROP LOGFILE MEMBER ’filename’[, ’filename’]...

相关数据字典
察看
v$log
v$logfile
v$log_history

分享到:
评论

相关推荐

    ORACLE 修改redo日志文件 大小的方法

    在开始修改redo日志文件大小之前,首先需要了解redo日志文件的基本概念。redo日志文件是Oracle数据库用于记录所有数据更改(即事务)的一种特殊文件。每当有数据修改时,Oracle会首先将这些更改写入redo日志文件,...

    Oracle DG下修改redo log和standby redo log日志大小.txt

    Oracle DG下修改redo log和standby redo log日志大小.txt

    rac数据库修改redolog日志组大小及数量.docx

    - `SIZE`: 指定每个Redo Log文件的大小。 - `'+DATA/pracdb1/onlinelog/redo05_1.log'` 和 `'+FLASH/pracdb1/onlinelog/flash05_1.ora'` 分别指定了Redo Log文件的实际位置。 ##### 2. 切换Redo Log日志组 在进行...

    42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.pdf

    在MySQL中,redo log并非简单地一条一条写入磁盘文件,而是采用了更为高效和复杂的方式来组织和存储日志数据。 首先,当数据库执行CRUD(创建、读取、更新、删除)操作时,数据页(存储实际数据的单元)首先从磁盘...

    行业-42 redo log是直接一条一条写入文件的吗?非也,揭秘redo log block.rar

    redo log分为在线redo log(online redo log)和归档redo log(archived redo log),前者是正在使用的日志,后者是已滚动并保存的历史记录。 在大多数数据库系统中,redo log并不是一条一条记录写入文件,而是以...

    oracle改redo日志方法.doc

    Oracle数据库的重做日志(Redo Log)是记录所有事务对数据进行修改的历史记录,用于在系统崩溃或介质故障时恢复数据。重做日志的管理是数据库维护中的重要环节,因为它直接影响到数据库的可用性和性能。以下是关于...

    行业-43 直接强行把redo log写入磁盘?非也,揭秘redo log buffer.rar

    当一个事务修改数据时,这些修改不会立即写入到磁盘上的数据文件,而是先被记录在redo log buffer中。这样做有两个主要目的:提高性能,因为内存操作比磁盘操作快得多;以及确保数据的一致性,即使在系统崩溃或异常...

    hex格式redo log解析

    在给定的数据中,`00 22` 表示这是一个redo log文件,`00 02` 指定了块大小为512字节。接着的`00 90 01 00` 表示文件中的块数,而`7D 7C 7B 7A` 是Oracle特有的MAGIC值,用于验证文件是否为有效的Oracle文件。 接...

    undo&redo;.docx

    撤销日志文件通常以REDO01.LOG、REDO02.LOG、REDO03.LOG等命名,并存储在数据库的数据文件路径下,如E:\APP\ADMINISTRATOR\ORADATA\ORCL。你可以通过查询动态性能视图V$LOGFILE来查看当前的撤销日志文件信息: ```...

    Redo Log之一:理解Oracle redo log

    Redo日志文件包含的数据内容包括所有的DML操作(如INSERT、UPDATE、DELETE、SELECT FOR UPDATE)和DDL语句造成的数据字典对象的更改。从Oracle 9i版本开始,DDL语句也被包括在redo日志中。 Oracle redo log的写入...

    行业-41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.rar

    Innodb_log_buffer存储最近的更改,当其达到一定大小或者事务提交时,会将内容刷新到磁盘上的redo log file。 redo log file的结构通常是循环写入的,分为两个部分:当前活动的日志段(Current Log Segment)和已...

    行业-44 redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?l.rar

    5. **DBWn(Database Writer)进程**:虽然DBWn进程主要负责将数据块从缓存写入数据文件,但它也会触发日志写入,特别是在数据块修改后,为了保持数据文件与redo log的一致性。 理解redo log buffer的写入时机对于...

    Oracle数据库管理员的常用命令

    ` 更改redo log文件的名称。 6. **Dropping Online Redo Log Group**: `alter database drop logfile group 3;` 删除指定的redo log文件组。 7. **Dropping Online Redo Log Members**: `alter database drop ...

    redo 维护 oracle

    适当的redo log文件大小和数量取决于数据库的写入负载。过大可能导致不必要的磁盘I/O延迟,过小则可能导致频繁的日志切换。管理员应根据实际需求调整这些参数。 6. **归档模式与非归档模式** 在非归档模式下,旧...

    常用sql语句

    这条命令用于向数据库中添加一个新的日志文件组,编号为4,包含两个成员文件`redo04a.log`和`redo04b.log`,每个文件大小设定为20MB。 2. **添加日志文件成员至现有组**: ```sql SQL> alter database add log...

    oracle重做日志文件管理.pptx

    创建新的重做日志文件组使用`ALTER DATABASE ADD LOGFILE [GROUP 正整数] 文件名`语句,例如,要添加名为"redo04_1.log"和"redo04_2.log"的两个文件到组4,每个大小为10MB,可以执行`ALTER DATABASE ADD LOGFILE ...

    (完整word版)ORACLE11G搭建DATAGUARD步骤.doc

    添加的日志文件包括 redo04.log、redo05.log、redo06.log 和 redo07.log,每个文件大小为 50M。 2.3 修改参数文件 2.3.1 生成 PFILE 使用 CREATE PFILE 语句生成参数文件,从 spfile 生成 pfile。 2.3.2 修改 ...

    oracle六种物理文件.pdf

    4. **控制文件大小管理**:通过设置`MAXDATAFILES`、`MAXLOGFILES`等参数来控制控制文件的大小和数量。 #### 二、创建与管理控制文件 1. **初始化控制文件**:可以通过指定`control_files`参数来创建控制文件,并...

    重置在线重做日志(迁移)

    在线重做日志(Online Redo Log)是Oracle数据库中用于记录所有事务更改的关键组件之一。每当数据库发生任何变更时,这些更改会被记录到重做日志文件中。这些文件对于数据库恢复过程至关重要,因为它们包含着所有...

    Oracle日志介绍

    频繁的redo log切换可能表明存在checkpoint not complete等问题,需检查alert日志并监控系统I/O状态,必要时增大redo log文件大小以改善性能。 #### 四、redo log状态解析 v$log视图提供了redo log的当前状态信息...

Global site tag (gtag.js) - Google Analytics