zoukankan      html  css  js  c++  java
  • oradebug神器

    oradebug是SQL*PLUS工具,只要有SYSDBA权限就可以使用,不用做特别设置,但其功能很强大,是每个从事oracle工作人员必不可少的利器。

    下面就介绍一些常用功能:

    1:获得trace文件的名字和位置

    SQL> select * from v$version;
    
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for Linux: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    
    SQL> alter session set events 'immediate trace name controlf level 12';
    
    Session altered.
    
    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug tracefile_name
    /u01/oracle/admin/gdf/udump/gdf_ora_1961.trc
    SQL> 

    2:诊断转储

    可以转储的类型:

    SQL> oradebug dumplist
    EVENTS
    TRACE_BUFFER_ON
    TRACE_BUFFER_OFF
    HANGANALYZE
    LATCHES
    PROCESSSTATE
    SYSTEMSTATE
    INSTANTIATIONSTATE
    REFRESH_OS_STATS
    CROSSIC
    CONTEXTAREA
    HEAPDUMP
    HEAPDUMP_ADDR
    POKE_ADDRESS
    POKE_LENGTH
    POKE_VALUE
    POKE_VALUE0
    GLOBAL_AREA
    MEMORY_LOG
    REALFREEDUMP
    FLUSH_JAVA_POOL
    POOL_SIMULATOR
    PGA_DETAIL_GET
    PGA_DETAIL_DUMP
    PGA_DETAIL_CANCEL
    MODIFIED_PARAMETERS
    EVENT_TSM_TEST
    ERRORSTACK
    CALLSTACK
    HANGANALYZE_PROC
    TEST_STACK_DUMP
    TEST_GET_CALLER
    RECORD_CALLSTACK
    EXCEPTION_DUMP
    BG_MESSAGES
    ENQUEUES
    KSTDUMPCURPROC
    KSTDUMPALLPROCS
    SIMULATE_EOV
    KSFQP_LIMIT
    KSKDUMPTRACE
    DBSCHEDULER
    LDAP_USER_DUMP
    LDAP_KERNEL_DUMP
    DUMP_ALL_OBJSTATS
    DUMPGLOBALDATA
    HANGANALYZE_GLOBAL
    GES_STATE
    OCR
    CSS
    CRS
    SYSTEMSTATE_GLOBAL
    CREATE_DUMMY_REQUEST
    MMAN_ALLOC_MEMORY
    MMAN_CREATE_REQUEST
    MMAN_CREATE_IMM_REQUEST
    DUMP_ALL_COMP_GRANULE_ADDRS
    DUMP_ALL_COMP_GRANULES
    DUMP_ALL_REQS
    DUMP_TRANSFER_OPS
    DUMP_ADV_SNAPSHOTS
    ADJUST_SCN
    NEXT_SCN_WRAP
    CONTROLF
    FLUSH_CACHE
    FULL_DUMPS
    BUFFERS
    RECOVERY
    SET_TSN_P1
    BUFFER
    PIN_BLOCKS
    BC_SANITY_CHECK
    PIN_RANDOM_BLOCKS
    SET_NBLOCKS
    CHECK_ROREUSE_SANITY
    DUMP_PINNED_BUFFER_HISTORY
    REDOLOGS
    LOGHIST
    ARCHIVE_ERROR
    REDOHDR
    LOGERROR
    OPEN_FILES
    DATA_ERR_ON
    DATA_ERR_OFF
    BLK0_FMTCHG
    UPDATE_BLOCK0_FORMAT
    TR_SET_BLOCK
    TR_SET_ALL_BLOCKS
    TR_SET_SIDE
    TR_CRASH_AFTER_WRITE
    TR_READ_ONE_SIDE
    TR_CORRUPT_ONE_SIDE
    TR_RESET_NORMAL
    TEST_DB_ROBUSTNESS
    LOCKS
    GC_ELEMENTS
    FILE_HDRS
    KRB_CORRUPT_INTERVAL
    KRB_CORRUPT_SIZE
    KRB_CORRUPT_REPEAT
    KRB_PIECE_FAIL
    KRB_OPTIONS
    KRB_FAIL_INPUT_FILENO
    KRB_SIMULATE_NODE_AFFINITY
    KRB_TRACE
    KRB_BSET_DAYS
    KRB_SET_TIME_SWITCH
    KRBMRSR_LIMIT
    KRBMROR_LIMIT
    KRC_TRACE
    KRA_OPTIONS
    KRA_TRACE
    FBTAIL
    FBINC
    FBHDR
    FLASHBACK_GEN
    DROP_SEGMENTS
    KTPR_DEBUG
    TREEDUMP
    LONGF_CREATE
    ROW_CACHE
    LIBRARY_CACHE
    CURSORDUMP
    CURSORTRACE
    CURSOR_STATS
    SHARED_SERVER_STATE
    JAVAINFO
    KXFPCLEARSTATS
    KXFPDUMPTRACE
    KXFPBLATCHTEST
    KXFXSLAVESTATE
    KXFXCURSORSTATE
    WORKAREATAB_DUMP
    KUPPLATCHTEST
    OBJECT_CACHE
    SAVEPOINTS
    RULESETDUMP
    RULESETDUMP_ADDR
    OLAP_DUMP
    SELFTESTASM
    IOERREMUL
    ALRT_TEST
    AWR_TEST
    AWR_FLUSH_TABLE_ON
    AWR_FLUSH_TABLE_OFF
    ASHDUMP
    MMON_TEST
    SQL> 


    由于可转储类型太多,鉴于篇幅,现举例常用的几个,其他类似。

    a:controlf

    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug dump controlf 12
    Statement processed.
    SQL> oradebug tracefile_name
    /u01/oracle/admin/gdf/udump/gdf_ora_1961.trc

    效果与以下语句一样

    alter session set events 'immediate trace name controlf level 12';


    b:redo log header

    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug dump redohdr 10
    Statement processed.
    SQL> oradebug tracefile_name
    /u01/oracle/admin/gdf/udump/gdf_ora_2198.trc
    SQL> !

    效果同以下语句一样:

    alter session set events 'immediate trace name redohdr level 10'

    其他类似。

    下面举一个具体的案例来说明oradebug的功能:

    追踪SMON:

    [oracle@edhatGRA ~]$ ps -ef | grep smon
    oracle    1947     1  0 17:31 ?        00:00:01 ora_smon_gdf
    oracle    2300  2222  0 19:01 pts/0    00:00:00 grep smon
    [oracle@edhatGRA ~]$ sqlplus /nolog
    
    SQL*Plus: Release 10.2.0.4.0 - Production on Sun May 5 19:01:23 2013
    
    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
    
    SQL> conn / as sysdba
    Connected.
    SQL> oradebug setospid 1947
    Oracle pid: 8, Unix process pid: 1947, image: oracle@edhatGRA (SMON)
    SQL> oradebug event 10500 trace name context forever,level 10
    Statement processed.
    SQL> oradebug tracefile_name
    /u01/oracle/admin/gdf/bdump/gdf_smon_1947.trc
    SQL> 

    打开该文件

    [oracle@edhatGRA ~]$ vi /u01/oracle/admin/gdf/bdump/gdf_smon_1947.trc
    /u01/oracle/admin/gdf/bdump/gdf_smon_1947.trc
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORACLE_HOME = /u01/oracle/10g
    System name:    Linux
    Node name:      edhatGRA
    Release:        2.6.32-71.el6.i686
    Version:        #1 SMP Wed Sep 1 01:26:34 EDT 2010
    Machine:        i686
    Instance name: gdf
    Redo thread mounted by this instance: 1
    Oracle process number: 8
    Unix process pid: 1947, image: oracle@edhatGRA (SMON)
    
    *** 2013-05-05 19:02:19.833
    *** SERVICE NAME:(SYS$BACKGROUND) 2013-05-05 19:02:19.832
    *** SESSION ID:(164.1) 2013-05-05 19:02:19.832
    Received ORADEBUG command 'event 10500 trace name context forever,level 10' from process Unix process pid: 2304, image:
    *** 2013-05-05 19:02:19.833
    SMON: system monitor process posted
    *** 2013-05-05 19:02:19.833
    SMON: Posted too frequently, trans recovery disabled.
    Received ORADEBUG command 'tracefile_name' from process Unix process pid: 2304, image:
    *** 2013-05-05 19:02:29.420
    SMON: system monitor process posted
    *** 2013-05-05 19:02:29.420
    SMON: Posted too frequently, trans recovery disabled.

    结合oracle的事件,oradebug可发挥强大功能,为你解决问题,深入理解oracle内部原理,提供有益的帮助。

    3:总结

    oradebug对于学习oracle,解决问题,诊断问题是必不可少的工具,本文只是oradebug的入门,更多功能请参阅相关文档。本人提供一些链接:

    a:http://www.dba-oracle.com/t_oradebug_tips.htm

    b:   http://www.juliandyke.com/Diagnostics/Tools/ORADEBUG/ORADEBUG.html

    c:http://www.orafaq.com/wiki/Oradebug








     

  • 相关阅读:
    《基于B_S模式的教务管理系统设计与实现》论文笔记(三)
    《重修补考报名考务管理信息系统中的网络技术》论文笔记(二)
    《基于WEB的独立学院补考重修管理系统研究》论文笔记(一)
    重修安排管理系统的设计与实现 文献收集
    重修安排管理系统的设计与实现 文献收集
    《暗时间》读书笔记
    R、Python、Scala 和 Java,到底该使用哪一种大数据编程语言?
    编程和音乐真的很像吗?
    关于虚拟现实叙事方式的终极入门指南
    如何避免脆弱的代码
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3061662.html
Copyright © 2011-2022 走看看