zoukankan      html  css  js  c++  java
  • 【转】Oracle中DUMP的转储方法

    【转】Oracle中DUMP的转储方法

    什么是DUMP:

    DUMP是一个动词,它代表一种操作,说的简单一点,拿内存举例,就是原封不动的把某一片内存给展现出来。拿跟踪举例,就是它原始的展示了Oracle处理某个问题的过程。

    大家在学习研究ORACLE的过程中,为了更深入的了解内部的机制,免不了要经常DUMP来研究学习。

    Oracle 11g的Trace文件存放路径:oracle\diag\rdbms\**\**\trace

    1、DUMP出控制文件
    alter system (session) set events 'immediate trace name controlf level 10'

    —————————————————————————————

    2、DUMP出日志文件分析
    alter system dump logfile logfilename;

    —————————————————————————————

    3、DUMP出日志文件头分析
    alter session set events 'immediate trace name REDOHDR level 10'

    ———————————————————————————

    4、DUMP出LIBRARY CACHE
    alter system (session) set events 'immediate trace name library_cache level 10'

    —————————————————————————————

    5、 DUMP出share_pool
    alter system (session) set events 'immediate trace name heapdump level 10'

    ———————————————————————————

    6、DUMP出所有数据文件头
    alter system (session) set events 'immediate trace name file_hdrs level 10';

    ———————————————————————————

    7、DUMP出数据文件(只能是alter system)

    alter system dump datafile n block m

    select file_id,block_id,blocks from dba_extents where segment_name='EMPLOYEES'
    FILE_ID BLOCK_ID BLOCKS
    ---------- ---------- ------------------
         5           81           8


    SQL>alter system dump datafile 5 block 81;

    System altered.
    另外是做很具体的针对某行所在的BLOCK 并DUMP出来研究,可以用如下方法

    1、取BLOCK号
    select dbms_rowid.rowid_block_number(rowid) from wdjk1999;

    DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
    78

    2、取文件号
    select file_id from dba_data_files where tablespace_name='WDJK1999'

    FILE_ID

    ----------
    16

    SQL>alter system dump datafile 16 block 78;

    System altered.

    —————————————————————————

    8、DUMP出索引
    SQL> select object_id from dba_objects where object_name=upper('index_name');
      
    OBJECT_ID
    ----------
    70591
    SQL> alter session set events 'immediate trace name TREEDUMP level 70591';

    —————————————————————————————

    9、DUMP出回滚段信息
    select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC
    ----------- ------------ ------------ ---------- ------------ ------------ -------------
         1          31            442          2           21           242          52
    dump对应的undo block
    system dump datafile 2 block 21;
    System altered.


    ——————————————————————————

    10、 DUMP出系统状态分析 (只能是SYSTEM)
    alter system set events 'immediate trace name systemdate level 10'

    ——————————————————————————

    11、 DUMP出进程状态分析
    alter session set events 'immediate trace name PROCESSSTATE level 10'

    附:

    event的定义:event = event_name + action。

    首先,这里的event name是一个event的名字或者是event的代码。如果event name不是“immediate”,那么oracle解析器会在event name table中找到这个event。关于immediate event,它是一个特殊的event,它显示一个立即的无条件的event,它不会等待其他人去提交它而是立即执行。

    action是由一个action keyword和一个或者多个qualifier(值)组成。

    action keyword是如下三个值:

    crash:它会引起一个oracle crash,一般是为了测试recovery的时候才用它。

    debugger:调用一个系统的debugger。(invokes a system debugger if any)

    trace:is context specific or named context-independent ones。

    crash和debugger这两个值一般是oracle的核心开发人员使用。我们这里只讨论trace的情况。

    这里有必要解释一下<trace_name>,它就是你需要dump的“某个对象”的“trace id”,或者就是你想要做的“某种trace”。如你想dump内存中的library cache,就是想看看内存中library cache的trace,那么这里的<trace name>就是“library_cache”。

    trace qualifiers的含义分别是:

    “forever”:表示这个trace一旦设定,每当这个event发生的时候,就激活这个trace。

    “off”:表示对这个event关闭这个trace。

    “level <n>”:当event发生的时候,你想要trace的级别,每个trace的级别的取值是都是不一样的,它一个非负整数。通常情况下,它的值越大,就会有更多的内容显示,但是如果你是做某个块的dump,这里的level就是data block address(dba)。

    综上所述,event可大概的如下表示为:

    event_name CRASH    ....

    event_name DEBUGGER ....

    event_name TRACE    NAME trace_name|CONTEXT [ FOREVER|OFF|LEVEL <n> ]

    这个里面“|”表示“或者”,“[]”表示出现一次或者多次。

  • 相关阅读:
    控制台日志输入到文件指定文件中
    flutter环境搭建坑一
    hybridapp/webapp的前端UI框架推荐
    hybrid app、web app与native app工具
    浏览记录
    HTML5跨平台APP越来越火,工具也越来越多。我推荐一个开发平台(一款工具)----DCloud
    学个p-nan isnan . isna isnull
    学个p-np.triu(m, k),np.tirl()
    实验五 plsql基础
    实验四-数据插入、更新、删除
  • 原文地址:https://www.cnblogs.com/weixun/p/3015809.html
Copyright © 2011-2022 走看看