Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Online redo logfile 配置

忠告:
  • 在下述操作前进行数据库完全备份
  • 在下述操作后进行控制文件(control file)的备份
 查询logfile相关信息: 
  • 查询日志文件位置和状态
SQL> select * from v$logfile;     GROUP# STATUS  TYPE    MEMBER---------- ------- ------- -------------------------------------------------- 3           ONLINE  /u01/app/Oracle/oradata/knitter/redo03.log 2           ONLINE  /u01/app/oracle/oradata/knitter/redo02.log 1           ONLINE  /u01/app/oracle/oradata/knitter/redo01.log 4           ONLINE  /u01/app/oracle/oradata/knitter/redo04.rdo 4 INVALID ONLINE  /u01/app/oracle/oradata/knitter/redo04_02.rdo 
  • 查询日志组序号和状态
 SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;     GROUP# ARC STATUS---------- --- ---------------- 1 NO  CURRENT 2 YES INACTIVE 3 YES INACTIVE 4 YES INACTIVE 
  • 查询日志历史
SQL> select * from V$LOG_HISTORY;      RECID        STAMP         THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#---------- ---------- ---------- ---------- ------------- --------- ------------ 1  716304893               1          1           158900 01-APR-10          260498 2  716317218               1          2           260498 14-APR-10          296893 3  716317260               1          3           296893 14-APR-10          296990 4  716319163               1          4           296990 14-APR-10          303247 5  716319176               1          5           303247 14-APR-10          303252 6  716384800               1          6           303252 14-APR-10          332583 7  716384854               1          7           332583 15-APR-10          332775 8  716384882               1          8           332775 15-APR-10          332881 9  716384892               1          9           332881 15-APR-10          332889  ============================================================================================ 
  1. 增加组(同时指定logfile):
  • 不指定组号(将自动使用组号: 当前最大组号+1)
ALTER DATABASE
  ADD LOGFILE ("/oracle/dbs/log1c.rdo", "/oracle/dbs/log2c.rdo") SIZE 500K;
  • 指定组号
ALTER DATABASE 
  ADD LOGFILE GROUP 10 ("/oracle/dbs/log1c.rdo", "/oracle/dbs/log2c.rdo")
      SIZE 500K;
  1. 增加组成员
  • 指定组号
ALTER DATABASE ADD LOGFILE MEMBER"/oracle/dbs/log2b.rdo"TO GROUP 2; ALTER DATABASE ADD LOGFILE MEMBER"/u01/app/oracle/oradata/knitter/redo05_3.rdo","/u01/app/oracle/oradata/knitter/redo05_4.rdo" TO GROUP 5; 
  • 不指定组号,指定所有组成员
ALTER DATABASE ADD LOGFILE MEMBER "/oracle/dbs/log2c.rdo"
    TO ("/oracle/dbs/log2a.rdo", "/oracle/dbs/log2b.rdo");
 说明: 在增加组成员的时候, 不能指定logfile文件大小,因为同一组(logGroup)中所有member文件是完全一样的(大小、内容),Oracle将自动根据已有组员确定其大小。如果指定了大小,将会出错,如:SQL> alter database add logfile member "/oracle/dbs/log1f.rdo" size 100k to group 5;alter database add logfile member "/oracle/dbs/log1f.rdo" size 100k to group 5                                                          *ERROR at line 1:ORA-00946: missing TO keyword  
  1. 删除组成员
 前提条件: 
  • 无法删除组中的最后一个成员
  • 所在组状态不能为 active 或 current, 否则必须先进行日志切换(log switch)
  • 如果数据库处于归档模式,必须(通过强制日志切换)先确保待删除组成员中的信息已经被归档
 
  • 强制切换日志
ALTER SYSTEM SWITCH LOGFILE;然后通过如下语句查询,确保待操作组不为active或current状态:SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; 
  • 删除组成员
ALTER DATABASE DROP LOGFILE MEMBER "/oracle/dbs/log3c.rdo"; 说明:
  • 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件  
  1. 删除组
 前提条件: 
  • 最起码要有两个组
  • 所在组状态不能为 active 或 current, 否则必须先进行日志切换(log switch)
  • 如果数据库处于归档模式,必须(通过强制日志切换)先确保待删除组成员中的信息已经被归档
 
  • 强制切换日志
ALTER SYSTEM SWITCH LOGFILE;然后通过如下语句查询,确保待操作组不为active或current状态:SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; 
  • 删除组
ALTER DATABASE DROP LOGFILE GROUP 3; 说明:
  • 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件   说明:
  • 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件  
  1. 移动与重命名
 
  • 方法一
增加一个新的日志组成员,删除原有组成员, 以达到移动和重命名的效果 
  • 方法二
 
  1. 关闭数据库:
SQL> shutdown;
  1. 使用操作系统指令,移动待处理的日志文件到目标位置
  2. 启动数据库到 MOUNT 状态
SQL> startup mount;
  1. 执行如下指令重命名日志文件:
ALTER DATABASE 
  RENAME FILE "/diska/logs/log1a.rdo", "/diska/logs/log2a.rdo" 
           TO "/diskc/logs/log1c.rdo", "/diskc/logs/log2c.rdo";
 
  1. 开启数据库:
SQL> alter database open; 
  1. 清空日志文件
 忠告: 在清空未归档日志文件前,进行数据库完全备份 使用场景:日志文件无法Drop, 常见有如下情况
  • 只有两组日志文件(不允许Drop)
  • 待处理日志文件处于current状态组
 指令:
  • 清空前自动归档:
ALTER DATABASE CLEAR LOGFILE GROUP 3;
  • 如果待清空日志文件数据已经损坏,同时数据库处于归档模式。此时,为了避免该损坏日志文件被归档,可使用如下指令:
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;Oracle EM 启动出错解决Linux下Oracle导入(imp)导出(exp)出现“failed to open ...for reader/wirte” 错误相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数