转自 http://blog.csdn.net/indexman/article/details/7746948

以下易容翻译自oracle dba官方文档,不足之处还望指出。

管理重做日志文件

学习目标:
1.解释重做日志文件的目的
2.描述重做日志文件的结构
3.学会控制日志切换与检查点
4.多元化管理重做日志文件
5.使用OMF管理重做日志文件

1.概念介绍:
重做日志文件通过记录数据的所有改变情况对系统或介质故障提供恢复机制。
1)重做日志文件以组的形式存在
2)一个oracle数据库至少需要两组,每组至少有一文件
3)在一组里的每一重做日志文件叫做成员
The redo log files are used only for recovery.

2.重做日志文件结构:

1)重做日志文件组
a.一组相同的副本联机重做日志文件被称为一个联机重做日志组。
b.LGWR进程并发的往日志组里所有重做日志文件写入相同信息
2)重做日志文件
a.一个组每个成员用于同一log sequence numbers和相同的大小
b.每次oracle服务器开始写入日志组时分配日志序列号来唯一标识每个重做日志文件
c.当前的日志序列号存储在控制文件和所有数据文件的头部

3.重做日志如何工作?

1)重做日志以循环的方式使用
2)当一个重做日志文件写满,LGWR进程将移动到下一日志组
a.这一步骤叫做log switch
b.checkpoint在此时发生
c.信息被写入控制文件中
3)以下情况将触发LGWR进程写操作:
a.当commit事务发生
b.当redo log buffer存储达到1/3
c.当重做日志缓冲区有超过一个兆字节的更改记录
d.在DBWn将buffer cache修改过的数据块的信息写入到数据文件之前

4) 以下情况发生check point:
a.每次日志切换时
b.实例通过normal,transactional,immediate选项关闭时
c.通过设置初始化参数FAST_START_MTTR_TARGET强制发生
d.数据库管理员手工设置ALTER SYSTEM CHECKPOINT、alter tablespace ,datafile offline
e.使用alter tablespace[OFFLINE NORMAL|READ ONLY|BEGIN BACKUP] 语句导致指定数据文件发生检查点

注:如果参数LOG_CHECKPOINTS_TO_ALERT 设置为true,则每次检查点信息将记录在alert_SID.log文件中.

4.如何增加、删除重做日志文件(组)?

a.增加重做日志文件组:
ALTER DATABASE ADD LOGFILE GROUP 3 ('$HOME/ORADATA/u01/log3a.rdo',
 '$HOME/ORADATA/u02/log3b.rdo') SIZE 1M;

b.增加重做日志文件:
ALTER DATABASE ADD LOGFILE MEMBER
'$HOME/ORADATA/u04/log1c.rdo' TO GROUP 1,
'$HOME/ORADATA/u04/log2c.rdo' TO GROUP 2,
'$HOME/ORADATA/u04/log3c.rdo' TO GROUP 3;

c.删除重做日志文件组:
ALTER DATABASE DROP LOGFILE GROUP 3;

d.删除重做日志文件:
ALTER DATABASE DROP LOGFILE MEMBER '$HOME/ORADATA/u04/log3c.rdo';

5.清理,重新分布或重命名重做日志文件?

a.清理重做日志文件
ALTER DATABASE CLEAR LOGFILE '$HOME/ORADATA/u01/log2a.rdo';

b.重新分布或重命名重做日志文件
通过删除旧日志文件,新增新日志文件实现。

6.如何获取oracle数据库日志组和成员信息?
△V$LOG
△V$LOGFILE

从控制文件获取重做日志文件信息:
SELECT group#, sequence#, bytes, members, status
FROM v$log;

7.详细语句见下方:

------------------------------------------------------
[转载]
1:查看数据库在线重做日志文件的归档方式
ARCHIVE LOG list;
2:查看日志组
SELECT * FROM v$log;
3:查看日志组成员
SELECT * FROM v$logfile;
--备注:经分系统BONCBI数据库日志没做归档就不说了,既然只有3个日志组,而且既然每个日志组只有一个成员,悲剧啊!
4:新增一个日志组:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_vgdb9_data22','/dev/rlv_vgdb9_data23','/dev/rlv_vgdb9_data24') SIZE 8191m;
--这样,就最增一个日志组,且这个日志组里有3个成员每个成员8191MB大小。
5:给某个日志组新增一个成员
ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_vgdb9_data25' TO GROUP 4;
--注意,这里不需要指定日志组成员的大小。
6:删除日志组
ALTER DATABASE DROP LOGFILE GROUP 4;
--注意:当前日志组不能删,活动的日志组不能删,没有归档的日志组不能删。
7:删除日志组成员
ALTER DATABASE DROP LOGFILE MEMBER '/dev/rlv_vgdb9_data25';
--注意:每个组至少要保留一个成员;
8:两个概念需要注意:
8.1:日志切换
ALTER SYSTEM SWITCH LOGFILE;
--所谓日志切换就是停止写当前组,转而写一个新组,系统可以自动发生,也可以手工完成。
--当发生SWITCH LOGFILE时,系统会在后台完成CHECKPOINT的操作
--手动切换日志组
--日志组A:当前正在写。
--日志组B:可写。
--CHECKPOINT保证控制文件,数据文件头,日志文件头的SCN一致是数据库保持数据完整性的一个重要机制
--手动切换日志组后,ORACLE开始往日志组B写日志,并进行一次CHECKPOINT,把日志组A里没有经过CHECKPOINT的那部分日志对应的DIRTY BUFFER从BUFFER CACHE里写到
--数据文件里。CHECKPOING完成后
--日志组A:可写。
--日志组B:当前正在写。
--另外,ALTER TABLESPACE USER BEGIN BACKUP,DROP TABLE,TRUNCATE TABLE都会引发CHECKPOINT操作
--除了以上所手动,及自动CHECKPOINT之外,还可以通过一些参数来控制CHECKPOINT
--FAST_START_MTTR_TARGET(MTTR:数据恢复的时间间隔)
--checkpoints用来同步,同步频率越高,发生系统错误时所需RECOVERY时间越短
--同步相关的参数:FAST_START_MTTR_TARGET(数据库通过它来改变后面3个参数),fast_start_io_target,log_checkpoint_interval,log_checkpoint_timeout
9:初始化日志文件
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE '/dev/rlv_vgdb9_data25';
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 5(清空没有归档的日志文件,实际备份产生断点)
10:重命名日志文件
1>:在操作系统上把文件改名或移动(如果有OMF就不需要这样做了)
2>:ALTER DATABASE RENAME FILE '/dev/rlv_vgdb9_data25' TO '/dev/rlv_vgdb9_data26';
11:通过OMF管理REDO LOG 文件
SHOW PARAEMTERS DB_CREATE_ONLINE
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='/ORACLE/ORALOG/OMF';
ALTER DATABASE ADD LOGFILE GROUP 6;(名子由ORACLE派生,大小100M)
ALTER DATABASE DROP LOGFILE GROUP 6;(自己删除)
两个专题
一:查看oracle数据库是否归档和修改归档模式
首先查看数据库现有模式可使用以下语句
select name,log_mode from v$database;
也可以用下面的语句
archive log list;(该方法需要as sysdba)
对于非归档模式的数据库该为归档模式(主要以Oracle 10g为参考通过OMF来管理)使用以下步骤:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测
例如再添加一个日志位置可使用以下语句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';
2.关闭数据库
SQL> shutdown immediate
3.启动数据mount状态:
SQL> startup mount;
4、修改数据库为归档模式:
SQL> alter database archivelog;
5、打开数据库,查询:
SQL> alter database open;
修改日志文件命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
修改完成后可以查看日志模式是否修改成功!
特别指出的是在Oracle 9i中还要修改参数log_archive_start = true才能生效,oracle 10g中已经废除了该参数,所以不需要设置该参数。

二:修改oracle日志文件大小
1、创建2个新的日志组
alter database add logfile group 4 ('D:ORACLEORADATAORADBREDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:ORACLEORADATAORADBREDO05_1.LOG') size 1024k;
2、切换当前日志到新的日志组
alter system switch logfile;
alter system switch logfile;
3、删除旧的日志组
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
4、操作系统下删除原日志组1、2、3中的文件
5、重建日志组1、2、3
alter database add logfile group 1 ('D:ORACLEORADATAORADBREDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:ORACLEORADATAORADBREDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:ORACLEORADATAORADBREDO03_1.LOG') size 10M;
6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、删除中间过渡用的日志组4、5
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL> connect / as sysdba
SQL> alter database backup controlfile to trace resetlogs

made by dylan.

初识oracle重做日志文件的更多相关文章

  1. Oracle重做日志文件

    一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理  11 ...

  2. oracle重做日志文件硬盘坏掉解决方法

    rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...

  3. ORACLE - 管理重做日志文件

    ORACLE重做日志文件用于在数据库崩溃等情况下用于恢复数据,默认情况下为三个文件redo01.log/redo02.log/redo03.log,文件组循环使用,在录入与更新操作比较多的应用中,日志 ...

  4. ORACLE 移动数据文件 控制文件 重做日志文件

    ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

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

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

  6. oracle redo 重做日志文件

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

  7. ORACLE告警日志文件

    告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...

  8. Oracle重做日志恢复数据模拟实验

    一 系统环境: 1.操作系统:oracle Linux 5.6 2.数据库: Oracle 11g 二 Oracle 重做日志的作用: [模拟介质恢复] 1. 关闭数据库归档模式: [oracle@t ...

  9. oracle redo日志文件损坏恢复

    参考:How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1) 在线重做日志文件丢失后 ...

随机推荐

  1. C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)

    C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇) 名词解释:apxs apxs is a tool for building and installing ext ...

  2. C/C++ -- Gui编程 -- Qt库的使用 -- Qt编码问题

    1.直接使用QObject::trUtf8("中文字符串") 2.头文件<QTextCodec>QTextCodec::setCodecForTr(QTextCodec ...

  3. SPP(Spatial Pyramid Pooling)详解

    一直对Fast RCNN中ROI Pooling层不解,不同大小的窗口输入怎么样才能得到同样大小的窗口输出呢,今天看到一篇博文讲得挺好的,摘录一下,方便查找. Introduction 在一般的CNN ...

  4. C#的TextBox获取行高

    当TextBox使用多行之后,如果想获取每行的高度,似乎有点问题, TextBox.Height获取的是控件的高度, 而我们常做的是根据行的数量来决定是否要显示滚动条 如下: //不能直接获取每行的高 ...

  5. C#循环读取文件流,按行读取

    public Dictionary<string,string> GetSourceDisksElements(String section) { section = "[&qu ...

  6. px、pt和em的区别

    (转载)http://www.1z1b.com/one-blog-a-week/px-em-pt/ 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网 ...

  7. 体验 QQ机器人C# SDK 1.X 特性总结

    主要特性 依赖注入 框架本身采用 Autofac 作为依赖注入框架.进行插件开发时,必然会使用到该框架.建议开发者阅读官方文档熟悉其用法.https://autofac.readthedocs.io/ ...

  8. eclipse + maven 环境配置

    软件152 余建强 第一步:准备以下软件并进行安装 1. jdk1.7或者以上为最佳: 官方下载地址:http://www.oracle.com/technetwork/java/javase/dow ...

  9. MySQL 继续-- Win7 安装及后续工作

    学MySQL 差不多了,就要实战,实战怎么能少得了软件. 一  : 下载软件 可以到 MySQL 官网直接下载 (社区版) : http://dev.mysql.com/downloads/mysql ...

  10. c# combobox控件的使用

    POJO: class ComboBoxItem { string _text; string _value; public string Text { get { return _text; } s ...