1、如何获得v$log的底层表?我们可以通过autotrace完成查看如:
可以知道当我们在查看v$log视图的时候,其实就是查看的x$kccle视图字段信息。查看该视图如下:
下面对比一下:
现在单独关注一下leflg字段,当该值为8说明是正在使用的logfile group:
dump出控制文件中的log file信息如下:
注意:也可以使用alter system set events ‘immediate trace name controlf level 12';完成控制文件的dump操作:
对应一下:
拿group3做一个分析:如下:
LOG FILE #3:(代表第三个group)
name #1: /u01/app/oracle/oradata/RHYS/onlinelog/o1_mf_3_9r1z73jf_.log(第一个日志文件)
name #2: /u01/app/oracle/fast_recovery_area/RHYS/onlinelog/o1_mf_3_9r1z73lp_.log(第二个日志文件)
Thread 1(线程1x$kccle.lethr) redo log links: forward: 0(对应x$kccle的LELFF为0) backward: 2(对应x$kccle的lelfb为2)
siz: 0x19000(对应x$kccle的lesiz转为10进制正好是102400): seq: 0x00000012(转为10进制为18对应x$kccle的leseq): hws: 0x2(对应x$kccle的lehws为2) bsz: 512(数据块对应x$kccle的lebsz)
nab: 0x4(对应lenab为4) flg: 0x0(对应x$kccle的leflg) dup: 2(对应x$kccle的ledup)
Archive links: fwrd: 0(前一个链表x$kccle的learf) back: 0 (对应x$kccle的learb)Prev scn: 0x0000.000f7664(转为10进制scn为1013348,对应lepvs)
Low scn: 0x0000.000f7675 05/27/2014 17:54:05(对应x$kccle的lelos)
Next scn: 0x0000.000f7678 05/27/2014 17:54:08(对应x$kccle的lenxt)
由此可知x$kccle正式抓取的是控制文件中的内容,这也是为什么数据块在mount状态下,可以查看v$log的原因了。
查询当前操作系统的块大小:
SQL> select max(lebsz) from x$kccle;
MAX(LEBSZ)
----------
512
大多数平台的操作系统块都为512byte
SQL> select leseq log_file_sequence,lesiz*512/1024/1024||'Mb' log_file_size,lebsz||'byte' os_block_size from x$kccle where lesiz>0;
LOG_FILE_SEQUENCE LOG_FILE_SIZE OS_BLOCK_SIZE
----------------- -------------------- --------------------
78 150Mb 512byte
77 150Mb 512byte
SQL> select sequence#,bytes/1024/1024 log_file_size from v$log;
SEQUENCE# LOG_FILE_SIZE
---------- --------------------
78 150
77 150
查询当前日志文件使用率
SQL> select le.leseq current_sequence,round(100*cp.cpodr_bno/le.lesiz,2)||'%' percentage,le.lesiz*512/1024/1024||'Mb' log_file_size,
2 round((le.lesiz*512/1024/1024)*(cp.cpodr_bno/le.lesiz),2)||'Mb' used_size
3 from x$kcccp cp,x$kccle le where le.leseq =cp.cpodr_seq and le.lesiz>0;
CURRENT_SEQUENCE PERCENTAGE LOG_FILE_SIZE USED_SIZE
-------------------------- ----------------------------------------- -------------------- ------------------------------------------
78 3.86% 150Mb 5.78Mb
其中X$kcccp.cpodr_seq就是current logfile的sequence,具体可以看上一篇blog,x$kcccp.cpodr_bno为已写入日志文件最后一个RBA中的日志块数,所以用x$kcccp.cpodr_bno/x$kccle.lesiz就能得到当前日志文件的使用率
X$KCCCP——[K]ernel [C]ache [C]ontrolfile management [c]heckpoint [p]rogress
SQL> DESC X$KCCCP;
名称 是否为空? 类型
----------------------------------------------------- -------- --------------
ADDR RAW(4)
INDX NUMBER -----通常只需要关心indx=0
INST_ID NUMBER
CPTNO NUMBER
CPSTA NUMBER
CPFLG NUMBER
CPDRT NUMBER ----select count(*) from v$bh where dirty='Y';检查点队列中的脏块数
CPRDB NUMBER
CPLRBA_SEQ NUMBER ----最后一次增量检查点中LOW RBA中的序列号
CPLRBA_BNO NUMBER ----最后一次增量检查点在LOW RBA中的块数
CPLRBA_BOF NUMBER ----最后一次增量检查点在LOW RBA中的偏移量
CPODR_SEQ NUMBER ----已写入日志文件的最后一个RBA的序列号=current日志$log.sequence#
CPODR_BNO NUMBER ----已写入日志文件最后一个RBA的块数
CPODR_BOF NUMBER ----已写入日志文件最后一个RBA的偏移量
CPODS VARCHAR2(16) ---- on disk rba 的 scn
CPODT VARCHAR2(20) ---- on disk rba 的时间
CPODT_I NUMBER
CPHBT NUMBER -----心跳,每三秒钟加一
CPRLS VARCHAR2(16)
CPRLC NUMBER
CPMID NUMBER
CPSDR_SEQ NUMBER
CPSDR_BNO NUMBER
CPSDR_ADB NUMBE
检查点队列中的脏块数
SQL> select cpdrt dirty,cpods on_disk_scn,cpodt on_disk_time,cphbt from x$kcccp where indx=0;
DIRTY ON_DISK_SCN ON_DISK_TIME CPHBT
---------- ---------------- -------------------- ----------
38 2346941 12/27/2009 23:17:56 706789519
SQL> select count(*) from v$bh where dirty='Y';
COUNT(*)
----------
38
当前日志序列号
SQL> select cpodr_seq,cpodr_bno from x$kcccp where indx=0;
CPODR_SEQ CPODR_BNO
---------- ----------
33 30160
SQL> select sequence# from v$log where status='CURRENT';
SEQUENCE#
----------
33
实例恢复的时候会从CPLRBA_SEQ到CPODR_SEQ,高于cpodr_seq的还在log buffer中,未写入redo file 所以不能用来恢复。
About Me
...............................................................................................................................
● 本文来自于:http://blog.csdn.net/rhys_oracle/article/details/27225405、http://blog.csdn.net/robinson1988/article/details/5087993
● 本文在itpub(http://blog.itpub.net/26736162)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文博客园地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/
● QQ群:230161599 微信群:私聊
● 联系我请加QQ好友(646634621),注明添加缘由
● 于 2017-03-26 09:00 ~ 2017-03-26 22:00 在魔都完成
● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
...............................................................................................................................
拿起手机使用微信客户端扫描下边的左边图片来关注小麦苗的微信公众号:xiaomaimiaolhr,扫描右边的二维码加入小麦苗的QQ群,学习最实用的数据库技术。