Oracle重做日志文件
一、联机重做日志的规划管理
1.联机重做日志
记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等)
提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复)
可以被分组管理
11g默认的大小是50M
2.联机重做日志组
由一个或多个相同的联机日志文件组成一个联机重做日志组
至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘)
由LGWR后台进程同时将日志内容写入到一个组的所有成员
LGWR的触发条件
在事务提交的时候(COMMIT)
Redo Log Buffer 三分之一满
Redo Log Buffer 多于一兆的变化记录
在DBWn写入数据文件之前
每3秒钟
3.联机重做日志成员
重做日志组内的每一个联机日志文件称为一个成员
一个组内的每一个成员具有相同的日志序列号(log sequence number),且成员的大小相同
每次日志切换时,Oracle服务器分配一个新的LSN号给即将写入日志的日志文件组
LSN号用于唯一区分每一个联机日志组和归档日志
处于归档模式的联机日志,LSN号在归档时也被写入到归档日志之中
4.日志文件的工作方式
日志文件采用按顺序循环写的方式
当一组联机日志组写满,LGWR则将日志写入到下一组,当最后一组写满则从第一组开始写入
写入下一组的过程称为日志切换
切换时发生检查点过程
检查点的信息同时写入到控制文件
5.日志切换和检查点切换
ALTER SYSTEM SWITCH LOGFILE; --强制产生重做日志切换
ALTER SYSTEM CHECKPOINT; --强制产生检查点
强制设置检查点间隔(单位为秒)
ALTER SYSTEM SET FAST_START_MTTR_TARGET = 900
这个参数的含义是是实例恢复时间不会超过900s
6.添加日志文件组
alter database add logfile
('/u01/app/oracle/oradata/orcl/redo4a.log',
'/u01/app/oracle/oradata/orcl/redo4b.log')
size 50M;
7. 删除日志文件组
一个实例至少需要两个联机日志文件组
活动或当前的日志组不能被删除
组内成员状态有NULL 值或INVALID状态并存,组不可删除
日志组被删除后,物理文件需要手动删除(对于非OMF)
SQL> ALTER DATABASE DROP LOGFILE GROUP ;
SQL> host rm /u01/app/oracle/oradata/orcl/redo4*
8.添加日志成员
alter database add logfile member
'/u01/app/oracle/oradata/orcl/redo1b.log' to group ,
'/u01/app/oracle/oradata/orcl/redo2b.log' to group ;
9.删除日志组成员
不能删除组内的唯一一个成员
不能删除处于active 和current 状态组内的成员
删除处于active 和current 状态组内的成员,应使用日志切换使其处于INACTIVE状态后再删除
对于组内如果一个成员为NULL 值,一个为INVALID,且组处入INACTIVE,仅能删除INVALID状态成员
删除日志成员,物理文件并没有真正删除,需要手动删除
删除日志文件后,控制文件被更新
对于处于归档模式下的数据库,删除成员时确保日志已被归档,查看v$log视图获得归档信息
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo2b.log';
SQL> host rm '/u01/app/oracle/oradata/orcl/redo2b.log'
10.日志的重定位及重命名
所需权限
ALTER DATABASE 系统权限
复制文件到目的位置操作系统权限(写权限)
CURRENT状态组内的成员不能被重命名
建议该行为之前备份数据库
重命名或重定位之后建议立即备份控制文件
重定位及重命名的两种方法
1.添加一个新成员到日志组,然后删除一个旧的成员
2.使用ALTER DATABASE RENAME FILE 命令(不区分归档与非归档模式)
复制联机日志文件到新路径:ho cp <oldfile> <newfile>
执行ALTER DATABASE RENAME FILE '<oldfile>' TO '<newfile>'
对于处于CURRENT状态的需要改名且不切换的情况下
办法是切换到MOUNT状态下再执行上述操作
11. 清空日志组
清除日志后,日志序列号将会变为0,所以应该尽快做一个全备份,因为oracle进行数据库恢复时要求重做日志序列号是连续的。
ALTER DATABASE CLEAR LOGIFLE GROUP n
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n --使用unarchived 避免归档
12. 与日志有关的动态性能视图
V$LOG
V$LOG中STATUS的状态值
UNUSED: 从未对该联机日志写入任何内容,一般为新增加联机日志文件或是使用resetlog后的状态
CURRENT:当前重做日志文件,表示该重做日志文件为活动状态,能够被打开和关闭
ACTIVE:处于活动状态,不属于当前日志,崩溃恢复需要该状态,可用于块恢复,可能归档,也可能未归档
CLEARING:表示在执行alter database clear logfile命令后正将该日志重建为一个空日志,重建后状态变为unused
CLEARING_CURRENT:当前日志处于关闭线程的清除状态。如日志某些故障或写入新日志标头时发生I/O错误
INACTIVE:实例恢复不在需要联机重做文件日志组,可能归档也可能未归档
V$LOGFILE
V$LOGFILE中STATUS的状态值
INVALID :表明该文件不可访问
STALE :表明文件内容不完全
DELETED : 表明该文件不再使用
NULL :表明文件正在使用
v$log_history
可以回去重做日志切换的时间及间隔,一般将重做日志文件的切换间隔在20~30分钟,这对多数数据库系统都是可以接受的。
二、演示
查看当前数据的日志
SQL> select group#,sequence#,members,bytes// MB,status,archived from v$log; GROUP# SEQUENCE# MEMBERS MB STATUS ARCHIVED
---------- ---------- ---------- ---------- ---------------- -------
INACTIVE YES
CURRENT NO
INACTIVE YES
SQL> col member for a55
SQL> set line 120
SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_
---------- ------- ---------- ------------------------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log NO
添加日志组
SQL> alter database add logfile
2 ('/u01/orcl/onlinelog/redo4a.log',
3 '/u02/orcl/onlinelog/redo4b.log',
4 '/u03/orcl/onlinelog/redo4c.log')
5 size 50M; 数据库已更改。
查看日志组
SQL> select group#,sequence#,members,bytes/1024/1024 MB,status,archived from v$log; GROUP# SEQUENCE# MEMBERS MB STATUS ARC
---------- ---------- ---------- ---------- ---------------- ---
1 25 1 50 INACTIVE YES
2 26 1 50 CURRENT NO
3 24 1 50 INACTIVE YES
4 0 3 50 UNUSED YES
删除非当前日志组
SQL> alter database drop logfile group 1; 数据库已更改。
删除当前日志组
当日志组变为inactive时才可以删除
SQL> alter system switch logfile; 系统已更改。
SQL> alter system checkpoint; 系统已更改。
###检查状态是否变为inactive
SQL> alter database drop logfile group 2;
添加日志组成员
alter database add logfile member '/u01/orcl/onlinelog/redo2d.log' to group 2;
删除日志组成员
alter database drop logfile member '/u01/orcl/onlinelog/redo2d.log';
Oracle重做日志文件的更多相关文章
- oracle重做日志文件硬盘坏掉解决方法
rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...
- 初识oracle重做日志文件
转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...
- ORACLE - 管理重做日志文件
ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...
- ORACLE 移动数据文件 控制文件 重做日志文件
ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...
- Oracle 联机重做日志文件(ONLINE LOG FILE)
--========================================= -- Oracle 联机重做日志文件(ONLINE LOG FILE) --================== ...
- oracle redo 重做日志文件
以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习目标:1.解释重做日志文件的目的2.描述重做日志文件的结构3.学会控制日志切换与检查点4.多元化管理重做日志文件5 ...
- ORACLE告警日志文件
告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...
- Oracle重做日志恢复数据模拟实验
一 系统环境: 1.操作系统:oracle Linux 5.6 2.数据库: Oracle 11g 二 Oracle 重做日志的作用: [模拟介质恢复] 1. 关闭数据库归档模式: [oracle@t ...
- oracle redo日志文件损坏恢复
参考:How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1) 在线重做日志文件丢失后 ...
随机推荐
- [knowledge][basic][hardware] 内存的硬件结构(转)
写的并不太易懂,但概念性的科普已足够. 原文地址:http://blog.csdn.net/miaomao1989/article/details/51508195 Memory中的Channel/R ...
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出).Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQ ...
- APP在iOS和Android的推送规则
因为iOS和Android不同的规则,下边将iOS和Android能接收到通知的详细情 形进行说明(前提:APP已经在设备上安装并登录过): iOS: APP未 ...
- SQL Server 索引中include的魅力(具有包含性列的索引)
2010-01-11 20:44 by 听风吹雨, 22580 阅读, 24 评论, 收藏, 编辑 开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [ ...
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- LaTeX学习教程
本来我对LaTeX不是看好的,毕竟都是命令格式的.觉得有word就足够啦word可视化操作方便快捷. 但是由于要写论文等,在导师要求下潜心学习一下,不知不觉间被LaTeX的强大功能所吸引.现在很多出版 ...
- 感冒了~ vs中py和vb实现一个小算法
1+1*2+1*2*3+--+1*2*3*n 下面是窗体,就一个按钮和编辑框. 中途还遇到了编码问题,但是感冒太难受,加上明天还要上课.就睡了~ 晚安世界.
- windows安装TortoiseGit详细使用教程
标签:tortoisegit 环境:win8.1 64bit 安装准备: 首先你得安装windows下的git msysgit1.9.5 别下载错,不习惯英文的朋友,也可以下个语言包] 一.安装图解: ...
- meta标签详解(meta标签的作用)///////////////////////////转
meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 ...
- java 8增强的包装类
---恢复内容开始--- 1java为8个类型提供了对应的包装类.因为这8个类型并不是类或者对象,他们原本是不应该存在在java里的(这里说的只是原本),这里要强调的是,java允许把基本类型的值直接 ...