[20170821]使用oradebug模拟CBC(10g).txt

[20170821]使用oradebug模拟Cache Buffers chains(10g).txt

--//上午测试了在读读模式下,不会出现Cache Buffers chains等待时间,链接http://blog.itpub.net/267265/viewspace-2143880/
--//下午在10g下使用oradebug模拟看看是否会出现Cache Buffers chains.

1.环境:
SCOTT@test> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

SCOTT@test> select * from emp where rowid='AAAMlsAAEAAAAAgAAA';
     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20

SCOTT@test> @ &r/rowid AAAMlsAAEAAAAAgAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     51564          4         32          0  0x1000020           4,32                 alter system dump datafile 4 block 32 ;

SYS@test> @ &r/bh 4 32
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
000000007C3CE308          4         32          1 data block         xcur                8          0          0          0          0          0 0000000063866000 EMP

2.测试1:
SYS@test> oradebug setmypid
Statement processed.

SYS@test> oradebug peek 0x000000007C3CE308 16
[07C3CE308, 07C3CE318) = 00000000 00000000 00008277 0000007A

SYS@test> oradebug poke 0x000000007C3CE308 4 1
BEFORE: [07C3CE308, 07C3CE30C) = 00000000
AFTER:  [07C3CE308, 07C3CE30C) = 00000001

SCOTT@test> select * from emp where rowid='AAAMlsAAEAAAAAgAAA';
....挂起!!

SYS@test> select p1raw,p2raw,p3raw,p1,p2,p3,sid,serial#,seq#,event,state,seconds_in_wait from v$session where wait_class<>'Idle';
P1RAW            P2RAW            P3RAW                    P1         P2         P3        SID    SERIAL#       SEQ# EVENT                                    STATE      SECONDS_IN_WAIT
---------------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------------------------------- ---------- ---------------
000000007C3CE308 000000000000007A 00               2084365064        122          0        139      13287         40 latch: cache buffers chains              WAITING                 15

SYS@test> @ &r/wait10g
P1RAW            P2RAW            P3RAW                    P1         P2         P3        SID    SERIAL#       SEQ# EVENT                                    STATE       WAIT_TIME SECONDS_IN_WAIT
---------------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------------------------------- ---------- ---------- ---------------
000000007C3CE308 000000000000007A 00               2084365064        122          0        139      13287         40 latch: cache buffers chains              WAITING             0              21

--//可见10g下,只要设置前面4位就可以导致出现latch: cache buffers chains.
--//peek 联想 绑定变量peek. poke=>修改.
--//而11g这样设置无效!!说明在10g下读读模式会出现latch: cache buffers chains.等待事件.

SYS@test> oradebug poke 0x000000007C3CE308 4 0
BEFORE: [07C3CE308, 07C3CE30C) = 00000001
AFTER:  [07C3CE308, 07C3CE30C) = 00000000

SCOTT@test> select * from emp where rowid='AAAMlsAAEAAAAAgAAA';
     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20

3.测试2:
SYS@test> oradebug poke 0x000000007C3CE308 8 1
BEFORE: [07C3CE308, 07C3CE310) = 00000000 00000000
AFTER:  [07C3CE308, 07C3CE310) = 00000001 00000000

SCOTT@test> select * from emp where rowid='AAAMlsAAEAAAAAgAAA' ;
...
--//挂起!!

SYS@test> oradebug peek 0x000000007C3CE308 16
[07C3CE308, 07C3CE318) = 00000001 40000000 00008283 0000007A
                         ~~~~~~~~~~~~~~~~~

--//注意下划线部分...

SYS@test> oradebug poke 0x000000007C3CE308 4 0
BEFORE: [07C3CE308, 07C3CE30C) = 00000001
AFTER:  [07C3CE308, 07C3CE30C) = 00000000

SCOTT@test> select * from emp where rowid='AAAMlsAAEAAAAAgAAA' ;
     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20

SYS@test> oradebug peek 0x000000007C3CE308 16
[07C3CE308, 07C3CE318) = 00000000 00000000 0000828B 0000007A

--//对比可以发现全部变成0.

时间: 2024-09-12 01:44:56

[20170821]使用oradebug模拟CBC(10g).txt的相关文章

[20170104]ORA-08103错误的模拟和诊断.txt

[20170104]ORA-08103错误的模拟和诊断.txt 参考连接http://www.oratea.com/2016/12/10/ora-08103%e9%94%99%e8%af%af%e7%9a%84%e6%a8%a1%e6%8b%9f%e5%92%8c%e8%af%8a%e6%96%ad/,重复测试: $ oerr ora 8103 08103, 00000, "object no longer exists" // *Cause:  The object has been

[20160816]使用oradebug跟踪sql net.txt

[20160816]使用oradebug跟踪sql net.txt --可以oradebug跟踪包,可以不用修改sqlnet.ora等文件参数,做一个记录. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------

[20171208]ORA-16014(10G).txt

[20171208]ORA-16014(10G).txt --//别人配置dg遇到的问题,当时没有记录.在自己的环境做一个演示.这个问题相对隐藏很深.主要是自己不注意这些细节. 1.环境: SYS@orcl> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ----------------------------------

[20131113]移植11G的amdu到10g.txt

[20131113]移植11G的amdu到10g.txt AMDU是ORACLE针对ASM开发的源数据转储工具,其全称为ASM Metadata Dump Utility(AMDU).AMDU是11g才发布的工具,但是实际对10g的ASM 也有效.metalink下10g应该也有下载. 理论讲11G的asm应该与10的asm保存格式应该一样.自己看看以否可以把amdu移植到10g下使用.自己做一些尝试. $ ldd `which amdu`        linux-vdso.so.1 => 

zt: 在linux上单机模拟Oracle 10g RAC集群(OCFS+ASM)

http://www.itpub.net/579479.html 本想做个安装记录,把遇到的错误和解决办法写下来,以备以后操作时参考,但在写的过程中阴错阳差地对付着把系统装上了,所以就当个安装说明吧,不过其中还有个错误(在下面有记录),感觉应该对使用有影响,所以以后还要想办法修正.这个就当个初稿吧. 一.简介 熟悉 Oracle 真正应用集群 (RAC) 10g 技术的最有效方法之一是访问一个实际的 Oracle RAC 10g 集群.没有什么方法比直接体验它们能够更好地理解其好处的了 - 包括

oracle中12c比10g索引回表消耗增多的问题

问题是这样的: 在12c中,我们测试了2种情况: 第一种是加了hint,使得12c的执行计划和10g类似,只是由于12c的nlj_batching,多了一次nestloop.但是执行计划本质是相同的,都是索引S_CONTACT_X_U1返回表查询. 第二种是使用了10g的outline hint,OFE=10g的,执行计划完全一样. 但是我们发现,无论是在12c中的哪一种情况,驱动表S_SRV_REQ的索引PA_S_SRV_REQ_1_X的full index scan返回结果差异这么大?  

[20170707]cursor: pin S wait on X(10G)

[20170707]cursor: pin S wait on X(10G).txt --生产系统遇到1个bug,版本: EXAM@xxx> @ &r/ver1 PORT_STRING         VERSION    BANNER ------------------- ---------- ---------------------------------------------------------------- x86_64/Linux 2.4.xx 10.2.0.4.0 Or

[20161230]查看父游标中sql语句.txt

[20161230]查看父游标中sql语句.txt --上午巡检完,无聊,测试使用oradebug下查看sql语句在父游标中的内容.sql语句在执行第一次硬解析时生成父子游标,其中父游标chunk --中保存sql语句,测试通过oradebug下如何查看: 1.环境: SCOTT@book> select * from dept where deptno=10;     DEPTNO DNAME          LOC ---------- -------------- -----------

无处不在的等待

  11月03日,由Oracle 资深DBA彭小波老师在"DBA+东北群"进行了一次关于"无处不在的等待"的线上主题分享.小编特别整理出其中精华内容,供大家学习交流.   嘉宾简介    "DBA+社群"东北联合发起人.从事Oracle 数据库技术十余年,ACOUG核心成员,Oracle用户组年轻专家.现就职于某金融保险公司,曾服务于航天.航空.机车.大型制造行业数据库的维护以及系统开发,擅长Oracle数据库架构规划.SQL优化.OWI方面性能