两种方法找到block号
1、执行dbms_rowid.rowid_block_number
2、查询dba_segments
select header_file, header_block, blocks from dba_segments where segment_name = 'EMP';
alter system dump datafile 6 block 47;
alter system dump datafile 6 block min 43 block max 51;
SQL> select dbms_rowid.rowid_block_number(rowid) from T4;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
————————————
1514
1514
这个常用来DUMP数据块号,分析
比如,我要dump表test_table的某个块,则在sqlplus下执行:
- sys@Ti>select header_file, header_block, blocks from dba_segments where segment_name = 'TEST_TABLE';
- HEADER_FILE HEADER_BLOCK BLOCKS
- ----------- ------------ ----------
- 4 345443 19456
- 1 rows selected.
复制代码然后我dump第一块:
- sys@Ti> alter system dump datafile 4 block 345443;
- System altered.
复制代码这样就可以将该块dump到udump目录下了。什么?你不知道udump是哪里?那就这样查:
- sys@Ti> select value from v$parameter where name = 'user_dump_dest';
- VALUE
- ----------------------------------------------------------------------------------------------------
- /opt/oracle10g/oracle/admin/eos/udump
复制代码生成文件的命名方式是”${ORACLE_SID}_ora_${PID}.trc“
可以这样查询当前连接的pid:
- select spid from v$session s, v$process p where p.addr = s.paddr and s.audsid = sys_context('userenv','sessionid')
复制代码如果你嫌名字不够醒目,那么就这样:
- ALTER SESSION SET TRACEFILE_IDENTIFIER = 'WAHAHA'
复制代码这样命名方式就会变成”${ORACLE_SID}_ora_${PID}_WAHAHA.trc“
还可以一次dump多个块,像这样:
- alter system dump datafile block min block max
复制代码[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70612/viewspace-1019429/
,如需转载,请注明出处,否则将追究法律责任。