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