首页 > 代码库 > 重做日志文件组和重做日志文件组成员的管理

重做日志文件组和重做日志文件组成员的管理

一、重做日志文件组:

1、添加重做日志组的指令:

alter database [数据库名称]

  add logfile[group 正整数] 文件名称

  [,[group 正整数]文件名称]]

不是有group选项时oracle系统会自动在当前最大的组号上加1来产生新的组号

ex:alter database add logfile (‘D:\REDO04.LOG‘,‘D:\REDO05.LOG‘) size 15m;

增加新的重做日志组并且添加两个重做日志成员,大小设置为15M

2、删除重做日志组指令:

alter database[数据库名称]

  drop logfile{group 正整数|(‘文件名称‘)}

    [,{group 正整数|(‘文件名称‘)}]

ex:  alter database drop logfile group 4;

注:删除重做日志组以后对应的重做日志组成员文件并没有被从物理磁盘上删除,必须手动删除日志成员文件,避免垃圾文件过大。

查看重做日志组和对应的重做日志组成员的数据字典分别是v$log,v$logfile;

二、重做日志文件组成员:

oracle 的默认安装是在每个成员组下面添加一个成员文件,这在生产数据库上是无法接受的,必须保证oracle系统上最少有两个重做日志文件组,每个组中最少有两个组成员文件,以防止重做日志文件的物理错误。

1、创建重做日志文件的sql命令:

alter database [数据库名称]

  add logfile member

  [‘文件名称‘[reuse]

  [,‘文件名称‘[reuse]]

    to {group 组号

    |(‘文件名称‘[,‘文件名称‘]....)

    }

  ]....

每个日志组中新添加的成员文件的大小默认与原来成员文件的大小相等

2、删除重做日志文件的sql命令:

alter database[数据库名称] drop  logfile member ‘文件名称‘[,‘文件名称‘]....

不能使用上述命令删除每个重做日志组的成员,因为当前重做日志组的成员不能删除。如果要删除应该使用alter system switch logfile命令切换当前重做日志组。

如果想删除刚刚新加入的成员可能会比较麻烦,因为当前新加入的成员的status为invalid即不可访问的状态。因此在删除之前要多次使用alter system switch logfile命令切换成员组。或者先shutdown数据库后startup数据库。之后就不用频繁的切换当前日志组了。

注:报警文件中记录了重做日志组和重做日志组成员的所有的变动信息,维护重做日志时可以通过报警文件查看。