author:skate
time:2011/05/03
redo logfile不是每次都是用满了才切换的,那每个redo的使用率就需要我考虑了,
redo logfile的使用率,不能通过v$视图查询,但是我们可以通过底层视图得到.
获取日志文件使用率:
SELECT le.leseq CURRENT_LOG_SEQUENCE#,
100 * cp.cpodr_bno / LE.lesiz PERCENTAGE_FULL
from x$kcccp cp, x$kccle le
WHERE LE.leseq = CP.cpodr_seq
and LE.lethr > 0;
这里用到两个基表 x$kcccp 和 x$kccle
介绍一下引用到的视图及字段.
A. 基表x$kccle
x$kccle---- [K]ernel [C]ache [C]ontrolfile management [L]ogfil[E] record
这个视图记录了logfile的使用情况,其中:
LESIZ ------logfile大小(以逻辑块表示)
LESEQ------log sequence #
LEBSZ------logfile逻辑块大小
LETHR------logfile的线程
顺便说一下,redo logfile是以操作系统块为单位的.所以,这里的LEBSZ就是OS的块大小.
如果我们需要获取OS块大小,就可以从这里查询得到:
SQL> select max(lebsz) lbsize from x$kccle;
LBSIZE
----------
512
SQL>
B. 基表x$kcccp
x$kcccp----[K]ernel [C]ache [C]ontrolfile management [c]heckpoint [p]rogress
检查点增进(progress)
CPODR_SEQ------日志文件的seq #
CPODR_BNO------日志文件中使用块的数量
----------end--------