Oracle的重作日志和归档日志

 1、 sql

   重作日志文件把对数据文件的修改在写入数据文件以前记录下来。日志文件以一种循环的方式被写入信息。当一个日志组被写满时,回自动向另外一个日志组写入。管理员能够手工切换当前日志组。alter system switch logfile 能够切换当前的日志组。当日志组发生切换时,oracle向新的重作日志组分配一个日志序列号。当存在大量的事务时必须调整重作日志文件的大小,以免频繁的日志切换发生。重作日志文件被顺序的写在磁盘上,若是磁盘没有其余活动,I/O将会很快。应该把重作日志文件保存在 单独的磁盘上,以获取良好的性能。尤为不要把常常处于活动状态的SYSTEM,UNDOTBS,SYSAUX的表空间或索引表空间文件保存到同一块磁盘上。由于只有在事务的请求被写到重作日志后,请求才能被完成。最大限度的提升重作日志的吞吐量是oracle性能优化首先考虑的因素。当发生重作日志切换而生成 一个新的检查点时,DBWn就会写脏缓冲器块。这样会影响oracle的性能。能够经过fast_start_mttr_target初始化参数来调整检查点。 数据库

   每一个数据库都有本身的联机重作日志组,一个联机重作日志组有多个重作日志成员,每一个日志成员有单独的操做系统文件。在一个rac配置(这种配置中单个数据库装有多个实例),每一个实例有一个联机重作日志线程,每一个实例的lgwr进程都写到相同的联机重作日志文件。所以oracle必须跟踪数据库实例修改来自那个实例。 性能优化

   当多路复用重作日志文件时,应该把一个组的成员保存在不一样的磁盘上。以免单点故障的发生。若是重作日志文件组的全部成员都没法写入数据,oracle将被挂起。Dba能够在建立数据库时建立多个联机重作日志文件的副本。 服务器

   对日志的操做以下: oracle

  

   a. 建立新的重作日志组: 性能

      Alter database add logfile 优化

      Group 3 (/ora02/oradata/mydb01/redo0301.log, spa

      /ora03/oradata/mdb01/redo0302.log) size 10m; 操作系统

      若是省略group子句oracle分配一个有效的编号以下 线程

      Alter database add logfile

  

   b. 添加新的组成员

      alter database add logfile member

      /ora04/oradata/mydb01/redo0203.log to group 2;(向第二组中添加新的成员)

  

   c.重命名日志成员:

     在重命名日志组成员以前新的目标必须已经存在。Oraclesql命令只是把控制文件中的内部指针指向新的日志文件。Dba须要用操做系统命令来重命名此日志文件。步骤以下:

     1.关闭数据库

     2.使用操做系统命令重命名或移动日志文件

     3. 启动数据库实例(start mount),重命名控制文件中的日志文        件成员。Alter database rename file         old_redo_file_name to new_redo_file_name;

     4.打开数据库 alter database open

     5.备份控制文件

   D.删除重作日志组:

      将要被删除的重作日志组不能是活动的日志组。Alter database drop logfile group 3;。当重作日志文件被删除后,相关的操做系统文件也被删除,相关的数据库控制文件也给更新。

   E.使用和删除重作日志组相同的方式,dba能够只删除一个非活动的重作日志组的成员。

      Alter database drop logfile member /ora04/oradata/mydb01/redo0203.log;

     

   f. 建立联机重作日志文件:

      当重作日志组成员遭到破坏时,能够删除并从新添加这个重作日志组或组成员。

   2、

     

档案重作日志文件:

   它是联机重作日志文件的一个副本。Lgwrarcn进程的故障都会引发数据库的挂起。只有当arcn进程把联机重作日志写到归档地后,才能够向此重作日志组成员写入数据。

   设置归档目的地:

   能够在参数初始化文件中的log_archive_dest_n来定义归档目的地。归档目的地能够在本地计算机上,也可在远程的数据库服务器上。定义语法以下:

    LOG_ARCHIVE_DEST_n= null_string |

    (service=tnsnames_name |

  LOCATION= directory_name)

  [MANDATORY | OPTIONAL]

  [REOPEN[=integer]]

  例1

  LOG_ARCHIVE_DEST_1=((LOCATION=/archive/MYDB01) MANDATORU REOPEN=60)定义归档日志的位置为/archive/MYDB01mandatory子句的定义向这个位置写日志的操做必须的成功的。Reopen子句定义在日志写入失败时,下次尝试写入操做的时间间隔。缺省是300秒。

  例2

  LOG_ARCHIVE_DEST_@=(SERVICE=STDBY01) OPTIONAL REOPEN;语句中的stdby01的链接到远程数据库的oracle net链接串。因为写操做是可选的,因此数据库活动继续,当arcn进程不能写档案日志文件时,进程将当即尝试从新写入(这个动做有reopen子句来定义)。

  Log_archive_min_succeed_dest:定义最少归档日志的副本数量。

  Log_archive_format:定义归档日志文件采用的名称和使用的格式。可使用预约义变量来构造每一个归档日志文件的名称。变量以下:

  %s      日志序列号

  %t      线程号

  %r      复位日志id

  %d      数据库id

  定义归档日志名称的变量至少包含%s%t,%r,当多个数据库实例的归档日志采用相同的归档日志位置时,还必须定义%d。例如:%t_%s_%r.dbf

相关文章
相关标签/搜索