日期:2014-05-17  浏览次数:20840 次

请教关于日志文件的几个问题?
各位好:
    我想问一下:

1、归档重做日志后,是归档成功后,再覆盖下一个日志组的日志文件,还是先覆盖下一个日志组的日志文件,再执行归档呢?
2、请问如何查看一个重做日志有没被覆盖?
3、如何查看一个重做日志有多少M多大的重做日志?

-----
以上问题,还望大侠能多多指教,感谢!

------解决方案--------------------
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
------解决方案--------------------
支持1楼,写的很详细
------解决方案--------------------
1、归档重做日志后,是归档成功后,再覆盖下一个日志组的日志文件,还是先覆盖下一个日志组的日志文件,再执行归档呢?

重做日志组覆盖和归档日志归档是同时进行

2、请问如何查看一个重做日志有没被覆盖?

select * from v$log;
status=INACTIVE表示已经覆盖
status=ACTIVE表示覆盖
status=CURRENT表示当前正在使用
status=NONE表示从未被使用

3、如何查看一个重做日志有多少M多大的重做日志?

select bytes/1024/1024 from v$log;
------解决方案--------------------
引用:
引用:1、看数据库当前处于的归档模式,如果是归档模式的话,由Archive进程来将已经写满的日志文件进行归档操作,形成归档日志文件。如果处于非归档模式的话,LGWR进程在循环覆盖日志文件,就没有归档,这也是为什么归档不开,无法通过归档重做日志文件恢复数据的原因。 启用了ArchiveLog模式之后,是需要先进行归档,然后才覆盖该日志文件的,……

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
日志每时每刻都在记录,区别多少是可用的是没有任何意义哈