文章目录

  • 前言
  • 一、Oracle为何引入重做日志
  • 二、读取重做日志文件信息
  • 三、判断是否归档
    • 3.1.设置数据库归档模式
  • 四、重做日志组及其管理
    • 1.添加一个重做日志组
    • 2.查询当前重做日志组的使用情况
    • 3.删除联机重做日志组
  • 五、重做日志成员及维护
    • 1.向重做日志组1、2、3添加一个重做日志成员
    • 2.验证日志组的成员数结果
    • 3.验证添加的重做日志组以及对应成员信息
    • 4.删除联机重做日志成员
  • 六、重设联机重做日志的大小
    • 1.查询当前的重做日志组信息
    • 2.查看日志组成员信息
    • 3.删除该日志组
    • 4.重建重做日志组2并修改重做日志文件的大小
    • 5.清除联机重做日志
    • 6.日志切换和检查点事件
    • 7.发生检查点

前言

一、Oracle为何引入重做日志

oracle引入重做日志的原因是进行数据恢复。
数据库高速缓冲区中的数据达到一定的量,或者满足一定条件时,DBWR进程才会将变化了的数据提交到数据库中。
重做日志就是把用户变化了的数据首先保存起来,其中LGWR进程负责把用户更改的数据写到重做日志文件中。
每个重做日志的成员的内容是相同的。

二、读取重做日志文件信息

v$log视图记录了当前数据库的日志组号,日志序列号,每个日志文件的大小,以字节为单位,每个日志组的成员数量,以及日志组的当前状态。
SQL> SELECT t.group#, sequence#, bytes, members, archived, status FROM v$log t;GROUP#  SEQUENCE#     BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- --- ----------------1      10  524288000      1 YES INACTIVE2      11  524288000      1 YES INACTIVE3      12  524288000      1 NO  CURRENTSQL>
v$logfile视图记录了当前日志组号、该日志组的状态、类型和日志组成员信息。
SQL> SELECT group#, status, TYPE, MEMBER FROM v$logfile;GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------------------------------------3         ONLINE  /oradata01/mlbdb1/redo03.log2         ONLINE  /oradata01/mlbdb1/redo02.log1         ONLINE  /oradata01/mlbdb1/redo01.log1 INVALID ONLINE  /oradata01/mlbdb1/redo01_b.log2 INVALID ONLINE  /oradata01/mlbdb1/redo02_b.log3 INVALID ONLINE  /oradata01/mlbdb1/redo03_b.log6 rows selectedstatus参数的含义:
stale:说明该文件内容为不完整的。
空白:说明该日志组正在使用。
INVALID:表示该文件不能被访问。
DELETED:表示该文件已经不在使用。

三、判断是否归档

SQL> archive log list;
Database log mode          Archive Mode
Automatic archival         Enabled
Archive destination        /archlog/mlbdb1
Oldest online log sequence     10
Next log sequence to archive   12
Current log sequence           12
SQL>

3.1.设置数据库归档模式

(1)关闭数据库
shutdown immediate;(2)启动到mount
startup mount;(3)修改归档
alter database archivelog;(4)查看是否归档
archive log list;SQL> archive log list;
Database log mode          Archive Mode
Automatic archival         Enabled
Archive destination        /archlog/mlbdb1
Oldest online log sequence     10
Next log sequence to archive   12
Current log sequence           12
SQL> (5)将数据库打开
alter database open;(6)归档默认存储位置
show parameter db_recovery_file_dest;
SQL> show parameter db_recovery_file_dest;NAME                    TYPE    VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            string  /oracle/fast_recovery_area
db_recovery_file_dest_size       big integer 2000M
SQL> (7)修改归档默认存储位置
SQL> alter system set log_archive_dest_1='location=/archlog/mlbdb1' scope=spfile;
SQL> alter system set log_archive_format='mlbdb1_%t_%s_%r.dbf' scope=spfile;

四、重做日志组及其管理

1.添加一个重做日志组

第一种方法:
SQL> alter database add logfile group 4 ('/oradata01/mlbdb1/redo04.log','/oradata01/mlbdb1/redo04_b.log') size 500M;
Database altered.第二种方法:
SQL> alter database add logfile ('/oradata01/mlbdb1/redo05.log','/oradata01/mlbdb1/redo05_b.log') size 500M;
Database altered.验证是否添加成功
select * from v$logfile;

2.查询当前重做日志组的使用情况

SQL> SELECT t.group#,sequence#,bytes,members,archived,status FROM v$log t;GROUP#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1         10  524288000          2 YES      INACTIVE2         11  524288000          2 YES      INACTIVE3         12  524288000          2 NO       CURRENT4          0  524288000          2 YES      UNUSED5          0  524288000          2 YES      UNUSED

3.删除联机重做日志组

SQL> alter database drop logfile group 4,group 5;
Database altered.SQL> SELECT t.group#,sequence#,bytes,members,archived,status FROM v$log t;GROUP#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1         10  524288000          2 YES      INACTIVE2         11  524288000          2 YES      INACTIVE3         12  524288000          2 NO       CURRENTselect * from v$logfile;
SQL> col MEMBER format a30
SQL> select * from v$logfile;GROUP# STATUS  TYPE    MEMBER                         IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------3         ONLINE  /oradata01/mlbdb1/redo03.log   NO2         ONLINE  /oradata01/mlbdb1/redo02.log   NO1         ONLINE  /oradata01/mlbdb1/redo01.log   NO1 INVALID ONLINE  /oradata01/mlbdb1/redo01_b.log NO2 INVALID ONLINE  /oradata01/mlbdb1/redo02_b.log NO3 INVALID ONLINE  /oradata01/mlbdb1/redo03_b.log NO注意:日志文件必须手工删除
rm -rf /oradata01/mlbdb1/redo04.log
rm -rf /oradata01/mlbdb1/redo04_b.log
rm -rf /oradata01/mlbdb1/redo05.log
rm -rf /oradata01/mlbdb1/redo05_b.log

五、重做日志成员及维护

1.向重做日志组1、2、3添加一个重做日志成员

alter database add logfile member
'/oradata01/mlbdb1/redo03_c.log' to group 3,
'/oradata01/mlbdb1/redo02_c.log' to group 2,
'/oradata01/mlbdb1/redo01_c.log' to group 1;

2.验证日志组的成员数结果

SQL> select group#,sequence#,bytes,members,archived,status from v$log;GROUP#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS
---------- ---------- ---------- ---------- -------- ----------------1         10  524288000          3 YES      INACTIVE2         11  524288000          3 YES      INACTIVE3         12  524288000          3 NO       CURRENT

3.验证添加的重做日志组以及对应成员信息

SQL> select * from v$logfile;GROUP# STATUS  TYPE    MEMBER                         IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------3         ONLINE  /oradata01/mlbdb1/redo03.log   NO2         ONLINE  /oradata01/mlbdb1/redo02.log   NO1         ONLINE  /oradata01/mlbdb1/redo01.log   NO1 INVALID ONLINE  /oradata01/mlbdb1/redo01_b.log NO2 INVALID ONLINE  /oradata01/mlbdb1/redo02_b.log NO3 INVALID ONLINE  /oradata01/mlbdb1/redo03_b.log NO3 INVALID ONLINE  /oradata01/mlbdb1/redo03_c.log NO2 INVALID ONLINE  /oradata01/mlbdb1/redo02_c.log NO1 INVALID ONLINE  /oradata01/mlbdb1/redo01_c.log NO9 rows selected

4.删除联机重做日志成员

删除日志组中的一个日志成员
alter database drop logfile member '/oradata01/mlbdb1/redo01_c.log';验证是否删除成功
SQL> select * from v$logfile where group#=1;GROUP# STATUS  TYPE    MEMBER                         IS_RECOVERY_DEST_FILE
---------- ------- ------- ------------------------------ ---------------------1         ONLINE  /oradata01/mlbdb1/redo01.log   NO1 INVALID ONLINE  /oradata01/mlbdb1/redo01_b.log NO删除日志成员的限制:
1.如果要删除的日志成员是重做日志组最后一个有效的成员,则不能删除,如该日志组中只有一个日志成员。
2.如果该日志组当前正在使用,在日志切换前不能删该组中的成员。
3.如果数据库正在运行在ARCHIVELOG模式,并且要删除的日志成员所属的日志组没有被归档,该组中的日志成员不能被删除。

六、重设联机重做日志的大小

1.查询当前的重做日志组信息

select group#, sequence#, bytes / 1024 / 1024, members, status from v$log;

2.查看日志组成员信息

select * from v$logfile;

3.删除该日志组

alter database drop logfile group 2;

alter system switch logfile;
select group#,sequence#,bytes,members,status from v$log;

alter database checkpoit;
select group#,sequence#,bytes,members,status from v$log;

4.重建重做日志组2并修改重做日志文件的大小

alter database add logfile group 2
('/oradata01/mlbdb1/redo01_a.log','/oradata01/mlbdb1/redo01_b.log'
) size 1024m;
验证是否添加成功,以及日志成员的大小
select group#,sequence#,bytes,members,status from v$log;

5.清除联机重做日志

alter database clear logfile group n;

6.日志切换和检查点事件

alter system switch logfile;
就会触发日志切换。如果处于归档模式,则在将当前写满的日志组归档完成前,不会使用新的重做日志组。

7.发生检查点

alter system checkpoint; 检查点是ORACLE为了减少数据库实例恢复时间而设置得一个事件,当该事件发生时,
LGWR进程将重做日志缓冲区中的数据写入重做日志文件中,
而同时通知DBWR进程将数据库高速缓存中的已经提交的数据写入数据文件,
所以检查点事件越频繁,则用于数据库恢复的重做数据就越少。
检查点事件也修改数据文件头信息和控制文件信息,以记录检查点的SCN。

12.Oracle Redo重做日志管理相关推荐

  1. oracle redo重做,oracle redo 重做日志文件

    以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习目标: 1.解释重做日志文件的目的 2.描述重做日志文件的结构 3.学会控制日志切换与检查点 4.多元化管理重做日 ...

  2. Oracle学习笔记:redo重做日志

    redo重做日志对于oracle来说犹如 肝脏 那么重要,是oracle机能中的排毒恢复健康的重要部件!! 相关的基本概念: 1.scn 2.日志序列号 3.日志组 和 日志 成员,尤其是日志文件的尺 ...

  3. Script:列出Oracle每小时的redo重做日志产生量

    以下脚本可以用于列出最近Oracle数据库每小时估算的redo重做日志产生量,因为估算数据来源于archivelog的产生量和大小,所以数据是近似值,可供参考: WITH times AS(SELEC ...

  4. oracle重做日志教程,Oracle重做日志管理

    Oracle重做日志操作是为了记录数据的改变,提供数据库的恢复,下面就为您介绍重做日志的运行流程,希望对您能够有所帮助. 一.ORACLE引入重做日志目的:记录数据的改变,提供数据库的恢复. 1.日志 ...

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

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

  6. oracle重做日志详解,Oracle的重做日志

    Archive Redo log files--归档重做日志,简称归档日志,指当条件满足时,Oracle将在线重做日志以文件形式保存到硬盘(持久化). 重做日志的简单原理:在数据更新操作commit前 ...

  7. oracle的redolog停止,Oracle Redo Log日志故障处理一则

    Oracle Redo Log日志故障处理一则 某日oracle服务器异常重启,当重启oracle数据时,发现redo log文件被损坏, 且这个日志文件是current状态的,导致数据库无法打开; ...

  8. oracle redo重做,重做日志文件(redo log)

    重做日志文件 redo log file对于oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,也可用于以下工作. 1.1系统崩溃后的实例恢复 1.2通过备份恢复数据文件之后恢复介质 ...

  9. Oracle的重做日志

    Oracle数据库在运行当中,用户更改的数据首先会存放在数据库高速缓冲区当中,为了提升磁盘读写,oracle机制不会频繁的将缓冲区的数据写到磁盘,而是等到检查点或者数据高速缓冲区达到一定数量时才会写入 ...

最新文章

  1. 万豪酒店数据库遭入侵 5亿顾客信息或泄露
  2. 【Android 插件化】恶意软件判定规则 | 恶意软件的范围定义
  3. 【转】asp.net中的WebApplication(web应用程序)和WebSite(网站)
  4. Solution for Lead OPA test error ( add button clicked after cancel button )
  5. Windows 10 版本 21H2 正式发布
  6. 高效程序员应该养成的七个习惯
  7. 牛客16464 神奇的幻方
  8. CCF NOI1004 填充矩形
  9. 参数中带有“”符号问题
  10. 在 github 新建一个文件夹
  11. 关于兰伯特投影得应用问题
  12. 谷歌输入法linux下载官网下载软件,linux下安装谷歌拼音输入法
  13. java中静态数组和动态数组的定义
  14. 决定人生的三种成本:机会成本,沉没成本,边际成本
  15. [转载]快速提高你修养的100句话,值得你珍藏
  16. 【其他笔记】 双屏显示分辨率低下、屏幕闪烁、暗沉等问题。
  17. linux ubuntu 22.04卸载firefox火狐浏览器正确方式
  18. PostGIS搭建、空间数据库创建
  19. html5 连接wifi,aWiFi是什么?
  20. Java面试题总结2020

热门文章

  1. springboot毕业设计 基于springboot医院预约挂号系统毕业设计设计与实现参考
  2. 农业统计分析系列2-试验设计
  3. 大数据BI工具Tableau学习【第一期】:Tableau简介和安装
  4. 30岁转行做什么好?我的转行四大步骤!
  5. Linux快捷方式There was an error launching the application
  6. 基于机器学习算法的LTE高投诉小区预判方法
  7. CSDN博客大神汇总
  8. SAP MM框架协议,合同
  9. 看距离纪念日还有多少天的日历软件 便签自动计算距离纪念日剩余天数
  10. 数据预处理---将文本属性标签转换为数字标签的方法