设为首页 收藏本站
查看: 327|回复: 0

[经验分享] 13_Oracle_Admin_联机重做日志文件和检查点

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-28 09:48:57 | 显示全部楼层 |阅读模式
在数据库中所有的文件都可以丢失,唯有OnlineRedo Log FilesArchive RedoLog Files不可以丢失,否则数据库将无法恢复。

一、什么是联机重做日志文件
wKiom1Qkd-fTLNQeAAHv5YmPjLE530.jpg

联机重做日志文件的主要用于数据库的备份和恢复,它记录了数据的所有变化情况,提供了数据的恢复机制(Oracle在对数据进行操作时,会先写入联机重做日志),它被组织成组,至少有两组日志。

wKioL1QkeB3AOfDzAAGFO47_s70057.jpg

Oracle先写第一组,当第一组写满了,再写第二组,依此类推,如果第三组也写满了,就重新从第一组写起,每一组要保证有两个联机重做日志文件,且分属不同的磁盘,以确保备份和可靠性。

wKiom1QkeAayahnBAALZ1tiVbzE003.jpg
联机重做日志的组中所有的副本都是一模一样的。LGWR这个后台进程会同时向多个联机重做日志的拷贝写入数据,Oracle服务器至少需要两组联机重做日志。

wKioL1QkeDmR9II5AAKT7P_TMWU972.jpg

联机重做日志组中的成员具有相同的大小,并被分配了相同的序列号,每次写入日志时会设定一个序列号,根据序列号就可以确定具体的日志。
二、联机重做日志的多路复用
wKioL1QkeEmxKIvYAAO5tcN_Tzk147.jpg
为了防止联机重做日志文件损坏而导致数据库无法恢复,可以复制多份联机重做日志,将其放在不同的磁盘上;即使无法放在多个磁盘上,也建议在同一块磁盘上存放多个备份,这样可以避免I/O故障。联机重做日志的多路复用可能会影响性能,但数据库的重中之重是可靠性。

wKioL1QkeFrBjY5TAAGfKL36Qqc284.jpg

一个组的成员应该均匀的分配在不同的磁盘上
三、联机重做日志的工作原理
wKioL1QkeGmzQJ8hAAKSUMnpQCc002.jpg

联机重做日志文件的写入是个循环的过程,当第一组写满了将会切换到第二组继续写入,这个切换的过程成为日志切换。日志切换会引发一次检查点(检查点是将脏数据从缓存写入磁盘的时刻,这个写入的进程是DBWn),但反之不成立。同时,日志切换也会将信息写入Controlfile(由CKPT这个进程完成)。

wKiom1QkeFKzqKOzAAKa4H9Jwkc016.jpg
联机重做日志的写入时机包括
1.事物commit时(commit并不是将数据写入data file,而是写入联机重做日志);
2.每3秒钟写一次;
3.当Redo LogBuffer(SGA的重要组成部分)达到三分之一满时;
4.Redo Log Buffer中有超过1MB的数据变化信息;
5.在DBWn这个进程将变化的blocks从缓存中写入到数据文件之前(Checkpoint检查点发生之前)。

wKioL1QkeIXzWwa9AAMOOSVUHbM061.jpg

四、Log Switch Checkpoint Switch
1. Log Switches
通常情况下LS发生在一组Redo Log File 写满后,但也可以手动控制切换。
wKiom1QkeG3BFkl_AAHCINyMudY206.jpg

[oracle@localhost~]$ sqlplus /nolog

1
2
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 29 18:13:17 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.




SQL> conn / as sysdba
1
Connected.




SQL> desc v$log;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Name                                     Null?    Type
---------------------------------------- ----------------------------
GROUP#                                             NUMBER
THREAD#                                           NUMBER
SEQUENCE#                                         NUMBER
BYTES                                             NUMBER
BLOCKSIZE                                          NUMBER
MEMBERS                                           NUMBER
ARCHIVED                                          VARCHAR2(3)
STATUS                                            VARCHAR2(16)
FIRST_CHANGE#                                      NUMBER
FIRST_TIME                                         DATE
NEXT_CHANGE#                                       NUMBER
NEXT_TIME                                          DATE




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

1
2
3
4
5
6
7
    GROUP#    THREAD# SEQUENCE# STATUS
---------- ---------- --------------------------------------------------
         1          1         34 CURRENT
-- 这组redo log file正在被写入
         2          1         32 INACTIVE
-- inactive 表示该联机重做日志可以被写入,或是其中的数据可以归档
         3         1         33 INACTIVE




SQL> alter system switch logfile;
1
2
3
-- 日志切换
  
System altered.




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

1
2
3
4
5
6
    GROUP#    THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
         1         1         34 ACTIVE
         2          1         35 CURRENT
-- 切换到第二组,序号也变成了35
         3          1         33 INACTIVE




2. 检查点的切换
当联机重做日志发生了Logswitch,会引发checkpoint
wKioL1QkeJ_BxcItAAFchgVlATY390.jpg
检查点的切换也可以强制进行,通过指定FAST_START_MTTR_TARGET的值可以实现:
这个值是表示每隔多少秒,DBWn进程会写一次data file,减小这个值能使数据更完整的保存,但会相应的影响性能。

SQL> show parameter fast

1
2
3
4
5
6
NAME                                 TYPE        VALUE
--------------------------- -----------------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     260
-- 当前的检查点间隔是260秒
fast_start_parallel_rollback         string      LOW




SQL> alter system setfast_start_mttr_target=600 scope=both;

1
System altered.




SQL> show parameter fast
1
2
3
4
5
6
7
  
NAME                                TYPE        VALUE
-------------------------- -----------------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     600
-- 检查点的间隔修改为600秒,重启数据库后会生效
fast_start_parallel_rollback         string      LOW




除了规定检查点的间隔外,也可以手动触发检查点:

SQL> alter system checkpoint;
1
2
-- 此时会引发检查点,强制让DBWn将数据写入Data File
System altered.






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25458-1-1.html 上篇帖子: 12_Oracle_Admin_ControlFile的作用以及ControlFile的复用 下篇帖子: 14_Oracle_Admin_联机重做日志文件的增删改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表