SQL>select dump(chartorowid(‘0.0.1’)) from dual; Typ=69 Len=6: 8,0,0,0,0,0 -> osd_dba_filebits = 5 (SCO) Typ=69 Len=6: 4,0,0,0,0,0 -> osd_dba_filebits = 6 (Sequent , HP) Typ=69 Len=6: 1,0,0,0,0,0 -> osd_dba_filebits = 8 (NCR,AIX) Typ=69 Len=6: 0,16,0,0,0,0 -> osd_dba_filebits = 12 (MVS) Typ=69 Len=10: 0,0,0,0,0,64,0,0,0,0 ->osd_dba_filebits = 10
SELECT * FROM V$TYPE_SIZE WHERE TYPE IN ('KCBH', 'KTNO', 'KCBH', 'KTBBH', 'KTBIT', 'KDBH', 'KTECT', 'KTETB', 'KTSHC'); 如果查询结果是如下这样的,osd_c_struct_alignment需设成32。 COMPONEN TYPE DESCRIPTION TYPE_SIZE -------- -------- -------------------------------- ---------- K KTNO TABLE NUMBER IN CLUSTER 1 KCB KCBH BLOCK COMMON HEADER 20 KTB KTBIT TRANSACTION VARIABLE HEADER 24 KTB KTBBH TRANSACTION FIXED HEADER 48 KDB KDBH DATA HEADER 14 KTE KTECT EXTENT CONTROL 44 KTE KTETB EXTENT TABLE 8 KTS KTSHC SEGMENT HEADER 8 8 rows selected.
对于VAX/VMS及Netware平台,结果通常如下,osd_c_struct_alignment需设成0。
COMPONEN TYPE DESCRIPTION TYPE_SIZE -------- -------- -------------------------------- ---------- K KTNO TABLE NUMBER IN CLUSTER 1 KCB KCBH BLOCK COMMON HEADER 20 KTB KTBIT TRANSACTION VARIABLE HEADER 24 KTB KTBBH TRANSACTION FIXED HEADER 48 KDB KDBH DATA HEADER 14 KTE KTECT EXTENT CONTROL 44 KTE KTETB EXTENT TABLE 8 KTS KTSHC SEGMENT HEADER 8 8 rows selected. OSD_FILE_LEADER_SIZE
数值类型。这个参数表示的是在Oracle数据文件中,真实的数据文件头块之前的块/字节的数量。对于AIX或DEC UNIX系统平台且使用裸设备做为数据文件时control.dul控制文件要加额外的字节偏移量,这在3.3.1中会提到。
osd_file_leader_size可以参照如下进行设置:
|
平台
|
值
|
|
Unix
|
1
|
|
Vms
|
0
|
|
Desktop
|
512
|
|
Others
|
未知
|
Filesize_in_mb=2000 3.2.5 参数文件举例 $ cat init.dul #my init.dul dc_columns = 200000 dc_tables = 10000 dc_objects = 10000 dc_users = 40 osd_big_endian_flag =true osd_dba_file_bits = 10 osd_c_struct_alignment = 32 osd_file_leader_size = 1 db_block_size = 8k LDR_ENCLOSE_CHAR = " LDR_PHYS_REC_SIZE = 81 compatible=9 EXPORT_MODE=TRUE BUFFER=10485760
3.3 控制文件:control.dul
3.3.1 控制文件格式说明
控制文件也是dul运行必需的文件,默认的名字为control.dul,包含了要做unload的数据文件的相关信息,dul通过它,把数据文件号对应到相应的数据文件。
Control.dul的格式为:
Ts# Relative_file# Data_file_name [extra leader offset ] [startblock#] [endblock#]
TS#,Relative_file#,Data_file_name:这三项源于v$datafile,是必需项目,分别对应v$datafile这个视图中的ts#,rfile#,代表每一个数据文件的表空间号,数据文件号。
extra leader offset:这一项是可选项目。一些系统环境,如AIX平台,数据文件头包含一些额外的块,这在dul做lseek操作时是需要跳过的,否则会报错,AIX平台这个值为4096。
startblock#,endblock#:这两项也是可选项。当数据文件有坏块时,可以通过设定这两项跳过坏块,这样一个数据文件可以分多行写。
3.3.2 举例:
3.3.2.1 通过v$datafile生成control.dul的一个有用脚本
SQL> set trimspool on SQL> set pagesize 0 SQL> set linesize 256 SQL> set feedback off SQL> col name format a200 SQL> spool control.dul SQL> select ts#,rfile#,name from v$datafile; SQL> spool off SQL> exit Cat $ cat control.dul SQL> select ts#,rfile#,name from v$datafile; 0 1 /yang/oradata/orcl/system01.dbf 1 2 /yang/oradata/orcl/undotbs01.dbf 3 3 /yang/oradata/orcl/example01.dbf 4 4 /yang/oradata/orcl/indx01.dbf 5 5 /yang/oradata/orcl/tools01.dbf 6 6 /yang/oradata/orcl/users01.dbf 6 7 /yang/oradata/orcl/users02.dbf SQL> spool off
Control.dul标红这两行需要去掉。
3.3.2.2 control.dul格式示例
示例1:标准格式
6 7 /yang/oradata/orcl/users02.dbf
示例2:假定数据文件users02大小为4094M(4094M去掉2M的文件头),每个数据块大小为8K,该数据文件中223019数据块出现corrupt,可以通过startblock#与endblock#把这个223019数据块跳过。
6 7 /yang/oradata/orcl/users02.dbf 1 223018
6 7 /yang/oradata/orcl/users02.dbf 223020 524032
示例3:AIX平台设定extra block offset,4096为offset值。
6 7 /dev/rusers01 4096
下一篇:DUL流程详解