[20160529]快速提交的一个疑问3.txt

简介: [20160529]快速提交的一个疑问3.txt --链接 http://blog.itpub.net/267265/viewspace-2108017/ --在上一次链接里面提到在快速提交时,itl槽的_ktbitun.

[20160529]快速提交的一个疑问3.txt

--链接 http://blog.itpub.net/267265/viewspace-2108017/

--在上一次链接里面提到在快速提交时,itl槽的_ktbitun._ktbitfsc记录是dml记录长度减少的长度.
--如果清除后,会kdbh.kdbhavsp相加写回kdbh.kdbhavsp,以前一直对快速提交没有很好的理解,我一直以为会清除数据信息里面的lock,实
际上在下次ITL覆盖时清除,还是通过一个例子来说明:

1.环境:
SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

--家里只有12c,而且还是windows的版本.

create table t ( id number ,text varchar2(200)) segment creation immediate;
insert into t select rownum ,lpad('a',50,'a') from dual connect by level<=4;
commit ;

SCOTT@test01p> select ora_rowscn,rowid,t.id from t;
ORA_ROWSCN ROWID                      ID
---------- ------------------ ----------
  22661664 AAAZpJAAJAAAACNAAA          1
  22661664 AAAZpJAAJAAAACNAAB          2
  22661664 AAAZpJAAJAAAACNAAC          3
  22661664 AAAZpJAAJAAAACNAAD          4

SCOTT@test01p> @ rowid AAAZpJAAJAAAACNAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
    105033          9        141          0 9,141                alter system dump datafile 9 block 141 ;

SCOTT@test01p> alter  system checkpoint ;
System altered.

SCOTT@test01p> alter system dump datafile 9 block 141 ;
System altered.

2.检查转储:
Block header dump:  0x0240008d
Object id on Block? Y
seg/obj: 0x19a49  csc: 0x00.159ca1f  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x2400088 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.021.00005ad1  0x01400506.0549.0c  --U-    4  fsc 0x0000.0159ca20
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

--//可以发现ITL=0x01 ,快速提交,Lck=4有4条记录.

3.修改记录看看:
update t set text=lpad('A',35,'A') where id=1;
commit;

alter  system checkpoint ;
alter system dump datafile 9 block 141 ;

--//检查转储:
Block header dump:  0x0240008d
Object id on Block? Y
seg/obj: 0x19a49  csc: 0x00.159ca99  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x2400088 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.021.00005ad1  0x01400506.0549.0c  C---    0  scn 0x0000.0159ca20
0x02   0x000f.01c.00000271  0x0140037a.00bd.07  --U-    1  fsc 0x000f.0159ca9b

--//注意看fsc 前面部分 0x000f.
--//可以发现itl=0x01的flag=C---, Lck=0.
--//通过bbed观察也是一样:
BBED> p *kdbr[1]
rowdata[99]
-----------
ub1 rowdata[99]                             @8017     0x2c

BBED> x /rncc
rowdata[99]                                 @8017
-----------
flag@8017: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8018: 0x00
cols@8019:    2

col    0[2] @8020: 2
col   1[50] @8023: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

--//可以发现lock=0x00,已经清除.

BBED> p kdbh
struct kdbh, 14 bytes                       @100
   ub1 kdbhflag                             @100      0x00 (NONE)
   b1 kdbhntab                              @101      1
   b2 kdbhnrow                              @102      4
   sb2 kdbhfrre                             @104     -1
   sb2 kdbhfsbo                             @106      26
   sb2 kdbhfseo                             @108      7818
   b2 kdbhavsp                              @110      7834
   b2 kdbhtosp                              @112      7849


4.继续测试:
--//如果我再次修改id=1的记录.应该会使用itl=0x01,因为修改记录都是id=1的记录,这样itl=0x02的槽会清除,flag会改为c,lck=0.

测试看看:

update t set id=1 where id=1;
commit ;
alter  system checkpoint ;
alter system dump datafile 9 block 141 ;

Block header dump:  0x0240008d
Object id on Block? Y
seg/obj: 0x19a49  csc: 0x00.159cce9  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x2400088 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0005.00c.00005b0e  0x014009b4.05a4.2b  --U-    1  fsc 0x0000.0159ccf4
0x02   0x000f.01c.00000271  0x0140037a.00bd.07  C---    0  scn 0x0000.0159ca9b

--//可以itl=0x02的信息已经清除,改为提交,lck=0. scn的前面部分变成了0.
--//通过bbed观察:

BBED> p kdbh
struct kdbh, 14 bytes                       @100
   ub1 kdbhflag                             @100      0x00 (NONE)
   b1 kdbhntab                              @101      1
   b2 kdbhnrow                              @102      4
   sb2 kdbhfrre                             @104     -1
   sb2 kdbhfsbo                             @106      26
   sb2 kdbhfseo                             @108      7818
   b2 kdbhavsp                              @110      7849
   b2 kdbhtosp                              @112      7849

--//kdbhavsp 增加 15. 7834+15=7849

--总结:
--主要是通过测试理解一些细节性的东西.

目录
相关文章
|
6月前
记录一次svn提交限制提交日志 中文冲突
记录一次svn提交限制提交日志 中文冲突
48 0
|
3月前
|
开发工具 数据安全/隐私保护 git
Git使用经验总结3-删除远端提交记录
Git使用经验总结3-删除远端提交记录
380 0
|
6月前
|
开发工具 git
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
90 5
|
前端开发 开发工具 git
#私藏项目实操分享#【GIT工作记录一】如何保证代码的部分文件不被提交
#私藏项目实操分享#【GIT工作记录一】如何保证代码的部分文件不被提交
111 0
提交工单和知道提问的区别
最近阿里云新增了一个帮助用户解决问题的频道:知道,在知道提出的问题,会由ACE工程师为你快速解答。 工单和提问的区别 1、响应时间 提问的响应时间会更快,可能一分钟内就会收到回答,所以提出问题之后请及时关注;如果回答者对您的问题不是很理解,提出了疑问,请及时补充完善您的问题;如果回答帮助您解决了问题,请及时采纳,对回答者予以肯定,也是表示尊重。
3236 0
|
开发工具 git 开发者
git查看某开发者在一段时间内容提交的代码摘要信息
git查看某开发者在一段时间内容提交的代码摘要信息 例如: git log --author="zhangphil" --after="2018-05-21 00:00:00" --before="2018-05-25 ...
1883 0
|
C++ iOS开发
c++读取和写入TXT文件的整理
c++读取和写入TXT文件的整理 #include "stdafx.h" #include //无论读写都要包含头文件 #include #include using namespace std; in...
1033 0
开源中国/码云 README.md上传图片的爬坑记录
整理代码,将电脑中长期没有用过的代码放到码云上托管,给项目录制gif动画,在写项目README.md时使用,结果在上传图片时一直出问题,现记录下最后解决方法:   1. 最初直接将录制好的图片放入到img文件夹,在本地使用markdown工具写入相对路径图片显示正常,提交到码云之后,路径有误。
2033 0
|
SQL Oracle 关系型数据库
[20171115]关于逻辑读的疑问.txt
[20171115]关于逻辑读的疑问.txt --//有网友指出[20150209]为什么少1个逻辑读.txt,链接:http://blog.itpub.net/267265/viewspace-1430902/ --//如何验证是这样操作的.
973 0