Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3320939
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: Oracle

2010-08-26 16:26:06

    什么是DUMP:    美[d∧mp]   转贮;转存;转贮数据   (内存信息)转贮,转存
  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
  alter">SYS@ning>alter 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的情况。
  这里有必要解释一下,它就是你需要dump的“某个对象”的“trace id”,或者就是你想要做的“某种trace”。如你想dump内存中的library cache,就是想看看内存中library cache的trace,那么这里的就是“library_cache”。
  trace qualifiers的含义分别是:
  “forever”:表示这个trace一旦设定,每当这个event发生的时候,就激活这个trace。
  “off”:表示对这个event关闭这个trace。
  “level ”:当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 ]
  这个里面“|”表示“或者”,“[]”表示出现一次或者多次。
 
 
阅读(2576) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~