Oracle重做日志文件的清除


作者:雨竹清风

当数据库中只有两个重做日志组或者崩溃的重做日志文件属于当前重做日志文件组。这样的情况是不能通过删除重做日志组或文件再重建的方法进行维护或修复。为此应该使用重做日志文件的清除命令重新初始化重做日志文件。其命令为:alter database clear logfile group 组号;这是在重做日志文件可以归档的情况下使用的。如果重做日志文件不能归档应使用alter database clear unarchived logfile group 组号;

以下是清除重做日志文件的步骤。

1.首先用system或者sys用户以sysdba身份登录。

为安全起见应该对数据库进行脱机备份。

2.备份控制文件,重做日志文件,数据文件。首先查看文件存在的路径。

SQL> desc v$controlfile;

 名称                                          是否为空? 类型

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

 STATUS                                             VARCHAR2(7)

 NAME                                               VARCHAR2(513)

 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)

 BLOCK_SIZE                                         NUMBER

 FILE_SIZE_BLKS                                     NUMBER

 

SQL> col name for a55;

SQL> select  STATUS, NAME from v$controlfile;

 

STATUS  NAME                                                                    

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

        C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL                     

        C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL                     

        C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL                     

    SQL> desc v$logfile;

 名称                                      是否为空? 类型

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

 GROUP#                                             NUMBER

 STATUS                                             VARCHAR2(7)

 TYPE                                               VARCHAR2(7)

 MEMBER                                             VARCHAR2(513)

 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)

 

SQL> col MEMBER for a50;

SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                               

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

         3 STALE   ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG     

         2         ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG     

         1 STALE   ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG     

 

SQL> desc dba_data_files;

 名称                                      是否为空? 类型

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

 FILE_NAME                                          VARCHAR2(513)

 FILE_ID                                            NUMBER

 TABLESPACE_NAME                                    VARCHAR2(30)

 BYTES                                              NUMBER

 BLOCKS                                             NUMBER

 STATUS                                             VARCHAR2(9)

 RELATIVE_FNO                                       NUMBER

 AUTOEXTENSIBLE                                     VARCHAR2(3)

 MAXBYTES                                           NUMBER

 MAXBLOCKS                                          NUMBER

 INCREMENT_BY                                       NUMBER

 USER_BYTES                                         NUMBER

 USER_BLOCKS                                        NUMBER

 ONLINE_STATUS                                      VARCHAR2(7)

 

SQL> col FILE_NAME for a55;

SQL> select FILE_ID,FILE_NAME from dba_data_files;

 

   FILE_ID FILE_NAME                                                            

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

         4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF                    

         3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF                   

         2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF                  

         1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF                   

         5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF                  

 

3.关闭数据库

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

4.复制控制文件,数据文件,重做日志文件

复制控制文件文件,默认安装的话控制文件,数据文件,重做日志文件都在同一个文件夹下。本例是不同文件下。

 

SQL> host copy  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\*.* C:\backup\

SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\*.*  C:\backup\

5.备份口令文件和参数文件

SQL> host copy D:\oracle\product\10.2.0\db_1\database\*.* C:\backup\

6.启动数据库

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  167772160 bytes                                       

Fixed Size                  1247900 bytes                                       

Variable Size              75498852 bytes                                       

Database Buffers           88080384 bytes                                       

Redo Buffers                2945024 bytes                                       

数据库装载完毕。

数据库已经打开。

7.查看重做日志文件日志组和所有成员

SQL> desc v$log;

 名称                                      是否为空? 类型

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

 GROUP#                                             NUMBER

 THREAD#                                            NUMBER

 SEQUENCE#                                          NUMBER

 BYTES                                              NUMBER

 MEMBERS                                            NUMBER

 ARCHIVED                                           VARCHAR2(3)

 STATUS                                             VARCHAR2(16)

 FIRST_CHANGE#                                      NUMBER

 FIRST_TIME                                         DATE

 

SQL> select GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED from v$log;

 

    GROUP#  SEQUENCE#    MEMBERS      BYTES STATUS           ARC                

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

         1         41          1   52428800 INACTIVE         NO                 

         2         42          1   52428800 CURRENT          NO                 

         3         40          1   52428800 INACTIVE         NO                 

 

SQL> col MEMBER for a50;

SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                               

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

         3 STALE   ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG     

         2         ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG     

         1 STALE   ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG     

 

8.使用命令来清除一个重做日志。

SQL> alter database clear logfile group 3;

 

数据库已更改。

9.再次查看重做日志文件信息

SQL> select GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED from v$log;

 

    GROUP#  SEQUENCE#    MEMBERS      BYTES STATUS           ARC                

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

         1         41          1   52428800 INACTIVE         NO                 

         2         42          1   52428800 CURRENT          NO                 

         3          0          1   52428800 UNUSED           NO                 

 

SQL> col MEMBER for a50;

SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                               

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

         3         ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG     

         2         ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG     

         1 STALE   ONLINE  D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG     

 

显示结果可知第三组的序列号变为了0,意味着初始化了此重做日志文件。因此在清除后要做一次全备份。

10.做全备份。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值