Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3902499
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(253)

2006年(73)

分类: Oracle

2011-01-22 10:34:38

通用dump命令
alter session set events 'immediate trace name level '; duumptype:file_hdrs,redohdr,controfile
oradebug dump level;
alter system dump logfile 'filename' option;
alter system dump datafile n block m;

文件结构
在oracle数据文件头中存在操作系统相关的块,其大小和内容与平台相关。因此oracle的第一个块并是从LVCB偏移量开始。第一个oracle的块地址为1(full data block address包含了文件号,因此各文件的dba地址不同)。块1可能包括其他(头)信息,例如控制文件包含了DBID信息。第一个oracle块是一个 ‘normal block’,即包含了checksum和tail以检查块的正确性。日志文件也以块存储,但与数据块不同,通常块大小为512K。
时间戳(timestamps field):文件头和很多控制文件节(section)部分都存在时间戳,这些时间戳与date和timestamp类型不同,他们是从1/1/1988开始以秒为单位的整数。

通用文件头
每种数据文件(数据文件,控制文件,日志文件,归档文件,临时文件)都具有相同的数据文件头。通用文件头信息在block1中,在每个数据库文件的dump文件中都可以看到。在X$KCVFH和X$KCVFHALL表中也包含了类似信息,但表中的信息不是直接dump,而是经过计算和验证后的信息。
DBID和name用于验证文件是否属于相应数据库,control seq饱含了上次文件头信息的更新时间。这些值也可以从v$database获得。
FILE HEADER:
Software vsn=150994944=0x9000000,
Compatibility Vsn=134217728=0x8000000
Db Id=3003331107=0xb3033223, Db Name='ZAP'
Control Seq=64=0x40, File size=156=0x9c
File Number=0, Blksiz=4096, File Type=1 CONTROL

Software Vsn,Compatibility Vsn -- 兼容性控制信息。上次更改的软件版本信息和文件本身版本。当新的发布版本更新文件头时可更改版本信息。
Db Id,Db Name--在文件创建时设置,用于保证文件是数据库的一部分。Db Name可在创建控制文件时set修改,在resetlogs更新文件头或文件联机时将更改db name。
control seq--上次控制文件更新序列号。用于判断是否老的控制文件,如果数据文件头中的control seq大于控制文件,则控制文件是备份控制文件或具有不同的resetlog时间戳。注意这不是非常敏感的检查,因为在检查完成前,备份控制文件可以将它的seq向前滚。
file size--当前文件大小,可被resize命令更改。媒体恢复,增量备份也可以修改这个大小。注意操作系统的物理文件大小可能比这个大,file$中的大小可能小于这个file size。因为它表示的是逻辑块大小。
file number--数据文件的绝对文件号。在控制文件相应区域和file$也记录着这个文件号。当文件从数据库中删除时,它的文件号可被重用。因此在考虑备份和拷贝时,文件号并不是唯一的。文件号只同数据文件和日志文件相关,控制文件号总是0。
blksize--逻辑块大小。所有文件的i/o都以逻辑块为基本单位。每个逻辑具有一个头信息和一个尾信息用于验证块的有效性。数据库的可能采用不同的快大小的数据文件。注意日志文件块大小为512k。
file type--1 控制文件,2 日志文件,3 正常的数据文件(数据,索引或回滚块),4 备份控制文件,5 备份片,6 临时数据文件。

数据文件头
DATA FILE #5:
(Controlfile prolog omitted)
FILE HEADER:
(Generic header omitted)
Tablespace #5 - LOCQUERY rel_fn:5
Creation at scn: 0x0000.00001b41 09/27/2001 14:04:44
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x1a5196a3 scn: 0x0000.00000001 recovered at
01/01/1988 00:00:00
status:0x0 root dba:0x00000000 chkpt cnt: 8 ctl cnt:7
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.0000cb32 09/27/2001 14:17:27
thread:1 rba:(0x4.f50f.8c)
enabled threads: 01000000 00000000 00000000 ... 00000000
Backup Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 ... 00000000
External cache id: 0x0 0x0 0x0 0x0
Absolute fuzzy scn: 0x0000.00000000
Recovery fuzzy scn: 0x0000.00000000 01/01/1988 00:00:00
Terminal Recovery Stamp scn: 0x0000.00000000 01/01/1988 00:00:00

dump数据文件头:alter session set events 'immediate trace name file_hdrs,level n';
level 1:控制文件条目信息
level2:控制文件条目及通用文件头信息
level3:控制文件条目,通用文件头信息,数据文件头信息。如果数据库在mount状态level3将导致打开读取数据文件。
数据文件头信息存在于block1中通用文件头信息之后。
tablespace--数据文件所属的表空间,rel_fn--相对文件号
create scn,time--文件创建的scn和时间戳。在此scn之前不存在任何该文件的redo信息,这个时间戳是一个大致时间,用于区别具有文件名的不同数据文件(例如drop and recreate a tablespace)。
backup taken at scn,time--在执行begin backup时更新。rman不更新此标志。
reset logs count,scn--resetlogs时间戳
recoverd at--在恢复时,防止多个恢复进程使用同一个文件
status--也叫模糊标志位
KCVFHHBP 001 Hot backup-in-progress on file (fuzzy file)
KCVFHHBM 002 End hot backup marker seen (Bit only valid or set in Oracle7)
KCVFHOFZ 004 Online fuzzy because it was online and db open
KCVFHCRM 008 Crash Recovery Media marker seen (Bit only valid or set in
Oracle7)
KCVFHMFZ 010 Media recovery fuzzy - file in media recovery
KCVFHCMF 020 Clear media recovery (Bit only valid or set in Oracle7)
KCVFHAFZ 040 Absolutely fuzzy - fuzziness from file scan
KCVFHBCP 100 Bad Checkpoint - no enabled thread bitvec
(In Oracle7 this flag means: File belongs to SYSTEM tablespace)
KCVFHFMH 200 Freshly munged header. Resetlogs are not finished.
Bit is cleared at next checkpoint. A set bit allows an OPEN
RESETLOGS to be repeated (for example, file headers were
updated
(this bit was set) but control file record not updated)
KCVFHXCH 400 Externally cached by operating system. If the server is aware
of an OS cache that delays writes to media, then this bit gets set,
and the server will force a media recovery when file is reopened.
KCVFHZBA 800 Zeroed blocks allowed. File may contain Oracle7 unused blocks,
which are all zero. Oracle8 blocks have a nonzero initial value
with SEQ and TAIL.

root dba--仅出现在file#1中,标示数据库启动需要的字典表bootstrap$的block地址
checkpoint count--检查点次数。用于帮助检查是否恢复文件
controlfile checkpoint count--保存控制文件中的checkpoint count,帮助检查是否老的控制文件。
begin-hot--backup file size: 在备份scn更新时更新,To cope with data files that were resized during backup.
checkpoint scn--每次发生检查点时更新(热备时除外),在热备过程中checkpoint count必须保持不变,因为在发出alter backup命令之后到真正copy 数据文件的时间内可能会发生checkpoint。
backup checkpoint--当文件在backup模式,checkpoint完成时更新backup checkpoint.
External cache id--用于多实例并发访问时的cache一致性。
aboslute fuzzy scn--显示该文件是备份文件。
Recovery fuzzy SCN: The SCN at which the recovery of this file will be complete
(no longer fuzzy).
Both above fuzzy SCNs must be zero unless a fuzzy flag is set, and must be greater
than the checkpoint SCN
Comment in the code that examines the fuzzy bits:
/* Fuzzy-Wuzzy was a file.
** Fuzzy-Wuzzy needs no redo.
** Fuzzy-Wuzzy wasn't fuzzy, was he? */

日志文件头
使用redohdr类型dump日志文件头。
DUMP OF LOG FILES: 2 logs in database
LOG FILE #1:
(Controlfile prolog omitted)
FILE HEADER:
(Generic header omitted)
descrip:"Thread 0001, Seq# 0000000011, SCN 0x0000000580b5-
0x000000065f9b"
thread: 1 nab: 0x19001 seq: 0x0000000b hws: 0x3 eot: 0 dis: 0
reset logs count: 0x1a7f922c scn: 0x0000.00000001
Low scn: 0x0000.000580b5 10/31/2001 23:59:53
Next scn: 0x0000.00065f9b 11/01/2001 00:01:34
Enabled scn: 0x0000.00000001 10/31/2001 11:08:58
Thread closed scn: 0x0000.000580b5 10/31/2001 23:59:53
Log format vsn: 0x8000000 Disk cksum: 0x89eb Calc cksum: 0x89eb
Terminal Recovery Stamp scn: 0x0000.00000000 01/01/1988 00:00:00
Miscellaneous flags: 0x0
LOG FILE #2:

dump redohdr level n
n=1--控制文件中的日志文件条目
n=2--控制文件中的日志条目,通用文件头信息
n=3--控制文件中的日志文件条路,通用文件头信息,日志文件头信息。
其中日志文件头信息存放在日志文件的第一个块。通用文件头信息中包含了日志文件块大小,通常为512K(与操作系统相关)。
descrip--实际文本串,用于辅助调试
thread--日志文件所属线程
nab--下一个可用块,在打开的文件中中无限大或大于数据文件大小
seq--log seq number
hws--写头序列号
eot--标识日志流如何结束
KCRFHENOT 0 NOT end of thread
KCRFHEPUB 1 End of thread for PUBLIC thread
KCRFHEPVT 2 End of thread for PRIVATE thread
KCRFHELSR 3 End of thread due to log archive current
后面基本上都是对dump文件的解释,在这里作过多解释意义不太大。这两天准备学习下RAC,DSI的学习暂停。
阅读(1783) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-09-26 17:15:23

alter system dump datafile '/home/oracle/gan/DG/+RECO_DM01/test/datafile/test_0921.291.762460749' block min 168 block max 180;

chinaunix网友2011-03-09 09:32:42

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com