oracle 11g latch之v$latch和systemstate dump文件之系列四
背景 在上文 http://blog.itpub.net/9240380/viewspace-1821684/ 基础上, 整合latch和systemstate dump文件的分析,逐步掌握如何分析systemstate dump文件,同时加深对于latch理解。结论1,当数据库发生等待LATCH时,可以采用systemstate dump进行分析2,分析systemsta...
oracle 11g latch之v$latch系列三
背景 本文为oracle 11g latch系列的第三篇文章,继续深入学习latch,想要熟悉其原理,还是先了解下相关视图的含义,尔后进一步深入其中,便于解决问题。 本系列前2文链接如下: oracle 11g latch之系列一 http://blog.itpub.net/9240380/viewspac...
oracle 11g bootstrap$系列二
背景 基于上文:http://blog.itpub.net/9240380/viewspace-1821176/,继续测试了解bootstrap$与oracle启动有关系。 结论1,dd可以复制控制文件指定个数的数据块内容到一个临时文件2,dd示例,因为控制文件每个数据块大小为16K,而DD默认复制缓冲区大小为512BYTE,所以COUNT=32,这样正好是复制一个控制...
oracle 11g bootstrap$系列一
背景 oracle从nomount到mount,内部机制到底是怎么样的,要经历哪些过程,了解这些,对于理解ORACLE,会大有帮助,拓宽分析解决问题能力。结论1,测试环境为oracle 11.2.0.12,bootstrap$为底层表,共计存储60个对象3,这60个对象,有表,有索引,也有cluster table4,obj#为-1及0的对象不在obj$,它的含义...
bbed提交事务系列十一
背景 了解下bbed手工提交一个DML事务结论1,bbed修改的内容,有时会被冲掉,可能与未即时把缓冲内容写入到磁盘有关2,bbed修改前后都要在会话1(当前形成事务的会话)进行强制刷新缓冲池操作3,bbed修改ktbbh.ktbbhitl对数组编号下面的ktbitflg为00,即可以手工用BBED提交事务4,kbbitflg对应itl中的lck测试...
sqlplus如何处理会话操作dml事务
结论1,sqlplus退出(是正常退出),会自动提交DML事务 而且从一个用户切换到另一个用户,也会隐式自动提交DML事务2,所以用SQLPLUS操作一定要细心,尤其是在生产系统,千万小心,如果确认不要的数据,马上要回退即ROLLBACK 另让垃圾数据进入表 3,经测试,如果sqlplus客户端(secure crt)是...
用bbed提示事务transaction系列九
结论1,采用alter system dump datafile block对比分析事务提交前后的数据块各层结构的变化2,以此变化到BBED进行映射,搞清楚事务提交后到底是BBED涉及数据块各个层对应的结构体发生了变化3,基于BBED变化的结构体为基础,最终模拟使用BBED提交事务4,本文只是分析了事务提交前后的数据块的变化差异,将在下文分析undo ...
oracle 11g latch之v$latch系列二
背景 在上文中:http://blog.itpub.net/9240380/viewspace-1820418/,我们学习oracle 11g latch开了个头,本文继续了解latch相关的知识,主要基于v$latch进行测试,以小见大,为求真义。 结论1,latch分为乐意等待和不乐意等待,共计2种类型2,v$latch会包含所有的latch,即其中包含了当前ORACLE没有...
oracle 11g latch之系列一
背景 为了学习理解oracle latch,了解下与latch相关的一些参数及其含义,于是便有此文,oracle latch原理及机制是非常复杂的,我们会写一个系列,力争对它有一个整体的理解,提各分析问题的能力,进一步整合oracle的体系架构。 结论1,测试数据库版本为oracle 11.2.0.12,与latch spin...
oradebug工具使用系列一
结论1,oracle oradebug查看命令用oradebug help2,oradebug各种命令一定要进行分类,不然学习没有条理性,也不能把相关的命令整合使用3,oradebug dumplist显示所有可用的dump列表4,oradebug dump可以针对dumplist某个dump进行针对性分析与测试;dump列表有不同用途的dump,比如有:asm,library cache,row cache,scn,buf...
用oracle 11g bbed copy替换同一个表数据块block为另一个数据块之系列八
背景 学习用bbed替换同一个表中不同数据块,即用同一个表中1个数据块的内容替换另一个数据块的内容。结论1,可以使用bbed copy命令复制一个数据块内容到另一个数据块2,copy命令为BBED> help copyCOPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]3,使用bbed copy复制数...
library cache内容系列一之library hash bucket--library object handle--heap
由v$statname其指标TBS Extension: bytes extended想到一点小事
结论1,v$statname的指标可以由class列标识2,class值分为:1, User2, Redo4, Enqueue8, Cache16, OS32, Real Application Clusters64, SQL128, Debug3,通过class即可以把指标进行分类,便于以后针对性分类解决或对比某些类别的指标测试SQL> select * from v$version where rownum=1;BANNER-----...
通过dump library cache分析与学习oracle易碎解析锁v$lock之系列十
背景 在使用oracle 10704 event分析获取锁lock及死锁deadlock系列九 http://blog.itpub.net/9240380/viewspace-1819341/,本来想分析易碎解析锁,发现没有找到任何有价值的信息,本文想回答这个问题。结论1,ORACLE的易碎解析锁,从实质说不是锁,而是一种类似于latch一种的东西2,易碎解析锁...
使用oracle 10704 event分析获取锁lock及死锁deadlock系列九
结论1,EVENT 10704获取会话获取锁的详细信息2,产生的trace包括did信息,其分为3部分3,DID分为 数据库实例编号 ORACLE进程号(须由16进制转化为10进制) ORACLE会话对应的serial#(同上要转化)4,产生的TRACE文件内容如下:*** 2015-10-30 03:49:32.791ksqgtl *** CU-cf12e24...
oracle lock dba_ddl_locks获取表级共享锁及表级排它锁之系列八
背景 lock锁不止有DML锁,也有DDL锁,之前已经学习了诸多锁的知识与概念,现在我们学习DDL锁,力图更为全面了解ORACLE锁的知识体系,如此运维过程中方可稳中有胜。结论1,通过dba_ddl_locks可以获取ddl锁的信息2,使用select session_id,owner,name,type,mode_held,mode_requested from dba_ddl_locks w...
如何令暂时不想使用的procedure存储过程由valid变成invalid
背景 某群友问题,有一个存储过程,如果暂时不用,能让他暂时无效吗?结论1,如果想暂时禁用存储过程的对象状态为无用,其实底层是要更新基表obj$的status为非0和非12,user_objects所引用的基表"_CURRENT_EDITION_OBJ",它其实是一个视图3,"_CURRENT_EDITION_OBJ"视图是基于基表user$及obj$的包装4,操作基表非常...
由ORA-00997: illegal use of long datatype引发的血案之long转换为lob
背景: 在测试某个技术问题时,发现long列的表不能复制到另一个表中,报ora-00997错误SQL> create table cdef$_bak as select * from cdef$ where con#=11923;create table cdef$_bak as select * from cdef$ where con#=11923 ...
分析user_constraints为何不显示子表外键列构建的索引历险记
背景 通过select table_name,constraint_name,constraint_type,index_name from user_constraints where table_name in ('T_PARENT','T_CHILD');查询不到子表外键列构建的索引信息,仅可以查询到父表主键约束自动创建的索引,这到底是为何呢,底层处理机制是什么呢?结论1,user_constraints在oracl...
基于v$lock.block及request及dba_waiters或dba_blockers学习lock锁系列七
结论1,v$lock.block=1表明为持锁会话,而block=0,表示为被阻塞会话(当然前提是至少有2个会话,如果仅一个会话,block=0),也就是说至少要2个会话才有意义比较block的值2,v$lock虽然可以通过block的值来区分持锁会话或被阻塞会话,但并不直观,并且不能建立持锁会话与被阻塞会话的对应关系,当然,你可以对v$lock进...