Oracle 重做日志简介

1、redo (重做) log 的功能:数据recover

2、redo log 特征:

1)记录数据块的变化(DML、DDL)

2) 用于数据块的recover

3)以组的方式管理redo file ,最少两组redo ,循环使用

4)和数据文件存放到不同的磁盘上,需读写速度快的磁盘(比如采用RAID10)

3、日志切换

1)归档模式:将历史日志进行保存

2)非归档: 历史日志被覆盖

3)并产生checkpoint,通知redo log 所对应的 dirty block 从data buffer写入到datafile,并且更新控制文件

4、与日志相关的的数据字典

V$LOG  查看日志信息(从控制文件读取)

V$LOGFILE 查看日志存放的位置

FAST_START_MTTR_TARGET  控制检查点出现的时间,不能设置的太短

ALTER  SYSTEM  SWITH  LOGFILE; 产生增量检查点

ALTER  SYSTEM  CHECKPONIT;产生完全检查点,所有的脏块都写入数据文件

5、查看日志信息

SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

1          1          6   10485760          2 NO  INACTIVE                357157 01-AUG-11

3          1          0   10485760          2 YES UNUSED                       0

2          1          7   10485760          2 NO  CURRENT                 381102 02-AUG-11

04:40:19 SQL> alter system switch logfile;

System altered.

04:40:42 SQL> /

System altered.

04:40:43 SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------

1          1          9   10485760          2 NO  CURRENT                 384007 02-AUG-11

3          1          8   10485760          2 NO  ACTIVE                  384005 02-AUG-11

2          1          7   10485760          2 NO  ACTIVE                  381102 02-AUG-11

(1)日志组的status:

unused:新添加的日志组,还没有使用

inactive:日志组对应的脏块已经从data buffer写入到data file ,可以删除

active:日志组对应的脏块还没有从data buffer写入到data file,不能被删除,否则会引起数据丢失

current :当前日志组,日志组对应的脏块还没有从data buffer写入到data file,不能被删除

在删除日志组之前,进行日志手工切换,将被删除的日志切换到inactive状态,这样就不会引起数据丢失。

thread :线程(通过后台进程lgwr 启动),在单实例的环境下,thread# 永远是1

sequence :日志序列号。在日志切换时会递增。

FIRST_CHANGE# :在当前日志中记录的首个数据块的scn。(当事务完成的时候会在数据块上写入一个scn,代表数据块的变化)。

ARC:是否归档模式

log_checkpoints_to_alter:该值默认为false,将其设置为true,每生成一个检查点就会在alter告警日志记录信息

(2)日志文件的status:

valid  有效状态

invalid  当数据库未使用改组文件时,就是无效状态

stale     当数据库怀疑日志文件没完成或者不正确时,日志文件为不新鲜状态,当该日志组变为active group 时,stale日志文件会变为valid状态

(3)查看生成的日志量

14:51:12 SQL> insert into scott.emp1 select * from scott.emp1;

28 rows created.

14:51:33 SQL> insert into scott.emp1 select * from scott.emp1;

56 rows created.

14:51:35 SQL> select a.name,b.value from v$statname a,v$mystat b

14:51:39   2  where b.statistic#=a.statistic# and a.name like '%redo size%';  

--通过联合查询视图 v$statname ,v$mystat可以查看日志生成量

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

redo size                                                              4544


你可能感兴趣的:(oracle,File,记录,历史,dirty)