1. oradebug介绍 oradebug是Oracle提供的一个内部工具,可用于: debug Oracle错误 trace Oracle错误 跟踪SQL 语句并使用tkprof工具格式化分析 分析...进入oradebug 使用该命令需要dba权限,一般使用sys用户 sqlplus / as sysdba SQL> oradebug help ?...Oracle 10046 事件 Oradebug 使用events来捕获Oracle的各种事件 对于 SQL trace来说,使用的是10046事件 对于10046事件来说,它提供了不同等级来满足不同的需求...使用oradebug 4.1 使用oradebug 追踪当前会话 SQL> oradebug setmypid Statement processed....工具详解 Oracle oradebug 命令 使用说明
2662] "Block SCN is ahead of Current SCN" (文档 ID 28929.1) 1.查看当前数据库的Current SCN 2.重新启动数据库到mount阶段 3.使用oradebug...SYS@orcl> oradebug setmypid Statement processed....SYS@orcl> oradebug dumpvar sga kcsgscn_ kcslf kcsgscn_ [06001AE70, 06001AEA0) = 00000000 00000000 00000000...c代表:Arg [c] dependent SCN WRAP d代表:Arg [d] dependent SCN BASE oradebug setmypid oradebug dumpvar sga...kcsgscn_ oradebug poke 0x060012658 8 10014077592 oradebug dumpvar sga kcsgscn_ alter database open;
/opatch lsinventory 4.确认MMON 是否挂起(Suspension) 查看本节点的MMON状态:SQL> oradebug setmypid SQL> oradebug unit_test...SQL> connect /as sysdba SQL> oradebug setmypid SQL> oradebug unlimit SQL> oradebug setinst all SQL> oradebug...SQL> oradebug setmypid SQL> oradebug unlimit SQL> oradebug setinst all SQL> oradebug -g all hanganalyze...4 SQL> oradebug -g all dump systemstate 266 SQL> quit SQL> connect /as sysdba SQL> oradebug...setmypid SQL> oradebug unlimit SQL> oradebug setinst all SQL> oradebug -g all hanganalyze 4 SQL> oradebug
SQL> oradebug setmypid 已处理的语句 SQL> oradebug event 10049 trace name context forever,level 528 已处理的语句...我们换一个10gR2的版本: SQL> select * from v$version; SQL> oradebug setmypid 已处理的语句 SQL> oradebug event 10049...SQL> oradebug setmypid 已处理的语句 SQL> oradebug event 10049 trace name context forever,level 528 已处理的语句...SQL> oradebug setmypid 已处理的语句 SQL> oradebug event 10049 trace name context forever,level 528 已处理的语句...SQL> oradebug setmypid 已处理的语句 SQL> oradebug event 10049 trace name context forever, level 528 已处理的语句
2662] "Block SCN is ahead of Current SCN" (文档 ID 28929.1) 1.查看当前数据库的Current SCN 2.重新启动数据库到mount阶段 3.使用oradebug...poke推进SCN 我这里直接把十万位的"4"改为"9"了,相当于推进了50w左右: 说明:实验发现oradebug poke 推进的SCN值,既可以指定十六进制的0x11008DE74,也可以直接指定十进制的...SYS@orcl> oradebug setmypid Statement processed....c代表:Arg [c] dependent SCN WRAP d代表:Arg [d] dependent SCN BASE oradebug setmypid oradebug dumpvar sga...kcsgscn_ oradebug poke 0x060012658 8 10014077592 oradebug dumpvar sga kcsgscn_ alter database open; 最后要说的是
setmypid/oradebug setospid SPID; oradebug event 10046 trace name context forever, level 12; (2)....使用sysdba登录后,可以查看oradebug的帮助: ? ?...使用oradebug设置10046事件之前需要首先设置待跟踪的会话: (a) 跟踪本会话,使用:oradebug setmypid即可。...此时如果需要跟踪24061这个session执行的SQL,可以用oradebug setospid 24061,然后oradebug event 10046 trace name context forever...显然22235这个进程是sqlplus登陆后执行ORADEBUG的客户端,例如: ? (3).
查看kcsgscn_的显示结果一致: SQL> oradebug setmypid Statement processed....中可以用poke命令来修改内存,其语法为: “oradebug poke ” allows you to modify a given region...的显示结果一致: SQL> oradebug setmypid Statement processed....SQL> oradebug dumpvar sga kcsgscn_ kcslf kcsgscn_ [06001AD30, 06001AD60) = 40012D2C 00000000 00000000...SQL> oradebug setmypid Statement processed.
跟踪spid: SQL> oradebug setospid 15552 SQL> oradebug unlimit SQL> oradebug tracefile_name SQL> oradebug...Event 10046 trace name context forever, level 12 实际过程记录: SYS@jyzhao1 >oradebug setospid 15552 Oracle...SYS@jyzhao1 >oradebug tracefile_name /opt/app/oracle/diag/rdbms/jyzhao/jyzhao1/trace/jyzhao1_ora_15552....trc SYS@jyzhao1 >oradebug Event 10046 trace name context forever, level 12 Statement processed. 2.4...至此,问题完美解决,该案例的定位,主要用到了oradebug的跟踪技能。
poke进行SCN推进: oradebug setmypid oradebug dumpvar sga kcsgscn_ oradebug poke 0x700000000019B70 8 32581432072...oradebug dumpvar sga kcsgscn_ 推进SCN后,尝试直接开库报错ORA-00399、ORA-00353、ORA-00312: SQL> oradebug setmypid Statement...SQL> oradebug dumpvar sga kcsgscn_ kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000...00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850 SQL> oradebug...setmypid oradebug dumpvar sga kcsgscn_ oradebug poke 0x700000000019B70 8 32681432564 oradebug dumpvar
跟踪当前会话: 1SQL> oradebug setmypid; 2Statement processed. 3SQL> oradebug unlimit; 4Statement processed...8SQL> oradebug tracefile_name 9SQL> oradebug event 10046 trace name context off; 10Statement processed...或者: 1SQL> oradebug setorapid 313; 2Statement processed. 3SQL> oradebug unlimit; 4Statement processed....5SQL> oradebug event 10046 trace name context forever,level 12; 6Statement processed. 7SQL> oradebug...使用oradebug help可以查看oradebug的命令帮助。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
setmypid SQL>oradebug unlimit; SQL>oradebug dump systemstate 266; --等1~2分钟 SQL>oradebug dump systemstate...266; --等1~2分钟 SQL>oradebug dump systemstate 266; SQL>oradebug tracefile_name;==>这是 生成的 文件名 ---------...------------在RAC上 生成systemstate dump--------------------- SQL>oradebug setmypid SQL>oradebug unlimit...SQL>oradebug -g all dump systemstate 266 --等1~2分钟 SQL>oradebug -g all dump systemstate 266 --等1~2分钟...SQL>oradebug -g all dump systemstate 266 在我们使用prelim参数仍然无法登录数据库时,可以使用gdb调试后台进程方式生成systemstate dump,例子如下
7*power(2,32) + 2516660859 from dual; select 7*power(2,32) + 2516661000 from dual; 32581432072 使用oradebug...poke进行SCN推进: SQL> oradebug setmypid Statement processed....SQL> oradebug dumpvar sga kcsgscn_ kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000...00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850 SQL> oradebug...setmypid SQL>oradebug dumpvar sga kcsgscn_ SQL>oradebug poke 0x700000000019B70 8 32681432564 SQL>oradebug
<<<<<<select spid from V$process, V$session where audsid=userenv('SESSIONID') and paddr=addr; SQL> oradebug...unlimit SQL> oradebug tracefile_name SQL> oradebug event sql_trace [sql: 5qcyrymp65fak] level=12...关闭 event ++: SQL> oradebug event sql_trace [sql: 5qcyrymp65fak] off 3....Using Oradebug (as SYS)To start tracing: oradebug setospid xxxx oradebug event 10046 trace name context...forever, level 12; /* In the session being traced execute the selects */ To stop tracing: oradebug
1024*1024=16043850334208 Oracle数据库10g控制文件推进可以在pfile中加入参数:_minimum_giga_scn; ORACLE 11.2.0.4 SCN推进方法oradebug... 本次数据库控制文件SCN推进步骤步骤 SQL> oradebug setmypid Statement processed. ...SQL> oradebug dumpvar sga kcsgscn_ kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000...00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850 SQL> oradebug...700000000019B78) = 00000000 00000000 AFTER: [700000000019B70, 700000000019B78) = 00000E97 80000000 SQL> oradebug
1.6.1信息采集SQL>sqlplus -prelim / as sysdbaSQL>oradebug setmypidSQL>oradebug unlimitSQL>oradebug hanganalyze...3SQL>oradebug dump systemstate 266SQL>oradebug hanganalyze 3SQL>oradebug dump systemstate 266示范命令,通过采集系统的Hang信息、系统状态信息等,可以分析系统挂起的原因,间隔采样
使用 oradebug 跟踪 CBC Latch 争用事件 SQL> oradebug setmypid Statement processed....SQL> oradebug peek 0x1D1C266D8 4 -- 观察 CBC Latch 地址为 0x1D1C266D8 开始之后的4字节信息的值为0 [1D1C266D8, 1D1C266DC...) = 00000000 SQL> oradebug poke 0x1D1C266D8 4 1 --修改 CBC Latch 地址为 0x1D1C266D8 开始的4字节信息的值为1,相当于获取了...模拟获取 latch SQL> oradebug setmypid Statement processed....SQL> oradebug poke 0x1D1C266D8 4 1 BEFORE: [1D1C266D8, 1D1C266DC) = 00000000 AFTER: [1D1C266D8, 1D1C266DC
trace name errorstack level 3'; alter session set events '1652 trace name errorstack level 3'; 我们也可以使用oradebug...命令来调用 这里分析1234进程 sqlplus "/ as sysdba" oradebug setospid 1234 oradebug unlimit oradebug dump errorstack
领取专属 10元无门槛券
手把手带您无忧上云