ImageVerifierCode 换一换
格式:DOCX , 页数:85 ,大小:318.42KB ,
资源ID:2893662      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2893662.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OracleDB常用操作实验.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OracleDB常用操作实验.docx

1、OracleDB常用操作实验实验一插入时寻找空闲块的步骤篇(ASSM表空间)服务器进程寻找空闲块的步骤: 在ASSM表空间中,执行Insert声明时,Oracle是如何为声明分配可用块的? 以前已经有网友论证,在ASSM中,可用块的管理,由L3、L2和L1三级位图块实现。具体的步骤就是,先通过数据字典找到段头,而段头其实就是表 的第一个L3块,在其中寻找L2。根据执行插入声明的服务器进程的PID,计算出一个随机HASH值,根据此HASH值,在L2中找到一个L1。再根据服 务器进程的PID,在L1中查找一个可用的数据块,并在其中插入新行。具体的步骤如下:步1: 我的实验环境如下:块大小:8K;区

2、大小40K;实验表现占5个区; 假设现在用户端发来命令如下: Insert into new01_jj_1 values(1,a); 首先,对于new01_jj_1,数据库并不理解这是什么,Oracle首先要去查询数据字典表,了解这一串字母的具体意义,例如,Oracle要 确定这是一个视图、同义词,或是一个表等等,这些操作,就是递归操作,我们只拣和我们今天的论题相关的说,Oracle要先查找seg$数据字典表,找出 段头的文件号和块号,我们将这一步操作化为对基于seg$数据字典表的视图:Dba_segments的操作:SQL select header_block,header_file,se

3、gment_type from dba_segments where segment_name=NEW01_JJ_1;HEADER_BLOCK HEADER_FILE SEGMENT_TYPE- - -11 9 TABLE步2:根据上面的显示结果可知,段头是在9号文件的第11号块,段头是第一个L3块,在L3中保存着L2块的地址,L2块保存着L1块的地址,L1块保存 着数据块的地址。所以想查找数据库的第一步,就是要先找到L3块,并在其中搜索可用的L2块,下面我们转储表的第一个L3块,即段头:9号文件11号块, 然后在其中搜索可用的L2块。转储命令如下:SQL alter system dump

4、datafile 9 block 11;系统已更改。转储结果如下:* 2008-02-15 13:46:50.562* SERVICE NAMESYS$USERS) 2008-02-15 13:46:50.515* SESSION ID206.4) 2008-02-15 13:46:50.515Start dump data blocks tsn: 11 file#: 9 minblk 11 maxblk 11buffer tsn: 11 rdba: 0x0240000b (9/11)scn: 0x0000.001e0767 seq: 0x01 flg: 0x04 tail: 0x076723

5、01frmt: 0x02 chkval: 0x604a type: 0x23=PAGETABLE SEGMENT HEADERExtent Control Header-Extent Header: spare1: 0 spare2: 0 #extents: 5 #blocks: 25 last map0x00000000#maps: 0 offset: 2716 Highwater:0x02400027ext#: 4 blk#: 5 ext size: 5 #blocks in seg. hdrs freelists: 0 #blocks below: 21 mapblk0x00000000

6、offset: 4 Unlocked-Low HighWater Mark : Highwater:0x02400027ext#: 4 blk#: 5 ext size: 5 #blocks in seg. hdrs freelists: 0 #blocks below: 21 mapblk0x00000000offset: 4 Level 1 BMB for High HWM block: 0x0240001dLevel 1 BMB for Low HWM block: 0x0240001d-Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0 L2 Arra

7、y start offset:0x00001434First Level 3 BMB:0x00000000L2 Hint for inserts:0x0240000aLast Level 1 BMB:0x0240001dLast Level II BMB:0x0240000aLast Level III BMB:0x00000000 Map Header: next0x00000000#extents: 5 obj#: 52176flag: 0x10000000Inc # 0 Extent Map- 0x02400009length: 5 0x0240000elength: 5 0x02400

8、018length: 5 0x0240001dlength: 5 0x02400022length: 5 Auxillary Map- Extent 0 :L1 dba:0x02400009 Data dba:0x0240000c Extent 1 :L1 dba:0x02400009 Data dba:0x0240000e Extent 2 :L1 dba:0x02400009 Data dba:0x02400018 Extent 3 :L1 dba:0x0240001d Data dba:0x0240001e Extent 4 :L1 dba:0x0240001d Data dba:0x0

9、2400022- Second Level Bitmap block DBAs - DBA 1: 0x0240000aEnd dump data blocks tsn: 11 file#: 9 minblk 11 maxblk 11查看上面的信息,可知现在表New01_jj_1表中只有一个L2块,即9号文件第10号块。将来随着表的增大,L1块的增多,L2块也会逐步增多。那 么,在L3中记录的L2也会随之增多,如何在众多L2块中快速找到一个可用的L2块呢?Oracle专门增设了一个L2 Hint for inserts,此处的值为0x0240000a,即第9号文件10号块。我们可以直接根据L2

10、Hint for inserts中的指示,找出可用的L2块,此处为第9号文件10号块,这就是在L3中查找L2的步骤,下面,我们转储L2,并在其中查找L1块。步3:转储L2块9号文件10号块:SQL alter system dump datafile 9 block 10;系统已更改。* 2008-02-15 13:52:03.359Start dump data blocks tsn: 11 file#: 9 minblk 10 maxblk 10buffer tsn: 11 rdba: 0x0240000a (9/10)scn: 0x0000.001e0767 seq: 0x01 flg:

11、 0x04 tail: 0x07672101frmt: 0x02 chkval: 0x4cfb type: 0x21=SECOND LEVEL BITMAP BLOCKDump of Second Level Bitmap Block number: 2 nfree: 1 ffree: 1 pdba: 0x0240000b Inc #: 0 Objd: 52176opcode:0 xid: L1 Ranges :- 0x02400009Free: 1 Inst: 1 0x0240001dFree: 3 Inst: 1 -End dump data blocks tsn: 11 file#: 9

12、 minblk 10 maxblk 10这里我们看到 L2块中有两个L1块 分别是 9号块 和 29号块,到这一步,Oracle如何在L2中选择L1?为了提高插入的并行度,这里将根据完成插入操作服务器进程的PID,计算出一个Hash值,根据 此Hash值在多个L1中选择一个。也就是在多个L1中根据进程PID随机选择一个。此处要注意的是,高高水点(不是输入错误,高水点在ASSM中有两 个:低高水点和高高水点)之后的块不在选择范围内。如果从两个会话中插入,Oracle会尽量将这两个进程分配到两个L1块中。 假设,这里选择了29号,我们再来转储它。步4:SQL alter system dump datafile 9 block 29;系统已更改。* 2008-02-15 14:00:26.078Start dump data blocks tsn: 11 file#: 9 minblk 29 maxblk 29buffer tsn: 11 rdba: 0x0240001d (9/29)scn: 0x000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1