动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.Oracle学习应用之数据库性能优化.
.Linux 硬件稳定性指南,第 2 部分.
.Oracle数据库物理文件大小的限制.
.Oracle的几种字符类型的区别与使.
.Oracle中如何直接运行OS命令(上).
.ORACLE在HP-UX下的系列问题处理(.
.Oracle数据库技术(25).
.客户信息系统之Oracle方案.
.ORACLE 数据库容灾复制解决方案s.
.用C++ 产生 SQL*Loader 各类文件.
.Oracle9i中取得建表和索引的DDL语.
.Oracle9i初始化参数中文说明5.
.Oracle9i資料庫管理實務講座(一).
.配置redhat linux 7.0中的xinetd.
.Oracle 对 Linux 的策略是什么?.
.使用智能优化器提高Oracle的性能.
.Oracle 9i Installation on Red .
.Oracle捕蝉SAP在后 商业软件领域.
.Uedit32编辑器与SQLPlus结合使用.
.如何选购Linux可以搭配的机器之V.

关于回滚机制的一些测试

发表日期:2008-2-9 |



  SQL> connect test/test@test
  已连接。
  SQL> create table test (a number);
  
  表已创建。
  
  SQL> insert into test values(1);
  
  已创建 1 行。
  SQL> select segment_name,header_file,header_block from dba_segments where segmen
  t_name like 'TEST';
  
  SEGMENT_NAME  HEADER_FILE     HEADER_BLOCK
  TEST           1         35387
  SQL> alter system dump datafile 1 block 35388;
  
  系统已更改。
  DUMP出数据头文件查看itl(interested transaction list)
  
  *** 2003-06-09 18:41:19.359
  Start dump data blocks tsn: 0 file#: 1 minblk 35388 maxblk 35388
  buffer tsn: 0 rdba: 0x00408a3c (1/35388)
  scn: 0x0000.00105cd3 seq: 0x04 flg: 0x00 tail: 0x5cd30604
  frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
  
  Block header dump: 0x00408a3c
  Object id on Block? Y
  seg/obj: 0x6487 csc: 0x00.105cd2 itc: 1 flg: O typ: 1 - DATA
  fsl: 0 fnx: 0x0 ver: 0x01
  
  Itl   Xid    Uba   Flag Lck   Scn/Fsc
  0x01  xid: 0x0008.000.00000002 uba: 0x00800dc4.0000.05 ----  1 fsc 0x001c.00000000
  
  /*这里可以看到xid= 0x0008.000.00000002(事务id)
  uba= 0x00800dc4.0000.05(undo block address)
  lck= 1(受影响的行数)
  根据Xid的结构得到
  0x0008.000.00000002
   0x0008 – Undo Segment Number
   000 – Transaction Table Slot Number
   00000002– Wrap
  根据uba的结构得到
   0x00800dc4.0000.05
   0x00800dc4– Address of the last undo block used
   0000 – Sequence
   05 – Last Entry in UNDO record map
  */
  data_block_dump
  ===============
  以下省略。。。。。。
  
  根据 0x0008 – Undo Segment Number,
  SQL> select a.segment_name,a.header_file,a.header_block from dba_segments a,dba
  _rollback_segs b where a.segment_name=b.segment_name and b.segment_id='8';
  
  SEGMENT_NAME  HEADER_FILE  HEADER_BLOCK
  RBS7              2     3522
  
  然后dump rbs头查看trans table
  Start dump data blocks tsn: 1 file#: 2 minblk 3522 maxblk 3522
  buffer tsn: 1 rdba: 0x00800dc2 (2/3522)
  scn: 0x0000.00105cd2 seq: 0x01 flg: 0x00 tail: 0x5cd20e01
  frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
  
  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0   space2: 0   #extents: 8   #blocks: 511
  last map 0x00000000 #maps: 0   offset: 4128
  Highwater:: 0x00800dc4 ext#: 0   blk#: 1   ext size: 63
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk 0x00000000 offset: 0
  Unlocked
  Map Header:: next 0x00000000 #extents: 8  obj#: 0   flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
  0x00800dc3 length: 63
  0x00800d42 length: 64
  0x00800582 length: 64
  0x00800342 length: 64
  0x00800482 length: 64
  0x008017c2 length: 64
  0x00801802 length: 64
  0x00800c42 length: 64
  
  TRN CTL:: seq: 0x0000 chd: 0x0001 ctl: 0x0061 inc: 0x00000000 nfb: 0x0000
  mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
  uba: 0x00800dc4.0000.01 scn: 0x0000.00000000
  Version: 0x01
  FREE BLOCK POOL::
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  TRN TBL::
  
  index state cflags wrap#  uel   scn  dba   parent-xid  nub
  ------------------------------------------------------------------------------------------------
  0x00  10  0x80 0x0002 0x0000 0x0000.00105cd2 0x00800dc4 0x0000.000.00000000 0x00000001
  0x01  9  0x00 0x0001 0x0002 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000
  以下省略。
。。。。。。
  根据从xid中得到的000 – Transaction Table Slot Number
  去找到事务表中记载的undo块的地址dba=0x00800dc4(也可从uba中直接得到)
  接下来我们来看一下undo头的地址rdba: 0x00800dc2 (2/3522)
  所以我们去dump 3524即undo头+2
  *** 2003-06-09 18:42:52.734
  Start dump data blocks tsn: 1 file#: 2 minblk 3524 maxblk 3524
  buffer tsn: 1 rdba: 0x00800dc4 (2/3524)
  scn: 0x0000.00105cd3 seq: 0x04 flg: 0x00 tail: 0x5cd30204
  frmt: 0x02 chkval: 0x0000 type: 0x02=KTU UNDO BLOCK
  
  ********************************************************************************
  UNDO BLK:
  xid: 0x0008.000.00000002 seq: 0x0  cnt: 0x5  irb: 0x5  icl: 0x0  flg: 0x0000
  
  Rec Offset   Rec Offset   Rec Offset   Rec Offset   Rec Offset
  ---------------------------------------------------------------------------
  0x01 0x1f80   0x02 0x1f18   0x03 0x1eb0   0x04 0x1e48   0x05 0x1de0
  
  *-----------------------------
  * Rec #0x1 slt: 0x00 objn: 25735(0x00006487) objd: 25735 tblspc: 0(0x00000000)
  *    Layer: 11 (Row)  opc: 1  rci 0x00
  Undo type: Regular undo  Begin trans  Last buffer split: No
  Temp Object: No
  Tablespace Undo: No
  rdba: 0x00000000
  *-----------------------------
  uba: 0x00000000.0000.00 ctl max scn: 0x0000.00000000 prv tx scn: 0x0000.00000000
  KDO undo record:
  KTB Redo
  op: 0x04 ver: 0x01
  op: L itl: scn: 0x0004.049.000000d8 uba: 0x00800716.009f.3a
  flg: C-U-  lkc: 0   scn: 0x0000.00105ccf
  KDO Op code: DRP xtype: XA bdba: 0x00408a3c hdba: 0x00408a3b
  itli: 1 ispac: 0 maxfr: 4863
  tabn: 0 slot: 1(0x1)
  
  根据KDO Op code: DRP,表明反操作是delete,所以我们可以知道这就是刚才insert后在undo segment里记载的信息
  
  我们知道当发生insert的时候undo segment里仅记载了记录的rowid,下面我们把它找出来
  SQL> select rowid from test;
  
  ROWID
  ------------------
  AAAGSHAABAAAIo8AAC
  Translate the value: AAAGSHAABAAAIo8AAC
  
  Data Object number = AAAGSH
  File = AAB
  Block = AAAIo8
  ROW = AAC
  
  然后根据公式转换
  得到data object number=25735
  file=1
  block=35388
  row=2
上一篇:Oracle--SQL行列转换实战 人气:511
下一篇:9iR2 的Compress Table 的研究 人气:331
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号