重做日志文件设置与管理

--------重做日志文件介绍:

           在oracle 数据库中,用户对数据库所做的变更操作产生的重做记录先写入重做日志缓冲区,最终由 LGWR 进程写入重做日志文件。当用户提交一个事务

    时,与该事务相关的所有重做记录被 LGWR 进程写入重做日志文件,同生产生一个“系统变更号”,以标识该事务的重做记录。只有当某个事务所产生的全部重做

   记录都写入重做日志文件后,oracle 才认为这个事务已经成功提交。

          每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。这样就能保证,当一个重做日志文件在进行归档时,还有另外一个重做日志文件可用。

    当一个重做日志文件被写满后,后台进程 LGWR 开始写入下一个重做日志文件,即日志切换,同时产生一个“日志序列号”,并将这个号码分配给即将开始使用的

    重做日志文件。当所有的重做日志文件都被写满后,LGWR 进程再重新写第一个日志文件。

          重做日志文件的工作过程如图:

          

                                                                                            重做日志文件的工作过程

     为了保证 LGWR 进程的正常进行,通常采用重做日志文件组(GROUP) ,每个组中包含若干个完全相同的重做日志文件成员(MEMBER),这些成员文件相互镜像。

  在数据库运行时,LGWR 进程同时向当前的联机重做日志文件组中的每个成员写信息。通常,将一组成员文件分散在不同的磁盘上,这样一个磁盘的损坏不会导致日志

  文件中组中所有用成员的丢失,从而保证了数据库的正常运行。

    如下图所示:

   

                                                                                     重做日志文件组

    

----------------查询重做日志文件信息:

                      可以查询数据字典视图 V$LOG 和 V$LOGFILE 获取重做日志文件信息。其中,V$LOG 包含了重做日志文件组的信息。

          而  V$LOGFILE   包含了重做日志问价成员的信息。 

          《案例》

               查询案例数据库所有的重做日志组及其状态信息。

            SQL> select  group# , sequence# , members , archived , status from  V$LOG ;

---------------创建重做日志文件组及其成员:

                    1.创建重做日志文件组

                   为数据库创建重做日志文件组语句: alter database add LOGFILE GROUP

                   一个数据库中可以包含的重做日志文件组的最大数量是由控制文件中的  MAXLOGFILES 参数决定的。

                   《案例》

                      为案例数据库创建一个包括两个成员文件的重做日志文件组。

                    SQL> alter database  add LOGFILE GROUP 4 

                               (

                                        '..........\a.LOG' ,

                                        '..........\b.LOG' ,

                               ) size 10M;

                      注意:(1)、分配给每个重做日志文件的初始空间至少为 4MB

                                  (2)、如果没有使用 GROUP 子句指定组号,则系统会自动产生组号,为当前重做日志文件组的个数加1

                 2.创建重做日志文件成员

                      为数据库重做日志文件组添加成员文件:  alter database add  LOGFILE MEMBER  '...............\..log'   to group

                     一个重做日志文件组中可以拥有的最多成员文件数量是由控制文件中的  MAXLOGMEMBERS 参数决定的。

                     《案例》  

                       为案例数据库的重做日志文件组 1、2 、3 分别添加成员文件

                       SQL> alter  database add  LOGFILE  MEMBER 

                                  '.............\1B.LOG'  to  group 1 ,

                                  '.............\2B.LOG'  to  group 2 ,

                                  '.............\3B.LOG'  to  group 3  ;

                        注意:(1)、同一个重做日志文件组中的成员文件存储位置应尽量分散

                                    (2)、不需要指定文件大小,新成员文件大小由组中已有成员大小决定

------------------重做日志文件切换:

                        当  LGWR 进程结束对当前重做日志文件组的写入操作,开始写入下一个重做日志文件组,称为发生一次 “日志切换”  。通常,只有当前的重做日志文件组

    写满后才发生日志切换,但是可以执行  alter system  switch logfile  命令手动强制进行日志切换。

     例如,如果要修改、删除当前重做日志文件组   或  活动的重做日志文件组中的成员文件或整个文件组,则需要手动强制进行日志切换,将活动的重做日志文件组转换为

    非活动的重做日志文件组。

                         《案例》

                        进行一次日志切换,查看各个重做日志文件组的状态。

                         SQL> alter system switch logfile;

-----------------修改重做日志文件的名称和位置:

                      可以修改处于  INACTIVE 状态的重做日志文件组中的成员文件的名称或位置。如果要修改的重做日志文件所在重做日志文件组不是处于 INACTIVE

               状态,可以进行日志切换,使该重做日志文件处于 INACTIVE 状态。

                     修改重做日志文件的名称或位置时,首先在操作系统中进行重做日志文件名称或位置的修改,然后执行

                    alter database rename file '........'  to '.......'  修改数据库的控制文件与数据字典中相应的重做日志文件信息。

                    《案例》

                     将数据库的重做日志文件 redo01.log   、 redo02.log 移动到目录  D:\ORADATA 目录中

                    SQL> host move D:\redo01.log   D:\ORADATA\redo01.log   (操作系统中移动文件)

                    SQL> host  move D:\redo02.log     D:\ORADATA\redo02.log (操作系统中移动文件)

                    SQL>alter database rename file

                               'D:\redo01.log ' ,

                               'D:\redo02.log '

                               to

                              ' D:\ORADATA\redo01.log '

                              ' D:\ORADATA\redo02.log ' ;

-----------------删除重做日志文件组及其成员:

                       1.删除重做日志文件成员:

                          如果要删除重做日志文件组中的某个成员文件,需要注意以下事项:

                         (1)、只能删除状态为  INACTIVE  或 UNUSED 的重做日志文件组中的成员;如果要删除状态为  CURRENT 的重做日志文件组中的成员,

                                    则需要进行一次手动日志切换

                         (2)、如果数据库处于归档模式下,则在删除重做日志文件之前要保证该文件所在的重做日志文件组已经归档了

                         (3)、每个重做日志文件组中至少要有一个可用的成员文件,即 VALID 状态的成员文件。

                                    如果要删除的重做日志文件是所在组中最后一个可用的成员文件,则无法删除。

                         删除重做日志文件组成员语句: alter  database drop  logfile member 

                     《案例》

                      删除第4个重做日志文件组中的成员文件 RED04.LOG

                      SQL> alter  database drop logfile member 

                                   '.......................\HU_MAN\RED04.LOG'  ;

                      删除重做日志文件的操作并没有将重做日志文件从操作系统磁盘上删除,只是更新了数据库控制文件,从数据库结构中删除了该重做日志文件。

               在删除重做日志文件之后,应该确认删除操作完成,然后再删除操作系统中对应的重做日志文件。

                       2. 删除重做日志文件组:

                          在某些情况下,可能需要删除某个重做日志文件组。如果删除某个重做日志文件组,则该组中的所有成员文件将被删除。如果要删除某个重做

                     组,则需要注意以下事项:

                          (1)、无论重做日志文件组中有多少个成员文件,一个数据库至少需要有两个重做日志文件组

                          (2)、如果重做日志文件处于归档模式下,则在删除重做日志文件组之前,必须确定该组已经被归档了

                          (3)、只能删除处于  INACTIVE 状态 或 UNUSED  状态的重做日志文件组,若要删除状态为 CURRENT 的重做日志文件,则需要做一次

                                       手动日志切换

                          删除重做日志文件组的语句: alter database  drop  logfile group 

                    《案例》

                      删除第4个重做日志文件组

                  SQL> alter database  drop  logfile group 4 ;

                  删除重做日志文件 组的操作并没有将重做日志文件组中的所有成员文件从操作系统上删除,只是更新了数据库控制文件,从数据库结构中删除了该

            重做日志文件组。在删除重做日志文件组之后,应该确认删除操作成功完成后,然后再删除操作系统中对应的所有重做日志文件。

                                    

     

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值