`
sjk2013
  • 浏览: 2186359 次
文章分类
社区版块
存档分类
最新评论

存储结构之重做日志文件

 
阅读更多

重做日志文件,可分在线重做日志文件和归档重做日志文件。它是个数据库的事务日志。目的在于失败时恢复已提交的事务。你在oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。

当主机掉电时,你可借助在线重做日志文件,将系统恢复到掉电前的时刻;当磁盘损坏时,你可借助归档重做日志文件恢复到适当的时点;当你误删了某些重要的信息并且提交时,你同样可借助他们去帮你恢复到误删前的那个时刻。

“在重用重做日志之前,失败时应该不需要的重做日志文件的内容”,如果oracle不能肯定这一点,就会暂时挂起数据库,建立检查点,将缓冲区缓存内的redo保护的数据安全地写入磁盘。oracle并非把database_buffer_cache内修改的数据写入磁盘,相反地,它是把redo log buffer里的redo entry flush到在线重做日志文件中。只要修改的块,被缓存而未被写入磁盘,数据库失败时,就需要重做日志文件的内容,然则,却是不可以重用重做日志文件。比如,日志却的时候,填满日志1却换到日志2时,DBWn会建立检查点,把日志1所保护的所有脏块写入磁盘,在这之前,oracle不能重用这个日志文件。否则,在alert日志会报,检查点未完成。出现这个消息时,数据库会挂起,DBWn正忙于完成它建立的检查点。

每个oracle数据库,分散风险的做法是设置3路磁盘通道。每路在设置上该注意什么呢?主要是从高峰负载,平均恢复时间,大量用户修改相同块这几个因素入手。
1)日志组的数量?
太少会有等待事件
2)日志成员大小?
太小了,会频繁却换,产生检查点,性能低;太大了,不安全,数据都在一个地方存放
3)成员对称否?
成员应该设置成同样大小,镜像的数量也应该一致。否则,算法会有剧烈抖动。(注意了,这里是应该,而不是一定哦)

确定有多少个日志组?
SQL> select group# from v$log;

GROUP#
----------
1
2
3
有多少个镜像?
SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_7xzskcdd_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_7xzskh9o_.log
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_7xzsk47l_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_2_7xzsk7of_.log
/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_7xzsjx1g_.log
/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_7xzsk0ph_.log

增加一个日志组?若使用OMF,则添加一个组后,oracle会自动为你添加成员。
alter database add logfile group 4(‘filename’,‘filename’) size 100;
如:
SQL> alter database add logfile group 4 size 100m;

Database altered.

SQL> select group# from v$log;

GROUP#
----------
1
2
3
4

删除时把add换成drop即可。current的重做日志文件不能删除,若要删除,可以使用alter system switch logfile。删除后,操作系统的文件是仍然存在的(OMF除外),把操作系统上的文件一块删除才会比较干净的除去。

如何添加一个成员?
alter database add logfile member
'filename' to group 1,
'filename' to group 2,
'filename' to group 3;

刚加的组的状态是unused。
SQL> select group#,bytes/1024/1024 m from v$log;

GROUP# M
---------- ----------
1 50
2 50
3 50

SQL> alter database add logfile group 5 size 50m;

Database altered.

SQL> select group#,status from v$log;

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

日志成员有几个状态在此稍微说明一下:
active:被RBA指针覆盖的,但不在这里面写。RBA挪开,则是inactive。
current:被RBA指针覆盖的,但正在写。
inactive:表示实例恢复已不再需要这组重做日志文件了。
unused:表示oracle从没用过该重做日志文件组。
日志却会有active。

如果组内只有一个成员,则组与成员的概念没有区别。组就是成员,成员就是组。总之,组间却换,组内镜像。

server process负责把redo entry写到redo log buffer中,而LGWR则负责将redo entry flush到在线重做日志文件。那么LGWR什么时候会写呢?
1)每3秒
2)1/3满
3)1M redo entry
4)commit
5)DBWn写之前写

分享到:
评论

相关推荐

    Oracle数据库维护培训

    在线重做日志文件的结构 控制日志文件切换和检查点执行 多路复用在线重做日志文件 创建新的数据库用户 修改和删除存在的数据库用户 监控已存在用户的信息 识别系统和对象权限 授予和回收权限 创建和管理初始化参数...

    解析学习Oracle架构所应了解的基础知识

    Oracle的物理结构由由控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件组成。一个数据库中的数据存储在磁盘上物理文件,被使用时,调入内存。其中控制文件、数据文件、重做日志文件、跟踪文件及警告...

    Oracle体系结构(学习笔记)

    重做日志文件:用于记录数据库的变化,用户的事务处理日志当进行例程或者介质恢复时,需要重做日志文件如果没有重做日志文件,恢复的唯一方法就只能从最后一次完整备份中恢复2.归档日志文件:可以保留所有的重做历史...

    [详细完整版]数据库习题.docx

    在后台进程中,哪一个用于负责将重做日志缓冲区中的内容写入重做日志文件中B A. SMON B. DBWR C. LGWR D. PMON 2.用来设置系统启动时重做日志缓冲区大小的初始化参数为 C A. SHARED_POOL_SIZE B. LARGE_POOL_SIZE C....

    Oracle9i数据库系统概述.pdf

    数据文件(datafile) 重做日志文件(redolog file) 控制文件(control file) 1、数据文件------存储了基表数据、索引数 据、回退数据、临时数据、以及数据字典 基表数据。每个数据库至少由一个或多个 数据文件...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    7 维护重做日志文件 目标 7-2 使用重做日志文件 7-3 重做日志文件的结构 7-4 重做日志是如何工作的 7-5 强制日志切换和检查点 7-6 增加联机重做日志组 7-7 增加联机重做日志成员 7-8 删除联机重做日志组 7-9 删除...

    达梦体系结构的学习

    达梦体系结构的学习达梦逻辑存储结构达梦物理存储结构配置文件控制文件数据文件重做日志文件备份文件归档日志文件跟踪文件事件日志文件达梦线程的管理 达梦逻辑存储结构 达梦数据库的逻辑单元从大到小依次为:数据库...

    Oracle.9i数据库管理员指南(PDF)

    9,使用Logminer来分析重做日志文件 10,管理作业队列 11,管理表空间 12,管理数据文件 13,管理撤消空间 第3部分,模式对象 14,管理模式对象空间 15,管理表 16,管理索引 17,管理分区表和分区索引 18,管理簇 ...

    oracle 优化培训资料

    逻辑结构包括表空间(tablespaces), 段(segments), 区(extents),和数据块(data blocks)....4、LGWR (日志写入程序) 把重做日志缓冲区的内容写入重做日志文件 5、ARCH (检查点进程) 用来减少执行实例恢复所需的时间

    OCA认证考试指南(1Z0-052)

    17.2 使用数据恢复顾问执行恢复(控制文件、重做日志文件和数据文件) 17.3 小结 17.4 本章测试题 第18章 移动数据 18.1 描述和使用数据移动方法(sql loader、目录对象和外部表) 18.2 解释oracle data pump...

    9i管理课程

    9i的管理课程的文档,pdf格式,主要内容包括Oracle体系结构组件、Oracle服务器入门、管理Oracle例程、创建数据库、使用数据字典和动态性能视图、维护控制文件、维护重做日志文件、管理表空间和数据文件、存储结构和...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    3.7 重做日志文件 95 3.7.1 在线重做日志 96 3.7.2 归档重做日志 98 3.8 密码文件 100 3.9 修改跟踪文件 103 3.10 闪回日志文件 104 3.10.1 闪回数据库 104 3.10.2 闪回恢复区 105 3.11 DMP文件(EXP/IMP...

    Oracle数据库管理员技术指南

    3.3.2 创建几个大的联机重做日志文件 3.3.3 导入过程中关闭归档方式 3.3.4 分开导出转储文件、数据表空间、 回退段和联机重做日志文件 3.3.5 最小化检查点 3.3.6 单独创建索引 3.3.7 设置大的初始化参数 SORT_...

    SQLServer数据库体系结构

    SQLServer服务器可以看成是由实例及数据库构成。...每个数据库包括数据文件及重做日志文件,SQL Server数据库不包含控制文件。Oracle服务器=一个Oracle实例+一个数据库 SQLServer服务器=一个SQLServer实例+多

    4-Hash存储引擎1

    Hash存储引擎设计目标概要设计内存管理缓存方案文件结构基本操作插入或更新删除查找辅助操作持久化操作重做日志正常停止正常启动断电重启垃圾回收设计目标数据持久化到

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    1.2.2 联机重做日志 1.2.3 System表空间 1.2.4 Sysaux表空间 1.2.5 默认的临时表空间 1.2.6 Undo表空间 1.2.7 服务器参数文件 1.2.8 后台进程 1.2.9 数据库管理员 1.3 Oracle Database 11g的基本数据类型 1.3.1 ...

    oracle10g课堂练习II(2)

    练习概览:恢复丢失的 TEMPFILE 和重做日志文件 4-19 5 数据库恢复 课程目标 5-2 恢复方法 5-3 用户管理的恢复: RECOVER 命令 5-4 RMAN 恢复: RESTORE 和 RECOVER 命令 5-5 使用 Oracle Enterprise Manager ...

Global site tag (gtag.js) - Google Analytics