增加REDO LOG FILE

chown oracle:dba /dev/rredo*.dbf
select * from v$logfile;
select * from v$log;
alter system checkpoint;
alter system switch logfile;
alter system checkpoint;
select * from v$log;
alter database drop logfile group 10;
ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rredo04a.dbf', '/dev/rredo04b.dbf') SIZE 1000M;
alter database drop logfile group 1
ALTER DATABASE ADD LOGFILE GROUP 1 ('/dev/rredo01a.dbf', '/dev/rredo01b.dbf') SIZE 1000M;

alter database drop logfile group 2
ALTER DATABASE ADD LOGFILE GROUP 2 ('/dev/rredo02a.dbf', '/dev/rredo02b.dbf') SIZE 1000M;
alter database drop logfile group 3
ALTER DATABASE ADD LOGFILE GROUP 3 ('/dev/rredo03a.dbf', '/dev/rredo03b.dbf') SIZE 1000M;

 


   查看日志文件:select * from v$logfile;   select * from v$log;
  
   set wrap on
   set linesize 1000
   set head off
   column "GROUP#" format 9
   column "THREAD#" format 9
   column "FILENAME" format a20  
 select b.GROUP#     "GROUP#",
        b.THREAD#     "THREAD#",
        a.MEMBER     "FILENAME",
        ROUND(b.BYTES/1024/1204)     "FILESIZE",
        b.ARCHIVED    "ARCH",
        b.STATUS     "CURRENT",
        b.FIRST_TIME     "CREATETIME"   
 from v$logfile a,v$log b
 where a.GROUP#=b.GROUP#;    
  
   切换日志,以便删除废弃的日志文件:alter system switch logfile
  
   强迫checkpoint:alter system checkpoint;
  
   增加在线的redolog日志组:
   alter database add logfile [group 4] ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
  
   增加在线的redolog日志组成员:
   alter database add logfile member '/c/log1b.rdo' to group 1,'/d/log2b.rdo' to group 2;
  
   改名在线的redolog:alter database rename file 'c:/oracle/oradata/oradb/redo01.log'
                                              to 'c:/oracle/oradata/redo01.log';
                                             
   删掉在线redo日志组和成员:alter database drop logfile group 3;
   alter database drop logfile member 'c:/oracle/oradata/redo01.log';
   
   清在线redolog日志:alter database clear [unarchived] logfile 'c:/oracle/log2a.rdo';
  
   看归档日志模式:
ARCHIVE LOG LIST
设置自动归档:alter system archive log start
设置instance启动时就开始归档:alter system set log_archive_start=true scope=spfile;

日志管理

1.forcing log switches
sql> alter system switch logfile;
2.forcing checkpoints
sql> alter system checkpoint;
3.adding online redo log groups
sql> alter database add logfile [group 4]
sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
4.adding online redo log members
sql> alter database add logfile member
sql> '/disk3/log1b.rdo' to group 1,
sql> '/disk4/log2b.rdo' to group 2;
5.changes the name of the online redo logfile
sql> alter database rename file 'c:/oracle/oradata/oradb/redo01.log'
sql> to 'c:/oracle/oradata/redo01.log';
6.drop online redo log groups
sql> alter database drop logfile group 3;
7.drop online redo log members
sql> alter database drop logfile member 'c:/oracle/oradata/redo01.log';
8.clearing online redo log files
sql> alter database clear [unarchived] logfile 'c:/oracle/log2a.rdo';
9.using logminer analyzing redo logfiles
a. in the init.ora specify utl_file_dir = ' '
b. sql> execute dbms_logmnr_d.build('oradb.ora','c:/oracle/oradb/log');
c. sql> execute dbms_logmnr_add_logfile('c:/oracle/oradata/oradb/redo01.log',
sql> dbms_logmnr.new);
d. sql> execute dbms_logmnr.add_logfile('c:/oracle/oradata/oradb/redo02.log',
sql> dbms_logmnr.addfile);
e. sql> execute dbms_logmnr.start_logmnr(dictfilename=>'c:/oracle/oradb/log/oradb.ora');
f. sql> select * from v$logmnr_contents(v$logmnr_dictionary,v$logmnr_parameters
sql> v$logmnr_logs);
g. sql> execute dbms_logmnr.end_logmnr;

 

 

 

 

 

扩redo例子!

如果你的redo log大小设的太小可能会造成redo log切换频繁。
增加redo log file个数是没有用的,因为ARC进程对多redo log file的写是并行的。
如果增加redo log file大小应该会降低checkpoint的频率;至于调整后对recover可能会有何影响我也说不太清楚,呵呵。

下面我以前做的一个增加redo log file大小的范例,可以参考一下:
假设原系统有:redo01.log,redo02.log,redo03.log
这三个redo log file,每个redo log file 512K;
现在想更换为3组,每组2个logfile,并且大小改为25M;

1)首先察看一下当前使用的redo log情况
SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 17163 512000 1 YES INACTIVE 1745929 11-MAY-05
2 1 17165 512000 1 NO CURRENT 1745941 11-MAY-05
3 1 17162 512000 1 YES INACTIVE 1745880 11-MAY-05

2)创建group4
>alter database add logfile group 4 ('/path/to/redo_g4_m1.log','/path/to/redo_g4_m2.log') size 50M;

3)检查一下
SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 17167 512000 1 YES INACTIVE 1745945 11-MAY-05
2 1 17168 512000 1 NO CURRENT 1745947 11-MAY-05
3 1 17166 512000 1 YES INACTIVE 1745943 11-MAY-05
4 1 0 26214400 2 YES UNUSED 0

4)按照同样的方法,创建group5,group6,创建好后再检查一下.。下面是全部创建好后的
SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 17167 512000 1 YES INACTIVE 1745945 11-MAY-05
2 1 17168 512000 1 NO CURRENT 1745947 11-MAY-05
3 1 17166 512000 1 YES INACTIVE 1745943 11-MAY-05
4 1 0 26214400 2 YES UNUSED 0
5 1 0 26214400 2 YES UNUSED 0
6 1 0 26214400 2 YES UNUSED 0

5)然后switch到新创建的group4
SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 17167 512000 1 YES INACTIVE 1745945 11-MAY-05
2 1 17168 512000 1 YES INACTIVE 1745947 11-MAY-05
3 1 17166 512000 1 YES INACTIVE 1745943 11-MAY-05
4 1 17169 26214400 2 YES INACTIVE 1745948 11-MAY-05
5 1 17170 26214400 2 NO CURRENT 1745949 11-MAY-05
6 1 0 26214400 2 YES UNUSED 0

可以看到已经切换到group5了,然后就可以来删除原来的redo log了。

6)先删group3
SQL> alter database drop logfile group 3;

Database altered.

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 17167 512000 1 YES INACTIVE 1745945 11-MAY-05
2 1 17168 512000 1 YES INACTIVE 1745947 11-MAY-05
4 1 17169 26214400 2 YES INACTIVE 1745948 11-MAY-05
5 1 17170 26214400 2 NO CURRENT 1745949 11-MAY-05
6 1 0 26214400 2 YES UNUSED 0

同样的,接着把group2和group1删掉,都删好后
SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
4 1 17169 26214400 2 YES INACTIVE 1745948 11-MAY-05
5 1 17170 26214400 2 NO CURRENT 1745949 11-MAY-05
6 1 0 26214400 2 YES UNUSED 0

 

 

由非归档模式改归档模式必须重启动数据库.
oracle9i
准备:
1. 查看是否为归档模式:
archive log list;
 
2. 如果目前是使用spfile启动:
create pfile=’xxxxx’ from spfile;对初始化文件进行备份
3 规划归档日志存储空间.归档目标
4.  归档日志格式

按以下步骤更改:
1. alter system set log_archive_start = true scope=spfile;
 
2. alter system set log_archive_dest_1 = 'location=c:/' scope=spfile;
 
3. alter system set log_archive_format = 'arch%s_%t.arc' scope=spfile;
 
4. shutdown immediate;
5. startup mount;
6. alter database archivelog;
7. alter database open;
8. archive log list;
 
9. alter system switch logfile;
查看设定的归档目标有无按归档格式生成归档日志;

 

配置数据库归档模式(ARCHIVELOG/NOARCHIVELOG)
  本文介绍如何启动或关闭数据库归档模式
  Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog)
  归档与非归档的区别请参考ORACLE相关文档。
  数据库循环使用LOG文件,若数据库处于“非归档日志”模式,当LOG文件被使用后,文件中记录的重做信息将覆盖。为了恢复数据库,必须启用归档。
  归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。

[系统环境]
OS Version:
  Microsoft Window XP Professional 版本2002 Service Pack 3

Oracle Version:
  SQL> select * from v$version;

  BANNER
  ----------------------------------------------------------------
  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
  PL/SQL Release 10.2.0.1.0 - Production
  CORE    10.2.0.1.0      Production
  TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
  NLSRTL Version 10.2.0.1.0 - Production

[操作步骤]

  一、设置NOARCHIVELOG--->ARCHIVELOG
    1、确认当前数据模式
      SQL> select dbid, name, log_mode from v$database;

            DBID NAME      LOG_MODE
      ---------- --------- ------------
      1182163329 ORCL      NOARCHIVELOG
      注:通过查询v$database进行确认数据库当前处于何种模式
 
    2、干净关闭数据库(shutdown normal或shutdown immediate)
      SQL> shutdown normal
      数据库已经关闭。
      已经卸载数据库。
      ORACLE 例程已经关闭。

    3、启动数据库至MOUNT状态
      (a)启动数据库到NOMOUNT状态
      SQL> startup nomount
      ORACLE 例程已经启动。

      Total System Global Area  209715200 bytes
      Fixed Size                  1248140 bytes
      Variable Size              79692916 bytes
      Database Buffers          125829120 bytes
      Redo Buffers                2945024 bytes
    
      (b)执行alter database mount更改数据到MOUNT状态
      SQL> alter database mount;
      数据库已更改。
      注:通过分步操作使数据库启动至MOUNT状态

    4、设置数据库为ARCHIVELOG状态(alter database archivelog)
      (a)更改前状态:
      SQL> archive log list
      数据库日志模式             非存档模式
      自动存档             禁用
      存档终点            USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列     6
      当前日志序列           8

      (b)执行更改命令:alter database archivelog
      SQL> alter database archivelog;
      数据库已更改。

      (c)更改后状态:
      SQL> archive log list
      数据库日志模式            存档模式
      自动存档             启用
      存档终点            USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列     6
      下一个存档日志序列   8
      当前日志序列           8

    5、打开数据库
      SQL> alter database open;
      数据库已更改。


  二、设置ARCHIVELOG--->NOARCHIVELOG
    1、确认当前数据模式
      SQL> archive log list
      数据库日志模式            存档模式
      自动存档             启用
      存档终点            USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列     6
      下一个存档日志序列   8
      当前日志序列           8

    2、干净关闭数据库(shutdown normal或shutdown immediate)
      SQL> shutdown immediate
      数据库已经关闭。
      已经卸载数据库。
      ORACLE 例程已经关闭。

    3、启动数据库至MOUNT状态
      SQL> startup mount
      ORACLE 例程已经启动。

      Total System Global Area  209715200 bytes
      Fixed Size                  1248140 bytes
      Variable Size              79692916 bytes
      Database Buffers          125829120 bytes
      Redo Buffers                2945024 bytes
      数据库装载完毕。

    4、设置数据库为NOARCHIVELOG状态(alter database noarchivelog)
      (a)更改前状态:
      SQL> archive log list
      数据库日志模式            存档模式
      自动存档             启用
      存档终点            USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列     6
      下一个存档日志序列   8
      当前日志序列           8

      (b)执行更改命令:alter database noarchivelog
      SQL> alter database noarchivelog;
      数据库已更改。

      (c)更改后状态:
      SQL> archive log list
      数据库日志模式             非存档模式
      自动存档             禁用
      存档终点            USE_DB_RECOVERY_FILE_DEST
      最早的联机日志序列     6
      当前日志序列           8

    5、打开数据库
      SQL> alter database open;
      数据库已更改。


[说明]
1、Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。有两种方式,如下
  (a)在pfile中设置如下参数:
    log_archive_start = true
    重启数据库此参数生效,此时数据库处于自动归档模式。
 (b)以在数据库启动过程中,手工执行:
    archive log start
    使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。

2、从Oracle10g开始,log_archive_start参数已经废除

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值