对于controlfile,大多数人可能是既熟悉又陌生的。控制文件是Oracle最重要的文件之一,对它的深入理解可以使得我们对备份恢复等原理理解的更深!下面我们就去挖掘一下潜藏在controlfile中的秘密!解开神秘的面纱!
先从最简单的file header开始。
by SUN
工具介绍:oradebug
SQL> conn sys/admin as sysdba
SQL> oradebug setmypid;
Statement processed.
SQL> oradebug dump controlf 4;
Statement processed.
其中4为dump level。level的解释如下:
1 :only the file header
2 :just the file header, the database info record, and checkpoint progress records
3 :all record types, but just the earliest and latest records for circular reuse record types
4 :as above, but includes the 4 most recent records for circular reuse record types
5+ :as above, but the number of circular reuse records included doubles with each level
我们先从level 1说起:
cmd>sqlplus "/as sysdba"
sql>oradebug setmypid
sql>oradebug dump confilef 1;
在D:oracleadminsdusunudump中找到刚生成的trace文件,主要内容如下:
*** 2007-05-08 17:27:17.000
*** SESSION ID:(11.106) 2007-05-08 17:27:17.000
DUMP OF CONTROL FILES, Seq # 882 = 0x372
FILE HEADER:
Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
Db ID=3675493804=0xdb1395ac, Db Name='SDUSUN'
Activation ID=0=0x0
Control Seq=882=0x372, File size=278=0x116
File Number=0, Blksiz=8192, File Type=1 CONTROL
*** END OF DUMP ***
我们来分析一下:
1
Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
指出了创建控制文件时的Oracle的版本,这里是0x9200000,即,9.2.0。我的版本是9207。
Compatibility Vsn指出了兼容版本为0x8000000,即,8.0。
2
Db ID=3675493804=0xdb1395ac, Db Name='SDUSUN'
Db ID是数据库标识号,Oracle根据数据库的创建时间和数据库名按照一定的算法得出的;Db Name为数据库名,本例中数据库名为SDUSUN。
3
Activation ID=0=0x0
Control Seq=882=0x372, File size=278=0x116
Control Seq=882=0x372,说明这是一个控制文件的转储,Seq #是控制文件的序列号,它意味着控制文件的更新次数,
也可以看作是控制文件的版本。882是10进制表示的,372是十六进制表示的。
File size表示控制文件的物理大小,其单位为块,
也就是说,控制文件的实际大小=File size的值 * 数据块的大小(DB_BLOCK_SIZE)
我这里file size=278*8KB=2224KB
实际上,我们可以看一下oradata里面的控制文件大小,是2232KB,是一致的。
4
File Number=0, Blksiz=8192, File Type=1 CONTROL
控制文件的文件号为0,类型为1;
Blksiz对应于操作系统数据块的大小,在Windows平台上为8192K
(待续)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/593324/viewspace-376197/ ,如需转载,请注明出处,否则将追究法律责任。