When you prepare to do recovery of partitioned table with LOB columns with AUL4, you must modify the LOB index's partition name first in AULOBJ.TXT. I have thought that the LOB index have the same partition name with table, just as normal local index, and in AUL 4 I use the table's partition name to locate the LOB index's partition to get the relative data object id. But the names are not same, let's start with two demo table :
SQL> CREATE TABLE T_HASHLOB (COL1 NUMBER, COL2 CLOB)
2 LOB(COL2) STORE AS (DISABLE STORAGE IN ROW)
3 PARTITION BY HASH(COL1) PARTITIONS 2;
Table created.
Insert few rows and the perform a checkpoint, and start AUL 4 to unload the dictionary table, and describe the table structure:
AUL> desc anysql.t_hashlob
Storage(OBJ#=0 OBJD=0 TS=0 FILE=0 BLOCK=0 CLUSTER=0)
No. SEQ INT Column Name Type
--- --- --- ------------------- ----------------
1 1 1 COL1 NUMBER
2 2 2 COL2 CLOB (SYS_IL0000010046C00002$$)
We could use grep to get the partition name information:
C:\MYDUL>grep -i t_hashlob AULOBJ.TXT
10048,25,T_HASHLOB,SYS_P28,19
10047,25,T_HASHLOB,SYS_P27,19
10046,25,T_HASHLOB,,2
C:\MYDUL>grep -i "SYS_IL0000010046C00002\$\$" AULOBJ.TXT
10054,25,SYS_IL0000010046C00002$$,SYS_IL_P32,20
10053,25,SYS_IL0000010046C00002$$,SYS_IL_P31,20
10052,25,SYS_IL0000010046C00002$$,,1
Then we modify the partition name of LOB index according to the order of object id:
10054,25,SYS_IL0000010046C00002$$,SYS_P28,20
10053,25,SYS_IL0000010046C00002$$,SYS_P27,20
Then we can start to recover the rows, just specify the partition name in the "UNLOAD" command :
AUL> set lob_convert 1
Current LOB_CONVERT is : 1-GBK
AUL> set clob_edian big
Current CLOB_EDIAN is : BIG
AUL> unload table anysql.t_hashlob partition SYS_P27;
2006-12-25 10:59:01
Unload OBJD=10047 FILE=4 BLOCK=8291 CLUSTER=0 ...
2|part 2
2006-12-25 10:59:02
AUL> unload table anysql.t_hashlob partition SYS_P28;
2006-12-25 10:59:04
Unload OBJD=10048 FILE=4 BLOCK=8299 CLUSTER=0 ...
1|part 1
2006-12-25 10:59:04
The program becomes more and more complex, really hard to make any change now.