如何根据索引叶块里的rowid信息找到对应的数据行
我们知道索引叶块中保存的内容是"被索引的字段值+rowid",我们如何使用这个rowid找到对应的数据行?###创建测试用表和索引col segment_name format a40col object_name format a40set linesize 80select table_name,index_name from dba_indexes where table_name='T1123_1';TABLE_NAME &nbs...
serializable隔离级别下事务特性的几个小测试
oracle里事务的隔离级别主要有以下三类:Read CommittedSerializableRead-only隔离级别可以在会话、事务两个级别上进行设定:———会话级别设定alter session set isolation_level=read committed; alter session set isolation_level=serializable;注:read only无法在会话级别进行设定———事务级...
外键没有索引哪些DML操作会被阻塞
通过主外键关联的两张表,除非永远不对主表的主键字段作update、delete操作,否则oracle会推荐在子表的外键上建索引。为何要在外键上建索引,不建索引会有产生哪些负面影响,我们就来测试一下###准备好测试用的表create table t1010_pk1 (id number,pcol varchar2(1)) tablespace test;alter table t1010_pk1 add con...
那些你眼熟的global cache等待事件是如何被触发的(一)
如果用过RAC那么你一定见到过这些等待事件:gc buffer busy acquire/release、gc cr/current block 2-way、gc cr/current block busy ..... 不一一列举了。对于这些事件的具体含义网上资料不少,因此不作深入介绍,本文关注的是这类等待事件在何种情况下会出现,设计了部分场景尽可能的模拟出这些等待#########要用到的...
初探Cache Fusion对block的锁管理
本文以双节点RAC为例,揭示了在执行select及DML操作过程中,Cache Fusion在幕后是如何对block进行锁管理的。###实例1上查询scott.t0820_1表select * from scott.t0820_1; ID---------- 2select dbms_rowid.rowid_relative_fno(rowid) rfno,dbms_rowi...
探究隐含参数_fairness_threshold
首先说明_fairness_threshold参数仅在RAC环境下才有意义,让我对这个参数引起关注是在某一次查询v$cr_block_server时,发现该视图有一个名为FAIRNESS_DOWN_CONVERTS的字段,官方文档里将其解释为:Number of times an instance receiving a request has down-converted an X lock on a block because it was not modifying...
函数索引可能使VPD形同虚设的一则警示
当需要对部分用户屏蔽掉表中的敏感记录时,我们往往会使用VPD,比如下面这个例子中我们想屏蔽掉user_id<30的所有记录--connect as sysdbacreate user vpd1 identified by "123456" default tablespace test1;grant execute on dbms_rls to vpd1;grant create any context to vpd1;grant resource,create session to ...
linux上设置大内存页解决kswapd0进程过渡消耗cpusys的问题
环境:SLES11 SP4 + oracle 11.2.0.4新搭建测试数据库,跑了两天左右发现一个名为kswapd0的进程竟然占用了1个cpu资源(该主机一共只有2个cpu),而且几乎都耗在cpusys上。如下图所示:图1网上搜索得知kswapd0是一个内核进程,用来处理页的交换,当OS的可用内存小于阀值时,kswapd会将部分进程的页从物理内存交换到...
图解SLES 11 SP3+Oracle 11gR2 RAC在VirtualBOX上的安装与部署
本文分为8个部分,以图文并茂的形式介绍了如何在VirtualBOX上安装与部署SLES11SP3+Oracle 11gR2 RAC环境,旨在给有类似部署需求的读者作参考。第一部分:安装SLES 11第二部分:安装完成后的基本配置第三部分:创建RAC安装所需要的目录和用户第四部分:安装 RAC前的预配置工作第五部分:cl...
分析解决11gR2 双节点RAC环境下的gc cr block busy/gc buffer busy acquire等待
? 系统环境两节点的RAC:AIX6.1+Oracle 11.2.0.3.3 ? AWR里展示出来的各种症状(数据来自实例2)虽然应用没有报障,但AWR报告里的各种迹象已经很明显了(1) gcbuffer busy acquire排进了Top 5 Timed Foreground Events图-1...
create index...online操作过程中会申请持有哪些锁
11g下,在给表创建索引时如果加上online选项,不会阻塞同时进行的DML操作,相当给力的一个功能。与不带online的索引创建方式相比在锁的申请与持有机制上有何区别,我们来比较一下###创建测试表sqlplus ad/Uiop246!create table t0528_1 as select * from all_users;select object_id from dba_objects where ob...
oracle 11g下如何捕捉library cache对象执行时产生的lock、pin等信息
我们知道使用10049 event可以跟踪语句执行过程中在library cache对象上产生的lock和pin的动作,但此方法仅在Oracle 10g版本下有效,11g下另有他法。先来回顾一下10g里是怎么做的//////////////////////////// ORACLE 10gR2 下的测试//////////////////////////###创建测试表,执行测试SQL语句drop table t2;crea...
select会访问buffer cache里哪种类型的data block,XCUR还是CR?
当我们以select一张表的时候,如果data block没有在buffer cache里,这个block就会被server process从磁盘读取到buffer cache;如果能在buffer cache里找到那么直接访问即可;v$bh.status表示了buffer cache里block的类型,常见的有以下几种crfree pi <---RAC环境下才有read s...
最近的一次ASM diskgroup在线迁移记录
目的:一套11.2.0.4 双节点的RAC当前使用的是阵列里的FC(Fibre channel)盘,运行一段时间后发现数据库比较空闲,所以打算将其迁移到同阵列的SATA盘上,以将FC盘预留给对IO要求更高的应用。迁移方法:由ASM实现存储管理的数据库,使用ASM diskgroup在线迁移方式是再好不过的选择挑战:难度虽然不大,但前一次做diskgroup...
浅谈library cache里的争用(一)
library cache contention
11gR2 GI和DB安装目录权限属主被修改后的恢复方法
某位仁兄新装一套11gR2RAC的过程中,在GI的安装配置阶段遇到了安装目录无法写入的报错,于是他便将$GRID_HOME下所有目录和文件属主改成了grid:oinstall,将$GRID_HOME下所有目录和文件权限改成了757,将$ORACLE_HOME下所有的目录和文件权限改成了757,侥幸过了安装这一关,紧接着麻烦就找...
11gR2 RAC环境下私网网卡更名后如何调整GI配置
环境描述:AIX+11gR2 RAC双节点问题起因:两节点用于私网通信的网卡使用的是千兆网卡,现要换成万兆的网卡,因万兆网卡为一块卡一个port,而原先的千兆网卡是一块卡两个port,而且主机上的槽位有限,必须要把原来的千兆网卡拔下来,才能腾出位置给万兆的,所以不可避免的会导致在AIX里cfgmgr认出的万兆网卡名字会和原来...
如何定位SQL语句在共享池里用到了哪些chunks
一条SQL语句执行后,如何找到其在shared pool里占用的chunks,做了一个简单的测试:---先清空shared poolalter system flush shared_pool;---执行sql语句select * from scott.t1 where username='SYS';USERNAME US...
解析cursor pin S等待事件中的p1、p2、p3值
造成cursor: pin S等待事件最常见的触发原因是两个Session运行同一段代码---制造数据:create table ad.t1 tablespace ts_pub as select * from all_users;---session 1: sid=4727,运行如下procedureselect * from v$mystat where rownum=1;declarev_uid number;v_sql varchar2(1000);v_cur number;ret_exe...
闲聊oracle SQL*Net相关的空闲等待事件
空闲等待事件,从字面上理解似乎并不需要我们花多大心思去关心,就让它等在那里呗,万事总有它存在的道理,特别对于SQL*Net系列等待事件而言,细细琢磨还是有不少文章可做的。---------< Part 1. 那些我们经常见到的SQL*Net等待 >---------SQL*NET messag...