本文将以ODU 3.0.2版的配置文件为例,详细介绍ODU的配置参数,从配置文件也可以体会到ODU的众多功能特点。
ODU默认的配置文件是config.txt,在启动ODU时,会自动打开这个配置文件,当然在进入ODU后,仍然可以通过"load config [config filename]"命令来装入配置文件,这个命令中的config filename(配置文件名)是可选的,如果省略此项,将载入默认的配置文件config.txt。
配置文件是一个纯文本文件,每行为一个配置参数,为“参数名”和“值”,二者均不区分大小写,之间以若干空格分隔。下面是一个配置文件的内容示例:
byte_order little
block_size 8192
data_path data
lob_path /lob
charset_name ZHS16GBK
ncharset_name AL16UTF16
output_format text
lob_storage infile
clob_byte_order little
delimiter |
unload_deleted no
下面将详细介绍每一项配置参数的用法以及作用:
1. BYTE_ORDER
这个参数,指示数据文件平台字节序。可选值为"LITTLE"和"BIG",默认值为“LITTLE”。
这个参数跟ODU运行在哪个平台无关,而只与数据文件的平台有关。比如,数据文件是AIX平台上的,那么这个值就是“BIG",而数据文件是x86平台上的,那么这个值就是”LITTLE“。ODU能够跨平台恢复数据,比如可以将AIX上的Oracle数据文件复制到Windows上,由Windows版本上的ODU进行恢复,反之亦然。只要通过BYTE_ORDER这个参数正确地指示数据文件的平台,即可实现跨平台恢复。
2. BLOCK_SIZE
这个参数设置数据文件缺省的块大小。ODU支持同一数据库具有不同块大小数据文件,如果在ODU的control文件中没有没文件指定块大小(参见《ODU命令详解 PartI》中“open”命令),则使用配置文件中的BLOCK_SIZE指定的大小。这个参数可选的值有2048、4096、8192、16384、32768,默认值是8192。
3. DATA_PATH
DATA_PATH指定恢复的数据所存储的目录,如果需要恢复的数量量非常大,可以用这个参数值指定一个与ODU软件所在目录不同的路径。注意这个参数指定的目录必须是已经存在的,ODU不会自动创建这个目录。
可以使用相对路径,也可以使用绝对路径。默认值为”data“,表示恢复的数据默认放在ODU软件所在目录的data子目录中。
4. LOB_PATH
LOB_PATH指定恢复的LOB类型的数据所存储的目录。由于LOB数据一般非常消耗空间,因此可以通过这个参数把LOB数据放到与普通数据不同的目录。默认值为空,表示将LOB数据与普通数据放置在同一目录下,也就是DATA_PATH参数指定的目录。这个参数只有以恢复数据保存为文本文件(text)格式时才起作用,而以dmp格式时不会起作用。另外,即使时文本格式,如果LOB_STORAGE参数设置为INFILE,那么CLOB类型的数据会与普通的数据保存在同一个文件中,不会单独存储。值得注意的是,这个参数值不为空时,其设置的值应为”绝对路径“,否则在用SQLLDR导入恢复的数据时,将不能正确地找到LOB数据。
5. OUTPUT_FORMAT
OUTPUT_FORMAT参数指定恢复的数据保存的文件格式,目前支持的格式有TEXT和DMP两种,保存为TEXT格式时,ODU同时为数据生成建表的SQL和供SQLLDR导入数据需要的CTL文件。如果保存为DMP格式,则ODU使用与Oracle 8i兼容的DMP文件格式,可以使用imp工具导入恢复的数据。恢复的每一个表生成一个TEXT文件或DMP文件,不支持多个表存储在同一个DMP文件中,也不支持一个表分成几个部分保存在多个DMP文件中。此参数默认值为”TEXT“。
6. LOB_STORAGE
LOB_STORAGE参数指定LOB数据的存储位置以及是否要恢复LOB数据。这个参数可选的值有:FILE、INFILE、NONE,默认值为INFILE。值为NONE表示在恢复数据时,不恢复LOB数据。INFILE表示在以文本(TEXT)文件存储恢复数据时,CLOB列的数据与普通数据存储在同一文件中,BLOB数据不受此参数影响。FILE表示在以文本文件存储恢复数据时,CLOB列的数据存储在单独的文件中,在普通的数据文件中只存储了LOB数据所存储的文件名。BLOB列始终存储在单独的文件中,除非LOB_STORAGE设置为NONE,在这种情况下将不恢复LOB数据。在LOB列存储为单独的文件时,每一行的每个LOB列数据,存储为一个文件。
7. CLOB_BYTE_ORDER
CLOB_BYTE_ORDER参数指定CLOB列数据的字节序。由于CLOB列数据在数据块中以UNICODE编码存储,需要正确设置此参数才能将CLOB列数据转换为客户端数据。可选的值有"LITTLE"和"BIG",默认值为”BIG“。从Oracle 10g开始,CLOB数据全部以big endian字节序存储,所以在10g以及以上版本,所有平台上应应该将此参数设置为”BIG“。9i及以下版本的数据文件,根据数据文件平台,设置为不同的值,比如x86平台上的应设置为"LITTLE"。注意,此参数与BYTE_ORDER一样,与ODU本身运行的平台无关,而只与数据文件的平台有关系。
8. CHARSET_NAME和NCHARSET_NAME
这两个参数主要用于标明要恢复的数据,其字符集与国家字符集,也就是数据库的NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET两个参数的设置。ODU在恢复数据时,将NCHAR、NVARHCAR2类型的列数据,从NCHARSET_NAME指定的字符集编码转换为CHARSET_NAME所指定的字符集编码,同时将CLOB转换为CHARSET_NAME所指定的字符集编码。不正确的设置将导致以上几种类型的列数据在恢复后是乱码。这两个参数的取值,其值名称与ORACLE数据库中的一值,CHARSET_NAME默认值为”ZHS16GBK",NCHARSET_NAME默认值为"AL16UTF16"。ODU目前不支持所有的字集值,主要包括US7ASCII、ZHS16GBK、UTF8、AL16UTF16、ZHS16CGB231280这五种。在ODU中可以使用命令“CHARSET LIST”命令查看ODU当前版本所支持的字符集编码。
9. DELIMETER
DELIMITER指定以TEXT格式恢复数据时,列之间的分隔符。默认值为“|”(竖线)。由于字符型数据可能包含这个字符,可以将这个参数设为一个其他不会在数据出现的字符(比如某个特殊的符号)。分隔符可以指定为字符串,而不仅仅是一个单字符。比如,可以指定为“||”等。
10. UNLOAD_DELETED
UNLOAD_DELETED参数指定是否恢复已经被DELETE的行。可选的值为'YES"和“NO”,默认值为“NO”。这个参数用于在意外DELETE重要数据之后,并且不能够利用闪回查询,备份和logminer进行恢复,同时被DELETE的数据原来所在的空间没有被重用(覆盖)的情况下,恢复被DELETE掉的数据。由于不能判断DELETE的时间,因此利用这个功能恢复数据时,会恢复所有曾经DELETE的数据,另外,在某些情况下可能会导致ODU异常。因此,这个参数在大多数情况下应该设置为"NO“。
clob,blob,lob等字段的恢复和一般的文本恢复一样吗?
[回复]