基于v$lock.lmode分析父子表外键列是否索引持锁模式区别之系列六
结论1,oracle lock锁机制非常复杂,v$lock.lmode之间的区别以及适用场景还要研究2,本文基于3个并发会话进行测试,第1个会话操作基于子表DML操作,第2个会话操作基于父表的DML操作,第3个会话基于子表的DML操作(包含INSERT,UPDATE,DELETE)3,需要3个并发会话,基于子表外键列是否构建索引的行为区别 对...
v$lock之alter table drop column与alter table set unused column区别系列五
背景 之前文章: http://blog.itpub.net/9240380/viewspace-1814709/,涉及过如何删除表的某列,本文我们讨论下不同的删除表列语法参数,持锁模式的不同,便于大家在OLTP操作时选用不同的命令组合,减少对于业务的影响。结论1,alter table set unused column与alter table drop column持锁模式相...
通过10046分析v$lock持锁模式lmode之系列四
背景 在之前文章: http://blog.itpub.net/9240380/viewspace-1816522/ 学习了v$lock.lmode不同持锁模式的基本区别,本文准备从实际操作角度来理解下不同持锁模式的区别,便于大家从直观感觉ORACLE 不同锁模式的差异,我们准备采用大家熟知的10046进行分析。 结论10046分析我们采...
oracle v$lock系列之三
结论1,oracle11g测试环境2,产生事务时会同时在表上加2个锁,分别为事务锁tx锁以及表锁tm锁3,表锁tm锁又从锁定模式分为7个不同值 本文仅测试了其中5个不同值 分别为: 2 - row-S (SS) 3 - row-X (SX) 4 - share (S) 5 - S/Row-X (SSX) &nbs...
使用oracle 11g bbed dump undo header block报错之系列六
结论1,oracle 11g bbed不支持直接用map查看undo header block2, 得出上述结论有几个原因: A,BBED MAP报错 B,我MAP了UNDO HEADER BLOCK的前后相领块,即可以MAP测试 SQL> select * from v$version where rownum=1;BANNER-----------------------------------------...
oracle11g使用bbed运行help命令报错之系列五
结论1,oracle 11g bbed正常使用,必须要在ORACLE_HOME/rdbms/mesg包含2个消息文件 bbedus.msb及bbedus.msg,这些消息文件可以从oracle10g对应目录复制即可2,否则在bbed使用help会报错: Message 1013 not found; No message file for product=RDBMS, facility=BBED测试SQL> select * from v$versio...
bbed修改表记录内容系列四
背景 在之前几篇文章 http://blog.itpub.net/9240380/viewspace-1816245/,简短测试了如何修改表中数据数据为字符的列内容,本文开始测试如何修改数据数据类型为数字的列。结论1,用bbed修改数据块,不能仅修改列内容部分2,还要修改kcbh结构体中的chkval_kcbh,即用于校验数据块的,不...
bbed修改表记录内容系列三
背景 在上篇文章:http://blog.itpub.net/9240380/viewspace-1816241/,发现如果变更记录的列宽度变宽,会导致ora-01578错误,导致数据坏块。结论1,如果用bbed修改列宽度加大,会导致坏块出现2,不知为何加大列宽度,会导致坏块出现,唉,还是对于数据块结构理解不深3,在bbed中,可以用revert回退数据块...
bbed修改表记录内容系列二
结论1,可见如果我采用bbed修改表记录某列内容,且修改后的列宽度如果大于原来列宽度,会导致坏块出现报ora-015782,解决ora-01578的解决方案有如下几则方法: a,如有rman备份,则直接恢复这个数据块即可,block recover b,若无rman备份,且可以允许数据损失,采用10231 event暂时屏蔽SELECT...
bbed修改表记录内容系列一
结论1,用bbed修改表记录的方法为: 先获取记录的文件号,块号及记录号 然后进入bbed set dba 文件号,块号 offset 记录号 ----指定要修改的数据块位置 find /c 要修改记录的列内容 ...
linux diff比较2个文件的不同
背景 学习如何比较2个文件不同,便于在ORACLE分析数据块变更时用上此功能。结论1,diff用于比较2个文件的不同2,diff用于比较2个文件的内容,显示结果如下 1c1< mynewly---> my上述具体含义请见下述测试3, 变化标记有3种情况,各为c --即变化,即记录发生了变化a ...
群友问题之ORA-01152: file 1 was not restored from a sufficiently old backup
群友问题 请教个问题,今天在做恢复测试的时候,在recover的时候报错ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '/u01/app/oracle/oradata/EPPS/sys...
oracle 11g rman configure retention policy to recovery window of days系列一
rman概念体系图
oracle lock转换及oracle deadlock死锁系列一
结论死锁1,2个会话相互想获取对方的资源方可进行继续下去,就会发生死锁2,死锁发生之前在另一个会话会产生DML HANG,因为不能获取到锁资源会话17SQL> select sid from v$mystat where rownum=1; SID---------- 17SQL> select * from t_lock...
oracle11g基于某个数据块一致性读版本cr consistent read最大限制系列一
背景 因为表的数据块可能会同时被多个DML会话并发修改,所以数据块会进行修改,但另一个查询会话却不能看到这个数据块修改的结果,它会去根据SQL查询时的SCN去数据块,结合ITL以及UNDO SEGMENT HEADER BLOCK获取UNOD BLOCK构造SQL查询时点的数据块版本, 数据库版本为11.2.0.1...
表使用的数据块在事务未提交及提交且强制刷新缓冲池的itl条目变化之系列一
结论1,未提交事务前数据块的ITL会保存旧表的ITL条目信息,且其ITL条目的FLAG为U,表明快速清除2,快速清除的概念还不太理解,将于另一文章进行测试3,已提交事务的数据块,且此数据块仍在缓冲池,其ITL条目不会发生变化4,只要已提交事务的数据块不在缓冲池,重从磁盘读入缓冲池,其ITL条目才会发生变化,FLAG及LCK和SCN...
表使用的数据块在事务未提交及提交且强制刷新缓冲池的block scn及obj变化之系列一
背景 为了了解下块清除及延迟清除的相关概念,故有此文。结论1,如果当前DML使用数据块的事务未提交,且数据块之前被其它表对象使用过,则数据块会保存之前表的信息 这个信息主要为表的对象seg2,数据块只要新表使用了它,且新表产生的事务已提交,即会除掉这前表对象的信息,或者说新表的事务未提...
oracle11g sqlplus参数autocommit
结论 1,数据库版本为ORACLE11G 2,控制是否提交的参数为sqlplus的autocommit 3, 参数默认为自动提交,即使中途退出了sqlplus会话,仍会自动提交DML事务 4, 调整autocommit参数只会在当前SQLPLUS会话生效 5, 查看参数命令为show autocommit 6, 修改参数命令为set autocommit...
oracle undo segment header 事务表transaction table系列一
背景 在学习ORACLE概念中事务及LOCK锁的知识时,需要了解一下事务表transaction table的概念,实战出真知,通过实验来梳理下这些知识,争取有个全局的理解。 结论1, 数据库版本为11G2,事务表是存储在UNDO SEGMENT HEADER BLOCK3, 转储UNDO SEGMENT HEADER BLOCK的语法为alter system dump datafi...
oracle11g或oracle10g如何生成errorstack类型的跟踪文件trace file系列四
<h2>背景</h2> 在故障或性能诊断时,有时在在TRCE文件中会报各种ORACLE错误,可以针对这个错误,进行ERRORSTATCK特定跟踪,进行具体的分析;<br />当然如何分析ERRORSTACK文件的内容,需要在另一文章在讨论与学习。 <br /><br /><br /><br /><br /><h2>结论</h2>1,errorstack语法请参考测试第1节...