Oracle 删除重做日志

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 删除重做日志

当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入到该日志成员中,在这种情况下应该删除该日志成员;当日志组尺寸不合适时,需要重新建立新日志组,并删除原有的日志组。删除重做日志是使用ALTER DATABASE语句来完成的,执行该语句要求数据库用户必须具有ALTER DATABASE系统权限。

1.删除日志成员

要删除一个成员日志文件,只需要使用带DROP LOGFILE MEMBER子句的ALTER DA TABASE语句。例如,下面的语句将删除4号日志组的第2个成员:

SQL> alter database drop logfile member

2 'e:\oradata\orcl\redo04b.log';

数据库已更改。

上面语句只是在数据字典和控制文件中将重做日志成员的信息删除,并不会在操作系统中物理地删除相应的文件,这需要确认删除成功后手工在操作系统中删除文件。

2.删除日志组

由于已经存在日志组的尺寸不能改变,所以当日志组尺寸不合适时,就需要重新建立日志组并指定合适尺寸,然后删除不符合尺寸要求的日志组。在删除一个日志组时,其中的成员文件也将全部被删除。在删除日志组时,首先需要考虑如下几点:

●无论日志组中有多少个成员,一个数据库至少需要两个日志组。

●只能删除处于INACTIVE状态的日志组。如果要删除CURRENT状态的重做日志

组,则必须执行一个手工切换日志,将它切换到INACTIVE状态。

●如果数据库处于归档模式下,在删除重做日志组之前必须确定它已经被归档。

因此,在删除重做日志组之前,可以查询V$LOG动态性能视图来获知各个重做日志组的状态以及它是否已经归档。例如:

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

GROUP# ARC STATUS

---------- --- ----------------

1 NO CURRENT

2 NO INACTIVE

3 NO INACTIVE

4 YES UNUSED

要删除一个重做日志组,需要使用带有DROP LOGFILE子句的ALTER DATABASE语句。例如,下面的语句可以删除4号重做日志组:

SQL> alter database drop logfile group 4;

同样,该语句只是在数据字典和控制文件中将重做日志组的记录信息删除,并不会物理地删除操作系统中相应的文件,这需要手工在操作系统中将相应的文件删除。

3.清空重做日志组

清空重做日志文件就是将重做日志文件中的内空全部初始化,这相当于删除该重做日志文件,然后再重新建立它。即使数据库只拥有两个重做日志组,或者要清空的重做日志组正处理CURRENT状态,在这些状态下都可以成功执行清空操作。

要清空一个重做日志组,需要使用带有CLEAR LOGFILE 子句的ALTER DATABASE 语句。例如,下面的语句将清空3号重做日志组:

SQL> alter database clear logfile group 3;

数据库已更改。

如果要清空的重做日志组尚未归档,则必须在ALTER DA TABASE 语句中指定UNARCHIVED 子句,例如:

SQL> alter database clear unarchived logfile group 3;

数据库已更改。

注 意

如果被清空的重做日志组没有被归档,则有可能造成数据丢失。

相关文档
最新文档