x$kccle视图深入剖析
今天是2014-05-27,实在无聊顺便研究一下x$kccle的内容吧。例如以下所有是自己分析和实验结果,真实可靠。
1、怎样获得v$log的底层表?我们能够通过autotrace完毕查看如:
SQL> set autotrace trace exp
SQL> set linesize 200
SQL> select * from v$log;
Execution Plan
----------------------------------------------------------
Plan hash value: 2536105608
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 197 | 0 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 1 | 197 | 0 (0)| 00:00:01 |
|* 2 | FIXED TABLE FULL | X$KCCLE | 1 | 148 | 0 (0)| 00:00:01 |
|* 3 | FIXED TABLE FIXED INDEX| X$KCCRT (ind:1) | 1 | 49 | 0 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("LE"."LEDUP"<>0 AND "LE"."INST_ID"=USERENV('INSTANCE'))
3 - filter("RT"."INST_ID"=USERENV('INSTANCE') AND "LE"."LETHR"="RT"."RTNUM")
SQL>
能够知道当我们在查看v$log视图的时候,事实上就是查看的x$kccle视图字段信息。
查看该视图例如以下:
SQL> desc x$kccle
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER 实例号
LENUM NUMBER 相似group_number
LESIZ NUMBER logfile的size,是操作系统的blocks数目
LESEQ NUMBER v$log中的SEQUENCE#
LEHWS NUMBER
LEBSZ NUMBER block size(操作系统的块)
LENAB NUMBER
LEFLG NUMBER 表示日志的状态信息
LETHR NUMBER v$log中的THREAD#
LELFF NUMBER 下一个logfile
LELFB NUMBER 前一个logfile
LELOS VARCHAR2(16) low scn相似v$log FIRST_CHANGE#
LELOT VARCHAR2(20) low time相似v$log FIRST_TIME
LENXS VARCHAR2(16) nex scn 相似v$log中下一个logfile的low FIRST_CHANGE#同样
LENXT VARCHAR2(20) nex time相似v$log中下一个logfile的low FIRST_TIME 同样
LEPVS VARCHAR2(16) prev scn, 与上一个logfile的low scn
LEARF NUMBER archive link forward
LEARB NUMBER archive link backward
LEFNH NUMBER
LEFNT NUMBER
LEDUP NUMBER 等同于v$log中members
SQL>
以下对照一下:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
1 1 2944 104857600 1 YES INACTIVE 121424676 21-MAY-14
2 1 2945 104857600 1 NO CURRENT 121427428 21-MAY-14
3 1 2943 104857600 1 YES INACTIVE 121421889 21-MAY-14
SQL>
SQL> select inst_id,lenum,lesiz,leseq,lehws,lebsz,lebsz*lesiz log_size,lenab,leflg,lethr,lelff,lelfb,lelos from x$kccle;
INST_ID LENUM LESIZ LESEQ LEHWS LEBSZ LOG_SIZE LENAB LEFLG LETHR LELFF LELFB LELOS
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------------
1 1 204800 2944 2 512 104857600 190256 1 1 2 0 121424676
1 2 204800 2945 1 512 104857600 4294967295 8 1 3 1 121427428
1 3 204800 2943 2 512 104857600 190256 1 1 0 2 121421889
SQL>
SQL> select inst_id,lenum,leseq,lethr,lelot,lenxs,lenxt,lepvs,learf,learb,lefnh,lefnt,ledup from x$kccle;
INST_ID LENUM LESEQ LETHR LELOT LENXS LENXT LEPVS LEARF LEARB LEFNH LEFNT LEDUP
---------- ----- ----- ---------- -------------------- ---------------- -------------------- ---------------- ---------- ---------- ---------- ---------- ----------
1 1 2944 1 05/21/2014 11:26:42 121427428 05/21/2014 11:26:55 121421889 0 0 1 1 1
1 2 2945 1 05/21/2014 11:26:55 281474976710655 121424676 0 0 2 2 1
1 3 2943 1 05/21/2014 11:26:30 121424676 05/21/2014 11:26:42 121419052 0 0 3 3 1
SQL>
如今单独关注一下leflg字段,当该值为8说明是正在使用的logfile group:
dump出控制文件里的log file信息例如以下:
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 19 52428800 512 2 NO CURRENT 1013368 27-MAY-14 2.8147E+14
2 1 17 52428800 512 2 NO ACTIVE 1013348 27-MAY-14 1013365 27-MAY-14
3 1 18 52428800 512 2 NO ACTIVE 1013365 27-MAY-14 1013368 27-MAY-14
SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump controlf 12
Statement processed.
注意:也能够使用alter system set events ‘immediate trace name controlf level 12';完毕控制文件的dump操作:
LOG FILE RECORDS
***************************************************************************
(size = 72, compat size = 72, section max = 16, section in-use = 3,
last-recid= 17, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 10, numrecs = 16)
LOG FILE #1:
name #5: /u01/app/oracle/oradata/RHYS/onlinelog/o1_mf_1_9r1z70w0_.log
name #6: /u01/app/oracle/fast_recovery_area/RHYS/onlinelog/o1_mf_1_9r1z70z2_.log
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x00000013 hws: 0x1 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000f7675
Low scn: 0x0000.000f7678 05/27/2014 17:54:08
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
LOG FILE #2:
name #3: /u01/app/oracle/oradata/RHYS/onlinelog/o1_mf_2_9r1z726s_.log
name #4: /u01/app/oracle/fast_recovery_area/RHYS/onlinelog/o1_mf_2_9r1z7291_.log
Thread 1 redo log links: forward: 3 backward: 1
siz: 0x19000 seq: 0x00000011 hws: 0x2 bsz: 512 nab: 0x14 flg: 0x0 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000f75ec
Low scn: 0x0000.000f7664 05/27/2014 17:54:01
Next scn: 0x0000.000f7675 05/27/2014 17:54:05
LOG FILE #3:
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 redo log links: forward: 0 backward: 2
siz: 0x19000 seq: 0x00000012 hws: 0x2 bsz: 512 nab: 0x4 flg: 0x0 dup: 2
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000f7664
Low scn: 0x0000.000f7675 05/27/2014 17:54:05
Next scn: 0x0000.000f7678 05/27/2014 17:54:08
相应一下:
SQL> select inst_id,lenum,leseq,lethr,lelot,lenxs,lenxt,lepvs,learf,learb,lefnh,lefnt,ledup from x$kccle;
INST_ID LENUM LESEQ LETHR LELOT LENXS LENXT LEPVS LEARF LEARB LEFNH LEFNT LEDUP
---------- ----- ----- ---------- -------------------- ---------------- -------------------- ---------------- ---------- ---------- ---------- ---------- ----------
1 1 19 1 05/27/2014 17:54:08 281474976710655 1013365 0 0 5 6 2
1 2 17 1 05/27/2014 17:54:01 1013365 05/27/2014 17:54:05 1013228 0 0 3 4 2
1 3 18 1 05/27/2014 17:54:05 1013368 05/27/2014 17:54:08 1013348 0 0 1 2 2
SQL> select inst_id,lenum,lesiz,leseq,lehws,lebsz,lebsz*lesiz log_size,lenab,leflg,lethr,lelff,lelfb,lelos from x$kccle;
INST_ID LENUM LESIZ LESEQ LEHWS LEBSZ LOG_SIZE LENAB LEFLG LETHR LELFF LELFB LELOS
---------- ----- ---------- ----- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------------
1 1 102400 19 1 512 52428800 4294967295 8 1 2 0 1013368
1 2 102400 17 2 512 52428800 20 0 1 3 1 1013348
1 3 102400 18 2 512 52428800 4 0 1 0 2 1013365
SQL>
拿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的原因了。
x$kccle视图深入剖析的更多相关文章
- 学习笔记:iOS 视图控制器(UIViewController)剖析
转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531136.html 视图控制器在iOS编程中占据非常重要的位置,因此我们一定要掌握 ...
- Cocoa编程中视图控制器与视图类详解
iPhone编程规则是:一个窗口,多个视图.UIView是iPhone屏幕上很多控件的基础类.每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView ...
- 基本功 | Litho的使用及原理剖析
1. 什么是Litho? Litho是Facebook推出的一套高效构建Android UI的声明式框架,主要目的是提升RecyclerView复杂列表的滑动性能和降低内存占用.下面是Litho官网的 ...
- 软件开发学习笔记 <一> UML
UML http://www.uml-diagrams.org http://www.umlchina.com/index.htm 统一建模语言(UML)始于1997年的一个OMG(对象管理组织)标准 ...
- Django Rest Framework源码剖析(八)-----视图与路由
一.简介 django rest framework 给我们带来了很多组件,除了认证.权限.序列化...其中一个重要组件就是视图,一般视图是和路由配合使用,这种方式给我们提供了更灵活的使用方法,对于使 ...
- 【转】 iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
原文:http://blog.csdn.net/hmt20130412/article/details/34523235 本来只是打算介绍一下addChildViewController这个方法的,正 ...
- Oracle创建视图view权限不足问题剖析
问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...
- rest_framework之视图及源码剖析
最初形态(工作中可能会使用) 引子 Django的CBV我们应该都有所了解及使用,大体概括一下就是通过定义类并在类中定义get post put delete等对应于请求方法的方法,当请求来的时候会自 ...
- WorldWind源码剖析系列:插件列表视图类PluginListView和插件列表视图项类PluginListItem
WorldWind中的插件类是个庞大的类,可以说从软件设计层面上统筹可扩展的插件体系的设计思想是WorldWind中的精华,值得学习和借鉴.插件体系中的所用到的类可以分为两大类,一类是插件类Plugi ...
随机推荐
- 使用Apriori算法进行关联分析
关联分析是一种在大规模数据集中寻找有趣关系的任务.这些关系可以有两种形式:频繁项集或者关联规则.频繁项集是指经常出现在一块的物品的集合,关联规则暗示两种物品之间可能存在很强的关系.一个项集的支持度被定 ...
- Codeforces 333E Summer Earnings ——Bitset
[题目分析] 找一个边长最大的三元环. 把边排序,然后依次加入.加入(i,j)时,把i和j取一个交集,看看是否存在,存在就找到了最大的三元环. 输出即可,n^3/64水过. [代码] #include ...
- *hdu5632Rikka with Array
$n \leq 10^300$,问所有$i<j$且$f_i>f_j$的$(i,j),1 \leq i \leq n,1 \leq j \leq n$数量.对某个数取模. $f(a,b,0/ ...
- Linux中有硬件时钟与系统时钟
在Linux中有硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启动时,系统时钟会去读取硬件时钟的设 ...
- 汉若塔系列续:汉诺塔VIII、汉诺塔IX、汉诺塔X。
汉诺塔VIII,在经典汉若塔问题上,问n个盘子的情况下,移动m次以后,是什么状态.(与第七代互为逆命题) 我的思路:本质还是dfs,但是用m的值来指引方向,每搜一层确定第i个盘子在哪个塔,o(n)的算 ...
- 记录一下 ps命令找出线程占用cpu情况
https://blog.csdn.net/xnn2s/article/details/11865339
- pyserial安装
参考网址:pyserial.sourceforge.net/pyserial.html#installation Download the archive from http://pypi.pytho ...
- PLsql/Oracle数据库中没有scott账户,如何创建并解锁
当然首先要装好Oracle 11g 然后还要有sqlplus,这个在Oracle11g的时候应该都会配上的 进入正题,如果oracle/plsql没scott账户,如何创建 先找到Oracle安装目录 ...
- Java网络编程之InetAddress和URL
在Java中提供了专门的网络开发程序包---java.net,java的网络编程提供了两种通信协议:TCP(传输控制协议)和UDP(数据报协议). 一.IP(Internet Protocol) 与I ...
- BUPT复试专题—字符串处理(2016)
题目描述 有以下三种操作. (1)COPY l r(0<=l<=r<n),n代表s串的长度.这个表示将s串从l到r的序列复制到剪贴板t里面,覆盖t字符串. 例如s为abcde ...