oracle学习笔记-重做日志管理(5)

原创 2016年08月30日 10:57:06
        在用户执行DML和DDL命令访问数据之前首先生成重做日志,并将重做日志记录在重做日志缓冲区,再修改数据库高速缓存区中的内容。重做日志记录用户的DML和DDL操作记录,包括修改的数据块、修改的位置以及修改后的数据等信息。重做日志文件是保证数据库安全的一种重要手段,数据库故障时可以通过重做日志文件和归档日志文件进行实例恢复和介质恢复。
        重做日志缓冲区大小有限,LGWR进程在一定时机下将重做日志缓冲区的重做日志写入到重做日志文件。数据库中一般有若干重做日志组,每个重做日志组包含若干重做日志成员,数据库以循环方式将重做日志写入这些重做日志组。当最后一组被写满时自动切换到第一组,这样文件中原来的重做日志就会被覆盖,为了保留重做日志就要对重做日志进行归档,重做日志归档有ARCH进程完成。


一、重做日志文件的规划
1、 重做日志缓冲区的规划

       重做日志首先写入重做日志缓冲区,LGWR进程在一定时机下将重做日志缓冲区的内容写入重做日志文件,并清空这部分缓冲区,这样可以减少磁盘写的次数,提升数据库性能。
       重做日志缓冲区的大小由初始化参数LOG_BUFFER指定,综合考虑内存大小,为重做日志缓冲区分配尽可能大的值。
2、 重做日志组规划
       为了对重做日志进行归档,数据库中至少包含两个重做日志组,因为数据库正在使用一个数据文件时是不能对它进行归档的。日志组的最大数目由初始化参数MAXLOGFILES限定。
       日志组的数目应根据实际情况选择合适的数目。如果日志组数目太多,会消耗太多磁盘空间。如果日志组数目太少,会影响数据库性能。在归档日志模式下,当切换到下一个日志组时,ARCH进程会对上一个日志组进行归档,如果归档太慢,或者日志写入速度太快。那么归档可能还没结束,数据库服务器又切换到了这个日志组,将造成LGWR进程阻塞,产生“checkpoint incomplete”警告,用户事务无法进行,等待归档结束。
3、 重做日志文件规划
        在一个重做日志组中至少包含一个重做日志文件,但是一般要求至少有两个日志成员,他们互为镜像,LGWR进程将把重做日志同时写入日志组中的所有日志成员,并且为了防止磁盘故障,应将不同的日志成员放在不同的磁盘上。如果一个日志成员丢失或者损坏,LGWR进程将阻塞,这时候可以利用其他完好的日志成员复制一个新的日志成员。
        LGWR进程可能遇到的异常情况:
         某个重做日志组中的日志成员不可用。LGWR进程忽略不可用的日志成员,将重做日志写入其他可用的日志成员。
         某重做日志组正在被归档或者尚未归档。LGWR阻塞等待归档完成。
         某重做日志组中的所有日志成员不可用。数据库实例将关闭。
         当前重做日志文件组中的所有日志成员突然都不可用。数据库实例将关闭。


二、 重做日志文件的管理
1、 增加重做日志组

SQL>ALTER DATABASE ADD LOGFILE [GROUP 4] (
   ‘dir/logfile_name’,
   ‘dir/logfile_name’) SIZE 200M
2、 增加日志成员
SQL>ALTER DATABASE ADD LOGFILE MEMBER ‘dir/logfile_name’,… TO GROUP 4;
3、 修改重做日志文件的存储位置和名称
        1) 以NORMAL方式关闭数据库,确保所有用户事务正常结束;
        2) 在操作系统下修改重做日志文件位置或名称;
        3) 将数据库启动到MOUNT状态,此时控制文件已经打开而重做日志尚未打开;
        4) ALTER DATABASE RENAME修改重做日志文件的名称或位置:
SQL>ALTER DATABASE RENAME
‘dir1/name1’,…  TO ‘dir2/name2’,…;
       这种方式也可以修改数据文件的名称和位置。
4、 删除重做日志文件
       首先通过动态性能视图V$LOG查看日志组的状态以及是否已经进行归档,不能删除数据库正在使用的日志组,删除前应该先对其进行归档。
 
     日志组删除后,所有的日志成员也会被删除,删除日志组的语法如下:
SQL>ALTER DATABASE 
DROP LOGFILE GROUP 3;
     删除日志成员的语法如下:
SQL>ALTER DATABASE 
DROP LOGFILE MEMBER ‘dir/logname’;
5、 重做日志文件的清空
SQL>ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP 3;
     可清空”CURRENT”状态的重做日志组,但要清空未归档的重做日志组时需要使用UNARCHIVED关键字。
6、 重做日志的切换
     手工切换重做日志对的命令如下:
SQL>ALTER SYSTEM SWITCH LOGFILE
7、 重做日志信息的查询
     A. v$log:记录重做日志组的信息
     状态有以下几种:
      UNUSED:尚未被写如果重做日志
      CURRENT:当前日志组
      ACTIVE:活动的,但不是当前日志组。进行实例恢复时需要
      CLEARING:正在被清空,之后变为UNUSED
      INACTIVE:非当前日志组。实例恢复不需要,介质恢复需要
      CLEARING_CURRENT:正在被清空的当前日志组
     B. v$logfile:记录重做日志文件的信息
     其中日志成员的状态有以下几种:
      INVALID:文件不可访问
      STALE:文件的内容不完整
      DELETED:文件不再使用
      空:正常
     C. v$log_history:记录重做日志组的切换信息
版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle物理体系结构---联机重做日志文件

发生重做时,重做会被实际存储在数据库联机重做日志中。 oracle要求至少为一个数据库操作创建两个联机重做日志,这些联机重做日志可以包含有多个保护重做的镜像副本,称为多路重做日志。 当一个联机重做日志...
  • wbj19890107
  • wbj19890107
  • 2015年02月05日 15:19
  • 674

MySQL系列:innodb源码分析之重做日志结构

在innodb的引擎实现中,为了实现事务的持久性,构建了重做日志系统。重做日志由两部分组成:内存日志缓冲区(redo log buffer)和重做日志文件。这样设计的目的显而易见,日志缓冲区是为了加快...
  • u012935160
  • u012935160
  • 2015年01月07日 13:15
  • 4878

控制文件和重做日志文件

控制文件是一个二进制文件,包含了关于数据库物理结构的重要信息,包括数据库的名称,相关的数据文件和重做日志文件的名称和位置,当前的日志序列号等内容.创建复合控制文件(oracle最多支持同时使用8个控制...
  • nbc_prc
  • nbc_prc
  • 2006年10月08日 13:15
  • 656

oracle管理重做日志文件

C:\Users\Administrator>sqlplus 请输入用户名:  sys/12345678 as sysdba SQL> select group#,members,...
  • qq_23994787
  • qq_23994787
  • 2017年05月25日 07:58
  • 185

调整重做日志大小

一、目的: 数据库每次切换日志的时候对有一个检查点,会消耗数据库资源,所以我们增加日志文件大小,减少切换的次数,从而提高数据库的效率。 二、步骤: 2.1、先查看数据库重做日志文件的各种参数信息...
  • heshouyou
  • heshouyou
  • 2017年03月30日 10:36
  • 526

oracle-dba- 重做日志管理

作用数据恢复。 用户更改的信息会暂时存放在数据库高速缓冲区中,是为了提高读写的速度。当达到一定的容量,DBWR就把变化的数据写到数据库中。中间假如出现了down就会数据无法恢复。所以引入重做日志管理...
  • Nuan_Feng
  • Nuan_Feng
  • 2017年03月03日 23:20
  • 102

管理好Oracle重做日志文件 让数据高枕无忧

重做日志文件是Oracle数据库中一种非常重要的日志文件,也是其一个很有特色的功能。重做日志文件会纪录对于数据库的任何操作,如利用DML语句或者DDL语句对数据进行更改,或者数据库管理员对数据库结构进...
  • it_taojingzhan
  • it_taojingzhan
  • 2015年11月24日 13:46
  • 142

oracle数据库重做日志文件管理常用操作

1.查看日志视图 select * from v$log; select * from v$logfile; 2.强制执行日志切换 alter system switch logfile;...
  • hzh_csdn
  • hzh_csdn
  • 2016年04月06日 14:23
  • 297

增加重做日志组大小和增加日志组成员

  1.1.  增加重做日志文件大小(单机) PS:以下为10.150.17.1数据库为例实施(RAC环境略有不同,最好每个实例有6个重做日志组,每个重做日志组有2个成员,这两个成员...
  • kevin_LCC
  • kevin_LCC
  • 2014年11月25日 16:59
  • 1375

16->联机重做日志文件

一。概念 联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改。它主要用于在发生故障的时候和数据库备份文件配合恢复数据库,一般发生故障有2个情...
  • liaomin416100569
  • liaomin416100569
  • 2015年09月06日 20:19
  • 1422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle学习笔记-重做日志管理(5)
举报原因:
原因补充:

(最多只允许输入30个字)