oracle联机重做日志文件(online redo log file)

oracle联机重做日志文件(online redo log file
几乎所有的发生在oracle的内部变化都记录在online  redo log file中,oracle使用 这些 redo log groups 去恢复数据库,因此它们是非常的重要。
联机重做日志文件的主要工作是:
备份数据,
1:记录所有的数据改变
2:提供了一种恢复机制
3:一定是被组织成组的
4:至少有两组联机重做日志文件
 
每一个redo  log 是被分配到 组中, oralce 一次值写一个 online redo log 组, 一旦 这个组中的联机重做日志被填满,oracle 将转换写到下一个联机重做日志组中因此oracle在多个组之间写是一个循环操作。
每一个联机重做日志文件被分配一个唯一的序列号(sequence number)。除非重建数据库,否则 联机重做日志文件的序列号不会出现重复。
我们可以有多个 联机重组偶日志文件在一个组中, 这意味着每一个联机重做日志组包含至少两个 联机重做日志文件, 在组中的每一个文件 成为一个member,每一个 member 应该被分配在不同的磁盘,为了包含这些组文件丢失,oracle 往组里面的member中并发的写信息,一个组的联机重做日志文件是一模一样的,通过LGWR 进程向所有 online redo log file 组中写信息。
组中的每一个member 具有相同的大小,oracle数据在往 redo log file 组中写信息的时候首先分配一个 log sequence numbers,多路复用:一个组里至少两个 member ,避免了redo log files 的单点故障 ,redo log files  中   一个组中包含多个 member,每个组都有一个编号。
当数据库创建的时候 联机重做日志文件即被创建,数据库不能缺少联机重做日志文件, 如果 一个组中的所有的member 丢失了, 数据库也就损坏了,因此保存和备份这些文件是非常重要的, 有两种重做日志 , 第一种: 联机重做日志 第二种:归档日志。
 
什么时候LGWR写 redo log file?
1:当一个事务commit的时候
2:每三秒钟写
3:当 redo log buffer 变成 1/3满的时候要写
4:当 redo log buffer 的大小操作 1M 的信息 要执行写操作
5:在DBWn 一个checkpoints 执行前写。
DBWn 这个进程的作用  查 (把redo log files的信息回写 到 datafiles中)
一定是先写重做日志,再写到数据文件中。
 
联机重做日子文件如何工作:
循环使用,  理解 log switch 的定义。(就是切换不同的组进行写),log switch 引发了 checkpoints  把内存中脏数据回写到数据库文件中叫一个checkpoints
强迫 日志切换(LOG Switches) 和 checkpoints
 
V$log;这个视图是与联机重做日志文件的视图。
 
1、通过v$logfile 查找 数据库的 redo log file 和组;
[sql]
SQL> col member format a50;  
SQL> select group#,type,member from  v$logfile;  
 
    GROUP# TYPE    MEMBER  
---------- ------- --------------------------------------------------  
         3 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO03.LOG  
         2 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO02.LOG  
         1 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO01.LOG  
 
2、手动切换日志的命令
例如:如下例子 第一次查询 组号为 2 的组的status 是 current , 如下执行了  alter  system switch  logfile   命令后 再次进行查询 oracle当前写的组号为  3, 表示进行了 log switch  日志组切换操作,这是通过手工的方式进行切换。
[sql]
SQL> select group#,thread#,sequence#,status from v$log;  
 
    GROUP#    THREAD#  SEQUENCE# STATUS  
---------- ---------- ---------- ----------------  
         1          1        442 INACTIVE  
         2          1        443 CURRENT  
         3          1        441 INACTIVE  
 
SQL> alter system switch  logfile;  
 
系统已更改。  
 
SQL> select group#,thread#,sequence#,status from v$log;  
 
    GROUP#    THREAD#  SEQUENCE# STATUS  
---------- ---------- ---------- ----------------  
         1          1        442 INACTIVE  
         2          1        443 ACTIVE  
         3          1        444 CURRENT  
 
3、控制checkpoints的行为(联机重做日志文件的数据信息 定时写到 数据文件中)
 
到reference 找这个参数:fast_start_mttr_target  指定快速恢复的最大值,最大时间数,规定DBWn进程在多长时间内必须把redo log file中信息写到数据文件中 ,这个参数影响性能的一个重要值,因为它能触动I/O写
 
[sql]
SQL> show parameter fast_start_mttr_target;  
 
NAME                                 TYPE        VALUE  
------------------------------------ ----------- ------------------------------  
fast_start_mttr_target               integer     0  
 
意味着 规定DBWn进程在多长时间内必须把redo log file中信息写到数据文件中,如果需要修改这个时间 用:
[sql]
SQL> alter system set fast_start_mttr_target  = 60  scope = both;  
 
系统已更改。  
 
SQL> show parameter fast_start_mttr_target;  
 
NAME                                 TYPE        VALUE  
------------------------------------ ----------- ------------------------------  
fast_start_mttr_target               integer     60  
 
 
经过以上 alter system set fast_start_mttr_target  =100  scope = both; 表明已经修改,定DBWn进程在60秒内必须把redo log file中信息写到数据文件
 
4、手工回写联机重做日志信息到数据文件中  
需要手工执行如下命令:
[sql]
SQL> alter system checkpoint;  
 
系统已更改。  
 
SQL>  
 
关于对组 和member的操作 参见  click me
 
5、增加 online  redo log  的组  可以使用如下命令
 
如下操作增加了的 redo log 组 组号为4
 
[sql]
SQL> select group#,type,member from  v$logfile;  
 
    GROUP# TYPE    MEMBER  
---------- ------- --------------------------------------------------  
         3 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO03.LOG  
         2 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO02.LOG  
         1 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO01.LOG  
 
SQL> alter  database add  logfile group 4 (‘D:\APP\TOPWQP\ORADATA\ORCL\REDO04.LO  
G‘) size 52429312;  
 
数据库已更改。  
 
SQL> select group#,type,member from  v$logfile;  
 
    GROUP# TYPE    MEMBER  
---------- ------- --------------------------------------------------  
         3 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO03.LOG  
         2 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO02.LOG  
         1 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO01.LOG  
         4 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO04.LOG  
 
SQL>  
 
6、给某个redo log 组 增加  member 命令
 
[sql]
SQL> ALTER DATABASE ADD LOGFILE MEMBER ‘D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG‘ T  
O GROUP 4;  
 
数据库已更改。  
 
SQL> select group#,type,member from  v$logfile;  
 
    GROUP# TYPE    MEMBER  
---------- ------- --------------------------------------------------  
         3 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO03.LOG  
         2 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO02.LOG  
         1 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO01.LOG  
         4 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO04.LOG  
         4 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG  
 
如上所示:  组号 为 4 的 redo log 文件 有两个 member  分别为:  
 
这是两个 组号 为 4  的两个member  这两个  的 log 文件 的 大小 和内容 完全一样。  可以把两个 member放在不同的 磁盘上  disk 上。
D:\APP\TOPWQP\ORADATA\ORCL\REDO04.LOG
D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG
如图:  下图 显示了  group  和 member  的概念  以及显示了 在不同的 磁盘 disk上。
 

7、删除 redo  file member
 
注意要点:
在删除之前保证 一个组里面至少有两个redo log file 即至少有两个member
 
如果你想删除这样  (一个组里面只有一个member) , 是删除不掉member的
 
当删除 完成后 ,不是删除文件,而是 在 control file中登记该
redo file member 不存在了,如果想进一步删除,可以使用操作系统命令删除。
首先查询以下 ,然后删除,然后再查询对比一下    
命令如下:  ALTER DATABASE DROP LOGFILE MEMBER   ‘D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG‘;
[sql]
SQL> select group#,type,member from  v$logfile;  
 
    GROUP# TYPE    MEMBER  
---------- ------- --------------------------------------------------  
         3 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO03.LOG  
         2 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO02.LOG  
         1 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO01.LOG  
         4 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO04.LOG  
         4 ONLINE  D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG  
 
SQL> ALTER DATABASE DROP LOGFILE MEMBER ‘D:\APP\TOPWQP\ORADATA\ORCL\REDO05.LOG‘;  
 
 
数据库已更改。  
 
SQL> select group#,type,member from  v$logfile;

下面linux测试一下:

管理联机日志文件:
联机日志文件以组为单位工作
数据库正常工作至少需要2组日志
联机日志记录所有数据块的变化,用来做实例recover
同一组下可以有多个成员
组之间是切换运行
同一组下的成员之间是镜像关系
默认情况日志成员写满redo时发生切换
日志切换时优先覆盖sequence#最小的组
成员的位置和数量,由控制文件中的指针决定

查看日志组的工作状态:
select * from v$log;

查看日志的物理信息:
select * from v$logfile;

手工切换日志:
alter system switch logfile;
手工产生检查点:
alter system checkpoint;

监控日志切换频率:
select to_char(FIRST_TIME,‘yyyymmddhh24‘) FIRST_TIME,count(*) from v$log_history group by to_char(FIRST_TIME,‘yyyymmddhh24‘) order by 1;

放大成员的尺寸:
alter database add logfile group 4 ‘/u01/app/oracle/oradata/madrid/redo04.log‘ size 100m;
alter database add logfile group 5 ‘/u01/app/oracle/oradata/madrid/redo05.log‘ size 100m;

删除无用组:
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

移动日志文件:
1.数据库要mount
shut immediate
startup mount
2.目标文件要存在
mv /u01/app/oracle/oradata/madrid/redo04.log /home/oracle/redo04.log
3.修改控制文件中的指针
alter database rename file ‘/u01/app/oracle/oradata/madrid/redo04.log‘ to ‘/home/oracle/redo04.log‘;
4.打开数据库
alter database open;

日志文件的多路复用:在同一组下使用多个成员,每组当中只由一个成员可用,数据库就可以正常工作。
alter database add logfile member
‘/u01/app/oracle/oradata/madrid/redo04a.log‘ to group 4,
‘/home/oracle/redo05a.log‘ to group 5;

时间: 2024-10-19 00:22:07

oracle联机重做日志文件(online redo log file)的相关文章

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

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

数据库恢复之丢失联机重做日志文件的恢复

联机重做日志文件用来循环记录ORACLE数据库的所有操作,几乎时刻都在读写,因此单纯备份某个时间点的联机重做日志文件没有意义,恢复时根本用来上.RMAN的备份里根本就没有备份联机重做日志的功能,而且不止RMAN,所有的备份软件都没有备份联机重做日志文件的说法.因此,丢失联机重做日志后的数据库恢复也用不到RMAN. 如果ORACLE数据库在启动时发现丢失某一某一联机重做日志文件,则直接报错.ORACLE通过文件冗余的方式来确保联机重做日志文件的安全.即每组联机重做日志创建 多个文件,至少两个,每个

13_Oracle_Admin_联机重做日志文件和检查点

在数据库中所有的文件都可以丢失,唯有OnlineRedo Log Files和Archive RedoLog Files不可以丢失,否则数据库将无法恢复. 一.什么是联机重做日志文件 联机重做日志文件的主要用于数据库的备份和恢复,它记录了数据的所有变化情况,提供了数据的恢复机制(Oracle在对数据进行操作时,会先写入联机重做日志),它被组织成组,至少有两组日志. Oracle先写第一组,当第一组写满了,再写第二组,依此类推,如果第三组也写满了,就重新从第一组写起,每一组要保证有两个联机重做日志

14_Oracle_Admin_联机重做日志文件的增删改

一.增加联机重做日志的组和组成员 1. 增加组 SQL> desc v$logfile;  Name                                     Null?    Type  ------------------------------------------------- --------------------  GROUP#                                          NUMBER  STATUS              

15_Oracle_Admin_联机重做日志文件的配置和归档

一.配置RedoLog File 上图中的配置存在以下错误: 1.不对称,Group3只有一个成员,这样会导致写入错误: 2.将一组中的多个成员都放在了一个磁盘上,这样不但导致频繁写入的负荷都集中在一个磁盘上,同时也没有实现磁盘的冗余,起不到备份的作用. 有关联机重做日志文件的配置,有如下建议: 1.配多组Redo LogFile,每组至少两个成员,不同的成员放在不同的磁盘上(即使一组中的成员发生了损坏,只要有一个成员还是正常的,数据库就仍然能正常工作).具体的的数量根据具体情况来定,如果数据并

联机重做日志文件 (转)

文章转自:http://www.cnblogs.com/kerrycode/archive/2012/08/09/2631035.html 联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改.它主要用于在发生故障的时候和数据库备份文件配合恢复数据库,一般发生故障有2个情况:一个是介质损坏另外一个是用户误操作.每个数据库至少有两个日志文件组,每组至少包含1个或者多个日志成员,这里要多个日志成员的原因是防止日志文件组内某个日志文件损坏后及时提供

同时丢失参数文件、控制文件及redo log file的不完全恢复(有数据文件的热备和归档)

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30839817 ##########恢复前的准备工作 1.做个热备 select 'alter tablespace '||tablespace_name|| ' begin backup;' ||chr(10)|| 'host cp '||file_name||' /backup' ||chr(10)|| 'alter tablespace '||tablespace_name|| '

ORACLE - 管理重做日志文件

ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志文件更新比较繁忙. 1. 查询日志文件: SQL>select * from v$logfile; SQL>select group# as gid,bytes,status,members from v$log; --status 为current则代表正在使用 2. 在挂载新的磁盘时可考虑创建

ORACLE配置重做日志文件

oracle服务器上已提交的数据都被记录在重做日志文件上,一旦数据库崩溃,就可以使用重做日志文件恢复数据. 查看数据库目前的重做日志文件配置 select GROUP#, SEQUENCE#, BYTES, MEMBERS, STATUS, ARCHIVED from v$log; 结果: 可以看出:目前有3个重做日志组(group),每组一个重做日志文件(MEMBERS),每个文件200M,当前组是第一组. select * from v$logfile; 3个重做文件组都位于同一块盘,同一文