日志操作模式:ARCHIVELOG NOARCHIVELOG

oralce 的归档日志可以随意删除吗?

          SQL> archive log list;
          数据库日志模式            存档模式
          自动存档             启用
          存档终点            /opt/oracle/archive_log
          最早的联机日志序列     59
          下一个存档日志序列   61
          当前日志序列           61
          那么以前的归档日志可以用OS命令随意删除吗?要是不能,为什么?要是能,对数据恢复有影响吗?

 


          可以用RMAN命令删除,会自动删除物理文件,不可以用OS命令删除。

 

 

archive log list;

显示日志模式列表,


1,改变日志操作模式:

        检查当前日志操作模式

        SELECT log_mode from v$database;

        关闭数据库,然后装载数据库

        SHUTDOWN IMMEDIATE

        STARTUP MOUNT

        改变日志操作模式,然后打开数据库

        ALTER DATABASE ARCHIVELOG;

        ALTER DATABASE OPEN;

 


2、显示归档日志信息
        SELECT name,log_mode FROM v$database;

        显示归档日志信息.

        Select name, sequence#, first_change# FROM v$archived_log;
       
       
        显示日志历史信息
        SELECT * FROM v$loghist;
       
       
        显示归档进程信息.
        SELECT * FROM v$archive_processes;
       
       
       
       
       
       
       
       
       
  1,切换日志文件:
    1.1, 切换前:
    SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1        215   52428800          1 CURRENT
         2        213   52428800          1 INACTIVE
         3        214   52428800          1 INACTIVE

    1.2 切换日志文件
        SQL> alter system switch logfile;

    1.3 切换后:
    SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1        215   52428800          1 ACTIVE
         2        216   52428800          1 CURRENT
         3        214   52428800          1 INACTIVE

2,强制checkpoint:
    SQL> alter system checkpoint;

3,坚持数据库日志模式(归档模式或非归档模式)
    SQL> archive log list

3,切换到归档/非归档模式
    SQL> startup mount
    SQL> alter database archivelog/noarchivelog
    SQL> alter database open;

4,显示当前归档日志组和成员:
    SQL> select GROUP#,member from v$logfile;
   
5,添加redo log组:
   5.1 SQL> alter database add logfile group 4 ('/oracle/oradata/orcl/redo04.log') size 4m;
   5.2 检查新加入的log状态
       SQL>  select group#,sequence#,bytes,members,status from v$log;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1        215   52428800          1 INACTIVE
         2        216   52428800          1 CURRENT
         3        214   52428800          1 INACTIVE
         4          0    4194304          1 UNUSED
    (虽然这里是UNUSED的状态,但是通过切换日志文件或者数据库自动切换,该文件会被改为active状态)
   
6,添加新的文件到group 1
    SQL> alter database add logfile member '/oracle/oradata/orcl/redo05.log' to group 1;
    SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1        219   52428800          2 CURRENT
         2        216   52428800          1 ACTIVE
         3        218   52428800          1 ACTIVE
         4        217    4194304          1 ACTIVE
    这里的group组中的member就变为2;
    SQL> select member from v$logfile where group#=1;

    MEMBER
    -----------------------------------------------------------------------------
    /oracle/oradata/orcl/redo01.log
    /oracle/oradata/orcl/redo05.log

7,给数据库日志文件改名
    SQL> alter database rename file '/oracle/oradata/orcl/redo05.log' to '/oracle/oradata/orcl/redo06.log';

    这里如果数据库是当前被使用的,无法改名;如果redo06.log文件不存在,数据库无法获得其信息,无法改名,数据库文件如果已经存在在数据库中,无法改名(可以先创建号固定大小的数据库文件改名)

8, 删除新增的group 4
    SQL> alter database drop logfile group 4;

9,删除新增的group 1的logfile;
    SQL> alter database drop logfile member '/oracle/oradata/orcl/redo06.log';

10,清空logfile:
    SQL> alter database clear logfile '/oracle/oradata/orcl/redo01.log'
   
    SQL>  select group#,sequence#,bytes,members,status from v$log;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1          0   52428800          1 UNUSED
         2        220   52428800          1 CURRENT
         3        218   52428800          1 INACTIVE     


#########################################################################################3

 

 

查询归档日志文件状态:

    select group#,status,type,member,IS_RECOVERY_DEST_FILE  from v$logfile;

查询归档日志文件所在目录和文件名


 select group#,status,type,member,IS_RECOVERY_DEST_FILE   from v$logfile;

如何查看归档日志路径?

 SQL> show  parameter RECOVERY;


3,显示归档日志信息.

 Col name format a40

 Select name, sequence#, first_change# FROM v$archived_log;

Name用于表示归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.