您的位置:首页 > 数据库 > Oracle

11.未公开的Oracle数据库秘密笔记——ORADEBUG使用

2015-12-20 22:27 525 查看
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50366084
11.未公开的Oracle数据库秘密笔记——ORADEBUG使用
ORADEBUG是诊断性能和挂起问题的有效工具。能够合适正确的IP地址,帮助实时应用集群实例间的通信。11g之前,ORADEBUG TRACEFILE_NAME是用来确定一个进程写入追踪文件名字的唯一途径。

         该工具主要是给ORACLE支持人员使用的,所以很少有记载。但是该工具还是非常有用的。

         ORADEBUG主要用于调式和跟踪。

         主要如下:

l  SQL能够追踪你自己的服务进程以及外部服务进程

l  确定一个进程正往哪个追踪文件写入

l  转储内部的ORACLE结构来诊断数据库挂起以及内存损坏情况

l  转储数据文件头部信息或撤销分割头部

l  确定DBMS实例使用哪些共享内存块和信号量

l  找出RAC实例使用那些互联地址和协议

l  修改SGA中的数据结构

1.  命令

sys@ORCL> ORADEBUG HELP

HELP                [command]                  Describe one or all commands

SETMYPID                                    Debug current process

SETOSPID       <ospid>                         Set OS pid of process to debug

SETORAPID      <orapid> ['force']       Set Oracle pid of process to debug

SETORAPNAME    <orapname>            Set Oracle process name to debug

SHORT_STACK                             Get abridged OS stack

CURRENT_SQL                                     Get current SQL

DUMP             <dump_name> <lvl>[addr]  Invoke named dump

PDUMP           [interval=<interval>] Invoke named dump periodically

                [ndumps=<count>]  <dump_name> <lvl> [addr]

DUMPSGA        [bytes]                       Dump fixed SGA

DUMPLIST                                    Print a list of available dumps

EVENT             <text>                           Set trace event in process

SESSION_EVENT  <text>                           Set trace event in session

DUMPVAR        <p|s|uga> <name>[level]  Print/dump a fixed PGA/SGA/UGAvariable

DUMPTYPE       <address> <type><count>  Print/dump an address withtype info

SETVAR           <p|s|uga> <name><value>  Modify a fixed PGA/SGA/UGAvariable

PEEK                <addr> <len> [level]   Print/Dump memory

POKE                <addr> <len> <value>         Modify memory

WAKEUP         <orapid>             Wake up Oracleprocess

SUSPEND                                      Suspend execution

RESUME                                        Resume execution

FLUSH                                            Flush pending writes to trace file

CLOSE_TRACE                             Close trace file

TRACEFILE_NAME                               Get name of trace file

SETTRACEFILEID <identifier name>         Set tracefile identifier

LKDEBUG                                     Invoke global enqueue service debugger

NSDBX                                           Invoke CGS name-service debugger

-G            <Inst-List | def | all | cluster >Nodes involved

-R            <Inst-List | def | all | cluster >Nodes involved (return output)

SETINST        <instance# .. | all>      Set instance list in double quotes

SGATOFILE      <SGA dump dir>      Dump SGA to file; dirname in double quotes

DMPCOWSGA      <SGA dump dir> Dump & map SGAas COW; dirname in double quotes

MAPCOWSGA      <SGA dump dir>         Map SGA as COW; dirname in double quotes

HANGANALYZE    [level] [syslevel]       Analyze system hang

FFBEGIN                                       Flash Freeze the Instance

FFDEREGISTER                                     FF deregister instance fromcluster

FFTERMINST                                Call exit and terminate instance

FFRESUMEINST                                    Resume the flash frozen instance

FFSTATUS                             Flash freeze status of instance

SKDSTTPCS      <ifname>  <ofname>        Helps translate PCs to names

WATCH            <address> <len><self|exist|all|target>  Watch aregion of memory

DELETE           <local|global|target> watchpoint<id>     Delete a watchpoint

SHOW              <local|global|target> watchpoints   Show watchpoints

DIRECT_ACCESS  <set/enable/disable command | selectquery> Fixed table access

IPC                                        Dump ipc information

IPC_TRACE      <module> <trace_flags><trace_level>

                                                Modify IPC trace flags

IPC_CHECKSUM   <light/medium/full>

                                               Enable/DisableIPC Checksumming

UNLIMIT                                       Unlimit the size of the trace file

CALL                [-t count] <func>[arg1]...[argn]  Invoke function witharguments

CORE                                             Dump core without crashing process

PROCSTAT                                     Dump process statistics

这个帮助文本非常详细。

2.  连接到一个进程

ORADEBUGSETMYPID

ORADEBUGSETORAPID pid

ORADEBUGSETOSPID spid

3.  ORADEBUG IPC

ORADEBUG IPC能够用于找出一个ORACLE实例可能使用了哪些共享的内存块。如果使用信号量同步,信号量也会被跟踪到。

#ipcs –mb

列出共享内存块及其拥有者和大小。

转储IPC信息。

如下:

SQL>ORADEBUGSETMYPID

SQL>ORADEBUGIPC

SQL>ORADEBUGTRACEFILE_NAME

4.  ORADEBUG SHORT_STACK

ERRORSTACK转储将结果存储在一个很大的跟踪文件里面。SHORT_STACK更适合于迅速找出一个服务进程位于调用路径中的哪一个步骤。

5.  诊断转储

运行ORADEBUG DUMPLIST可以列出各种转储的名字。

CONTROLF用于不同细节级别转储控制文件。

EVENTS转储不是真正的诊断转储,只是将激活的事件写入跟踪文件。

关于级别和范围,如下图1



6.  ERRORSTACK

一个程序的调用栈可以通过ERRORSTACK的诊断转储获得。

例如:ORADEBUG DUMP ERRORSTACK 1

7.  HANGANALYZE

HANGANALYZE命令执行悬挂分析转储(hanganalysis dump).

8.  MODIFIED_PARAMETERS

转储MODIFIED_PARAMETERS选项进行的转储,可以将通过ALTER SESSION或ALTER SYSTEM命令修改过的初始化参数保存到跟踪文件中。

9.  PROCSTAT以及进程级别的操作系统统计

通过ORADEBUG PROCSTAT命令将进程级别的操作系统的统计结果转储到跟踪文件中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: