日志文件(logfile)管理

日志文件记录了所有数据的改变过程,主要目的是为了提高数据的可恢复性

ORACLE的日志采用循环日志组的方式,数据库有多组日志,采用循环写。

日志组的分布:
    1、把日志放到最快的磁盘上
    2、归档日志、联机日志、甚至数据文件等分开放
    3、奇偶组分开


日志组的创建:
     ALTER DATABASE ADD LOGFILE [GROUP n] 文件名 SIZE 大小

    SQL> alter database add logfile '/u01/app/oracle/oradata/orcl/redo04.log'
         size 50m;

查看日志信息
    v$log
    v$logfile

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

日志切换:
    一般情况下是自动切换的,写满一组后,自动切到下一组,切换按 SEQUENCE# 顺序
    可以输入
        SQL> alter system switch logfile;
    手工切换

添加日志组成员
    创建时:
    ALTER DATABASE ADD LOGFILE (多个文件名) ......

    SQL> alter database add logfile            
      2  ('/u01/app/oracle/oradata/orcl/redo05a.log',
      3  '/u01/app/oracle/oradata/orcl/redo05b.log')
      4  size 50m;

    创建后添加:
    SQL> alter database add logfile member      
      2  '/u01/app/oracle/oradata/orcl/redo03b.log' to group 3;
   
    SQL> alter database add logfile member
      2  '/u01/app/oracle/oradata/orcl/redo01b.log' to group 1,
      3  '/u01/app/oracle/oradata/orcl/redo02b.log' to group 2,
      4  '/u01/app/oracle/oradata/orcl/redo04b.log' to group 4;

 
删除成员:
    SQL> alter database drop logfile member
        '/u01/app/oracle/oradata/orcl/redo01b.log';

    注意:以上的操作仅是在控制文件中,将日志信息给修改了,操作系统上的文件还在,需要手工清理
         另每个组至少要保留一个成员

删除日志组:
    删除日志组时,只能删除 inactive 状态的日志组,active 和 current 的日志组不能删除

    SQL> alter database drop logfile group 1;


清除(初始化)日志文件
    SQL> alter database clear unarchived logfile group 2;

    有时日志文件损坏时可以采用此方法修复

   
   
archive_lag_target 参数可控制日志文件的自动切换日志
    SQL> alter system set archive_lag_target=600;


与日志损坏有关的隐含参数:
    一般情况下,如果 active 和 current 日志损坏(在停库时),是没办法打开数据库的
       
    "_allow_resetlogs_corruption"=true

    与之类似的参数还有:
    _corrupted_rollback_segments
    _offline_rellback_segments

OMF管理联机日志文件
    OMF (Oracle Managed File) 是从9i开始引入的,该方法简化了操作系统层上的文件管理

    OMF要用的话,要设置几个参数
        db_create_file_dest  
        db_create_online_log_dest_1 
        db_create_online_log_dest_2 
        db_create_online_log_dest_3 
        db_create_online_log_dest_4  
        db_create_online_log_dest_5    

    SQL> alter system set db_create_online_log_dest_1='/u02/';
    SQL> alter system set db_create_online_log_dest_2='/u03/';


    如果上面的参数不设置的话,OMF会把文件放在闪回区中

    使用OMF
   
    SQL> alter database add logfile;            默认大小100M
    SQL> alter database add logfile size 50m;


查看日志生成量信息
    1、set autotrace on  --语句级
    然后执行一些操作,有日志生成量的统计
   
    2、通过 v$mystat 查看一段时间当前用户的日志生成量
    SQL> select a.name,b.value from v$statname a,v$mystat b
      2  where a.STATISTIC#=b.STATISTIC# and a.name='redo size';

    NAME                                          VALUE
    ------------------------------------------- ----------
    redo size                                     88328
   
    3、查看实例生成的日志量(v$sysstat)
    SQL> select * from v$sysstat where name='redo size';
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21175589/viewspace-755713/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21175589/viewspace-755713/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值