纸水仙 发表于 2018-9-24 06:15:47

oracle归档日志管理 (收集)

  日志操作模式: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
  改变日志操作模式,然后打开数据库

  >
  >  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>>  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>>  3,坚持数据库日志模式(归档模式或非归档模式)
  SQL> archive log list
  3,切换到归档/非归档模式
  SQL> startup mount

  SQL>>
  SQL>>  4,显示当前归档日志组和成员:
  SQL> select GROUP#,member from v$logfile;
  5,添加redo log组:

  5.1 SQL>>  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>>  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>>  这里如果数据库是当前被使用的,无法改名;如果redo06.log文件不存在,数据库无法获得其信息,无法改名,数据库文件如果已经存在在数据库中,无法改名(可以先创建号固定大小的数据库文件改名)
  8, 删除新增的group 4

  SQL>>  9,删除新增的group 1的logfile;

  SQL>>  10,清空logfile:

  SQL>>  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_FILEfrom v$logfile;
  查询归档日志文件所在目录和文件名
  select group#,status,type,member,IS_RECOVERY_DEST_FILE   from v$logfile;
  如何查看归档日志路径?
  SQL> showparameter RECOVERY;
  3,显示归档日志信息.
  Col name format a40
  Select name, sequence#, first_change# FROM v$archived_log;
  Name用于表示归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.

页: [1]
查看完整版本: oracle归档日志管理 (收集)