各位好:
    我想问一下:1、归档重做日志后,是归档成功后,再覆盖下一个日志组的日志文件,还是先覆盖下一个日志组的日志文件,再执行归档呢?
2、请问如何查看一个重做日志有没被覆盖?
3、如何查看一个重做日志有多少M多大的重做日志?-----
以上问题,还望大侠能多多指教,感谢!

解决方案 »

  1.   

    1、看数据库当前处于的归档模式,如果是归档模式的话,由Archive进程来将已经写满的日志文件进行归档操作,形成归档日志文件。如果处于非归档模式的话,LGWR进程在循环覆盖日志文件,就没有归档,这也是为什么归档不开,无法通过归档重做日志文件恢复数据的原因。 启用了ArchiveLog模式之后,是需要先进行归档,然后才覆盖该日志文件的,因为有一个现象,就是LGWR进程有时候会法无法访问下一个组,因为当前组是处于正在归档的状态下。
    2、可以通过SCN号码进行比较。
    3、SELECT * FROM V$LOGFILE;
    里面会有你机器上LOGFILE的位置,找到位置之后,ls -la  或者 右键点击看属性就可以知道当前日志文件的大小。
    通过OEM去看日志文件,也是能够看到大小的。还有,在创建归档日志的时候,是需要指定大小的,比如ALTER DATABASE ADD LOGFILE GROUP 3('LOG1A.RDO','LOG2A.RDO)')SIZE 50M
      

  2.   

    1、归档重做日志后,是归档成功后,再覆盖下一个日志组的日志文件,还是先覆盖下一个日志组的日志文件,再执行归档呢?重做日志组覆盖和归档日志归档是同时进行2、请问如何查看一个重做日志有没被覆盖?select * from v$log;
    status=INACTIVE表示已经覆盖
    status=ACTIVE表示覆盖
    status=CURRENT表示当前正在使用
    status=NONE表示从未被使用3、如何查看一个重做日志有多少M多大的重做日志?select bytes/1024/1024 from v$log;
      

  3.   

    1)select name,value from v$sysstat where name='redo size';得到A
    2)做一个DML事务
    3)select name,value from v$sysstat where name='redo size';得到B
    4)A-B
    日志每时每刻都在记录,区别多少是可用的是没有任何意义哈