我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

数据泵导入分区表统计信息报错(二)

上一篇 / 下一篇  2008-03-03 23:41:42 / 个人分类:Bug

今天在进行数据泵导入操作时,发现一个bug

上一篇记录了问题的现象,这一篇继续深入研究。

数据泵导入分区表统计信息报错(一):http://yangtingkun.itpub.net/post/468/456176

 

 

上一篇文章已经描述了问题的产生,而且提到了这个问题很难重现。无论如何去模拟实际的情况,都无法重现问题。

为了重现这个问题,在RAC数据库环境中,仿照问题表创建了分区表、并仿照问题数据库收集了统计信息的方式进行了统计信息的收集,都无法重现问题。

但是,利用问题数据库导出的统计信息,就可以重现问题。上周五发现的问题,但是由于数据不方便带回家,因此由于时间的限制仅仅测试了这么多。

今天一早到了公司,就继续这个问题的测试。周末的时候仔细思考了一下,既然在测试的数据库上无法重现问题,但是利用源数据库的数据可以重现问题,那么问题是否和数据本身有关,也就是说,是数据本身的问题导致了bug

于是今天测试的时候尝试使用问题数据,在多个不同平台的Oracle10203rac和单实例数据库上尝试执行数据泵导入,错误屡试不爽。这样看来,问题是源数据库本身造成的,也与源数据库目前的数据、统计信息有关。

这样将问题的目标从测试数据库转到的执行导出的源数据库中。

首先对比源数据库和导入数据库中表分析情况,可以发现只有分区表的统计信息没有导入,这就进一步确定了问题是发生在分区表中。

 

下面查询一下源数据库中表的分析情况:

SQL> SELECT TABLE_NAME, PARTITIONED, TEMPORARY, LAST_ANALYZEDITPUB个人空间` {;TM'm
  2  FROM USER_TABLESITPUB个人空间]4~&L ko^!f._b I R%Y
  3  ORDER BY 4 DESC;

TABLE_NAME                     PAR T LAST_ANALYZEDITPUB个人空间5Ui1?*k7mv
------------------------------ --- - -------------------
R'EC#kIi9X3Z_0ORD_HIT_COMM_TMP               NO  Y
.P$Q L*Ne,Sw%@%O(\0CON_LIST_ITEM_SHARE_TMP        NO  YITPUB个人空间 rn:D[L4H0M/P n
JOB_MONTH_STATS                NO  Y
|ss,Yp1j8y0ZZZ_PURCHASE_BUYER             NO  N 2008-03-02 02:14:45ITPUB个人空间$m4|!?5SO%]/i4`1e
ZZZ_YANGS_PRO                  NO  N 2008-03-02 02:14:45ITPUB个人空间d4D}'sC,|8W9\C
ZZZ_YANGS_ORDER3               NO  N 2008-03-02 02:14:45
0L:k+TX[,g0ZZZ_YANGS_ORDER2               NO  N 2008-03-02 02:14:45
a2xn#A,`W A7h/Xa@0.ITPUB个人空间3c)^?"V S\"A
.ITPUB个人空间$Yn[b/Pb,wX
.ITPUB个人空间Gk N3aV%SW5b
ASS_BBS_CATALOG                NO  N 2008-03-02 01:00:10
*[?0~;n @!j0ASS_BBS_ARTICLE                NO  N 2008-03-02 01:00:
09ITPUB个人空间l'uz or5Y.r
A                              NO  N 2008-03-02 01:00:08
#yL)z@.Ex*\0} {q0ORD_LOG_HIT_COMM               YES N 2007-05-03 15:33:45
J){ns$y)cRE0CON_LOG_LIST_ITEM              YES N 2007-05-03 15:33:19
)hD H |s yk0ORD_PURCHASE_ITEM              YES N 2007-05-03 15:33:17
~!mw1H6k0ORD_ORDER_ITEM                 YES N 2007-05-03 15:30:25ITPUB个人空间!L(Z;lN|U4j [
ORD_ORDER                      YES N 2007-05-03 15:23:42

已选择450行。

从这里就可以看到分区表的数据分析存在问题,其他表的分析都是近期的,只有分区表的分析已经很长时间没有更新了。

检查分区表的分析方法:

SQL> SELECT WHAT, LAST_DATE FROM USER_JOBS WHERE JOB = 291;

WHAT                                                     LAST_DATEITPUB个人空间`1a;n$B'ddyO
-------------------------------------------------------- -------------------ITPUB个人空间1S1]h#}G&\ U
dbms_stats.gather_schema_stats(user, cascade => true);   2008-03-02 01:00:02

采用这种方式进行分析,默认应该分析分区表才对,接着检查分区表的各个分区是否分析过:

SQL> SELECT TABLE_NAME, PARTITION_NAME, LAST_ANALYZEDITPUB个人空间@^m"r&LVc
  2  FROM USER_TAB_PARTITIONS
2z:i5}0o`6h'e`0  3  ORDER BY 1, 2;

TABLE_NAME                     PARTITION_NAME                 LAST_ANALYZED
#{4Z]Uf;_0------------------------------ ------------------------------ --------------
Ni9\ O|v,B.VVrG0CON_LOG_LIST_ITEM              CON0610ITPUB个人空间 I:n1t K L@Nt1M,G
CON_LOG_LIST_ITEM              CON0611
6E STW5g0CON_LOG_LIST_ITEM              CON0612
#@aq@-q0IH8Q0CON_LOG_LIST_ITEM              CON0701
H"il*WQ9{(I-~0CON_LOG_LIST_ITEM              CON_MAX
V/b-F/lu F#r/lYg0ORD_LOG_HIT_COMM               HLG0610
:|m!lty0ORD_LOG_HIT_COMM               HLG0611ITPUB个人空间 G*X kc1][+FP0_[
.
%w a ogrm0.ITPUB个人空间1G't0KL*\#a
.ITPUB个人空间uJ0b7IMQU6M
ORD_PURCHASE_ITEM              ORD0804ITPUB个人空间n3r hYU9~+k q
ORD_PURCHASE_ITEM              ORD0807
Y9aI @H ? J s!f$v0ORD_PURCHASE_ITEM              ORD0810ITPUB个人空间r Z:y1iN)Gy[
ORD_PURCHASE_ITEM              ORD0901

已选择97行。

所有的分区都没有分析过。检查数据库中其他SCHEMA下的分区表是否也存在相同的问题:

SQL> SELECT A.OWNER, A.TABLE_NAME, LAST_ANALYZED     
9i5QxV:\"A:e$bV0  2  FROM ALL_TABLES A, ALL_PART_TABLES B
V V6WDtxL0  3  WHERE A.TABLE_NAME = B.TABLE_NAMEITPUB个人空间:Y ]"F@#t^0U
  4  AND A.OWNER = B.OWNER
0K7}bt:GD*Omj a0  5  AND A.OWNER IN ('ZHEJIANG', 'ANHUI', 'BEIJING')
6Yy d"y-V rF0  6  ORDER BY 3;

OWNER      TABLE_NAME                     LAST_ANALYZEDITPUB个人空间jT_8}2mvmN/b
---------- ------------------------------ -------------------
*u x~9J'Q(k E!}0ZHEJIANG   ORD_ORDER                      2007-05-03 15:23:42ITPUB个人空间&x0g!y@i
ZHEJIANG   ORD_ORDER_ITEM                 2007-05-03 15:30:25ITPUB个人空间5}&g r-m%Z~
ZHEJIANG   ORD_PURCHASE_ITEM              2007-05-03 15:33:17ITPUB个人空间7IB7oWtx
ZHEJIANG   CON_LOG_LIST_ITEM              2007-05-03 15:33:19
V#yn'd k`0ZHEJIANG   ORD_LOG_HIT_COMM               2007-05-03 15:33:45
k s9j/go@0ANHUI      CON_LOG_LIST_ITEM              2008-03-02 22:00:53ITPUB个人空间vi/CU@*x ]
ANHUI      ORD_LOG_HIT_COMM               2008-03-02 22:04:22
fQ%Lz p1N9W0ANHUI      ORD_ORDER                      2008-03-02 22:04:52ITPUB个人空间8nC:i1Z)UR&CUW5T1s9\
ANHUI      ORD_ORDER_ITEM                 2008-03-02 22:05:38ITPUB个人空间,g/\MFx+cQ[s
ANHUI      ORD_PURCHASE_ITEM              2008-03-02 22:06:39ITPUB个人空间*bf5sZ&|"}.a(]
BEIJING    CON_LOG_LIST_ITEM              2008-03-03 16:07:10ITPUB个人空间 ^Yj8D(rI%cA9h4p"x
BEIJING    ORD_LOG_HIT_COMM               2008-03-03 16:37:01ITPUB个人空间5`3\0n1GpWr~r
BEIJING    ORD_ORDER                      2008-03-03 16:40:18ITPUB个人空间x\ E9rgS
BEIJING    ORD_ORDER_ITEM                 2008-03-03 16:57:56
A#[E w/^sef0BEIJING    ORD_ORDER_RECEIVE              2008-03-03 17:03:52ITPUB个人空间 E3s1q n3|!bjh
BEIJING    ORD_ORDER_RETURN               2008-03-03 17:05:24
,n.Vf gN,[Qan6Lk0BEIJING    ORD_PURCHASE_ITEM              2008-03-03 17:14:41

17 rows selected.

其他用户下的分区表最近都进行过分析,检查一下分区的分析情况:

SQL> SELECT A.TABLE_OWNER OWNER, A.TABLE_NAME, A.PARTITION_NAME, LAST_ANALYZED     ITPUB个人空间p ~ k"o4JW,} e;_
  2  FROM ALL_TAB_PARTITIONS A, ALL_PART_TABLES BITPUB个人空间T/gS)eH\I
  3  WHERE A.TABLE_NAME = B.TABLE_NAMEITPUB个人空间'F!s)W)L x0}].g/m
  4  AND A.TABLE_OWNER = B.OWNERITPUB个人空间Tg8^3R N8z1F
  5  AND B.OWNER IN ('ZHEJIANG', 'ANHUI', 'BEIJING')ITPUB个人空间?%v nh9t-Ar|
  6  AND A.TABLE_NAME = 'ORD_ORDER'ITPUB个人空间 N$Q/Vc!J0]
  7  ORDER BY 4;

OWNER      TABLE_NAME PARTITION_ LAST_ANALYZED
.eFbk9r?/`0---------- ---------- ---------- -------------------
2| Fc/JCx5H0ANHUI      ORD_ORDER  ORD0201    2008-03-02 22:04:32ITPUB个人空间,R*B:a8CG3[b;E
ANHUI      ORD_ORDER  ORD0204    2008-03-02 22:04:32ITPUB个人空间S$_mC&f3?H
ANHUI      ORD_ORDER  ORD0610    2008-03-02 22:04:32
'U5L-?k6x#i-w.\\.Z0ANHUI      ORD_ORDER  ORD0607    2008-03-02 22:04:32ITPUB个人空间U Hhi t&m#c
ANHUI      ORD_ORDER  ORD0207    2008-03-02 22:04:32ITPUB个人空间&Ql3QV^f%u-lO
ANHUI      ORD_ORDER  ORD0210    2008-03-02 22:04:32
}8YeuL0ANHUI      ORD_ORDER  ORD0301    2008-03-02 22:04:32ITPUB个人空间%eEt(ZDdcQeC
ANHUI      ORD_ORDER  ORD0304    2008-03-02 22:04:32
U5@V}A `'?A0ANHUI      ORD_ORDER  ORD0307    2008-03-02 22:04:32
2{2L(o5uo2DA0ANHUI      ORD_ORDER  ORD0310    2008-03-02 22:04:32
6s(i0Iwm0ANHUI      ORD_ORDER  ORD0401    2008-03-02 22:04:32ITPUB个人空间`Qs.D6X$Dl
ANHUI      ORD_ORDER  ORD0404    2008-03-02 22:04:32ITPUB个人空间 I5Kp$q"N!jn
ANHUI      ORD_ORDER  ORD0407    2008-03-02 22:04:32
O*s&XI"[2y'C)wf0ANHUI      ORD_ORDER  ORD0410    2008-03-02 22:04:32
3WSQ"\"L@6^f_*x0ANHUI      ORD_ORDER  ORD0501    2008-03-02 22:04:32ITPUB个人空间P,~(se.n} g
ANHUI      ORD_ORDER  ORD0504    2008-03-02 22:04:32ITPUB个人空间4}7L k)}p ab#Pe_z
ANHUI      ORD_ORDER  ORD0507    2008-03-02 22:04:32ITPUB个人空间%cu D8Fp`:pC
ANHUI      ORD_ORDER  ORD0510    2008-03-02 22:04:32
m^ sK0Xu{/t0ANHUI      ORD_ORDER  ORD0601    2008-03-02 22:04:32ITPUB个人空间9~M5B5^)c6| M
ANHUI      ORD_ORDER  ORD0604    2008-03-02 22:04:32
CF4y)}N$GyN0ANHUI      ORD_ORDER  ORD0701    2008-03-02 22:04:33ITPUB个人空间(|y5K1[L
ANHUI      ORD_ORDER  ORD0704    2008-03-02 22:04:35
'CU @7Kz { x}0ANHUI      ORD_ORDER  ORD0707    2008-03-02 22:04:43ITPUB个人空间8By-QNm~
ANHUI      ORD_ORDER  ORD0710    2008-03-02 22:04:48
8_ f%W7]A8J cAv$x!K0ANHUI      ORD_ORDER  ORD0901    2008-03-02 22:04:48
sh Lm5zew5l1T0ANHUI      ORD_ORDER  ORD0810    2008-03-02 22:04:48
!sO,NBR0ANHUI      ORD_ORDER  ORD0807    2008-03-02 22:04:48ITPUB个人空间1HF%\2[7`&q[Xj
ANHUI      ORD_ORDER  ORD0804    2008-03-02 22:04:48
,Kw@T+Iym&~}0ANHUI      ORD_ORDER  ORD0801    2008-03-02 22:04:48ITPUB个人空间x] jAaEc]
BEIJING    ORD_ORDER  ORD0201    2008-03-03 16:37:09
Hj6ez8KiZ+Q0BEIJING    ORD_ORDER  ORD0204    2008-03-03 16:37:10ITPUB个人空间5_z?+~ \ }9@
BEIJING    ORD_ORDER  ORD0207    2008-03-03 16:37:12ITPUB个人空间6C~y-CTY7m(K2Q+o
BEIJING    ORD_ORDER  ORD0210    2008-03-03 16:37:17ITPUB个人空间3Nqq+IW6|w"_
BEIJING    ORD_ORDER  ORD0301    2008-03-03 16:37:20
$t9dxi%H Ly0BEIJING    ORD_ORDER  ORD0304    2008-03-03 16:37:24
MFfCWZ$g*c0BEIJING    ORD_ORDER  ORD0307    2008-03-03 16:37:27ITPUB个人空间.Qrh0V4ZI/t
BEIJING    ORD_ORDER  ORD0310    2008-03-03 16:37:35
)N2yi\ }'dd1nI8A0BEIJING    ORD_ORDER  ORD0401    2008-03-03 16:37:38
R1m~ O5oB0BEIJING    ORD_ORDER  ORD0404    2008-03-03 16:37:43
0q-TjW,Z w0BEIJING    ORD_ORDER  ORD0407    2008-03-03 16:37:48
uw$N0G4rN0BEIJING    ORD_ORDER  ORD0410    2008-03-03 16:38:00ITPUB个人空间-y @l'z5\*SV!Q
BEIJING    ORD_ORDER  ORD0501    2008-03-03 16:38:08
/e*O*w)rc6\w#B0BEIJING    ORD_ORDER  ORD0504    2008-03-03 16:38:16ITPUB个人空间XB}$d vV)eC
BEIJING    ORD_ORDER  ORD0507    2008-03-03 16:38:24
K8ih8tU4se"q,e N.[0BEIJING    ORD_ORDER  ORD0510    2008-03-03 16:38:38
+z5mm e)M3Z4D7|0BEIJING    ORD_ORDER  ORD0601    2008-03-03 16:38:47ITPUB个人空间 p5B5E0Hh
BEIJING    ORD_ORDER  ORD0604    2008-03-03 16:38:56
m(B6`D/eG0BEIJING    ORD_ORDER  ORD0607    2008-03-03 16:39:07ITPUB个人空间:Ur(UmZtf
BEIJING    ORD_ORDER  ORD0610    2008-03-03 16:39:16
cQtAE"j5X(J[? t0BEIJING    ORD_ORDER  ORD0701    2008-03-03 16:39:25ITPUB个人空间4B~U&Ah"D,x3I
BEIJING    ORD_ORDER  ORD0704    2008-03-03 16:39:34ITPUB个人空间 }rI,Qs;DJz
BEIJING    ORD_ORDER  ORD0707    2008-03-03 16:39:43ITPUB个人空间1?3@ |kaEJ4v]/Q
BEIJING    ORD_ORDER  ORD0801    2008-03-03 16:39:46
i I['k(CYFPX0BEIJING    ORD_ORDER  ORD0710    2008-03-03 16:39:46
bpR6|dSq0BEIJING    ORD_ORDER  ORD0901    2008-03-03 16:39:46
%\ J7A\*MS @'p&h0BEIJING    ORD_ORDER  ORD0812    2008-03-03 16:39:46ITPUB个人空间 Sn(zkc Gj8fY(X
BEIJING    ORD_ORDER  ORD0811    2008-03-03 16:39:46
&LZ(s s'Pv[G5BA$S0BEIJING    ORD_ORDER  ORD0810    2008-03-03 16:39:46ITPUB个人空间-e[h\8q;G
BEIJING    ORD_ORDER  ORD0809    2008-03-03 16:39:46
*QE Nj(Kx,ZP_(Wh0BEIJING    ORD_ORDER  ORD0808    2008-03-03 16:39:46
4x;j*M$J^,s0BEIJING    ORD_ORDER  ORD0807    2008-03-03 16:39:46
6Wv^8vya6gF0BEIJING    ORD_ORDER  ORD0802    2008-03-03 16:39:46
W,\1a6NM:M0BEIJING    ORD_ORDER  ORD0803    2008-03-03 16:39:46
XSH3jki$hw:fj0BEIJING    ORD_ORDER  ORD0806    2008-03-03 16:39:46ITPUB个人空间pgS GCt ~}$} WHi
BEIJING    ORD_ORDER  ORD0805    2008-03-03 16:39:46ITPUB个人空间0]'O%c`SKX u
BEIJING    ORD_ORDER  ORD0804    2008-03-03 16:39:46ITPUB个人空间9s4JBh$n n9v8}
ZHEJIANG   ORD_ORDER  ORD0607ITPUB个人空间 f&ln&kp1K2M
ZHEJIANG   ORD_ORDER  ORD0610
Ow/N#O?bl,W0ZHEJIANG   ORD_ORDER  ORD0701ITPUB个人空间Xly}^9S g
ZHEJIANG   ORD_ORDER  ORD0704ITPUB个人空间%O#t:J(`a-|,\
ZHEJIANG   ORD_ORDER  ORD0707
5f)k{}#?HP;a7]0ZHEJIANG   ORD_ORDER  ORD0710
/i5e.b*N!|9S.K0ZHEJIANG   ORD_ORDER  ORD0801ITPUB个人空间"xo0mR0{T ^8T5w0n
ZHEJIANG   ORD_ORDER  ORD0804
!K$B n x)W`B b |0ZHEJIANG   ORD_ORDER  ORD0807
$m,Fvh@sK)K0ZHEJIANG   ORD_ORDER  ORD0810
L K ]9G]#S0ZHEJIANG   ORD_ORDER  ORD0604ITPUB个人空间5?'k OfuNHiyM
ZHEJIANG   ORD_ORDER  ORD0601
+x}'E{T%V~z4@^j(V0ZHEJIANG   ORD_ORDER  ORD0510
4r+}p6RF0ZHEJIANG   ORD_ORDER  ORD0507
'W,jzbj0ZHEJIANG   ORD_ORDER  ORD0504ITPUB个人空间3lulf2l2|)}~
ZHEJIANG   ORD_ORDER  ORD0501ITPUB个人空间KGZr`2X&a`o
ZHEJIANG   ORD_ORDER  ORD0410
PB9[&u Z0ZHEJIANG   ORD_ORDER  ORD0407ITPUB个人空间 hn{ bJ7j^X&d mK
ZHEJIANG   ORD_ORDER  ORD0404
0Hw_7{E:w#}v$?0ZHEJIANG   ORD_ORDER  ORD0401
9u5W j"I.wZ _4i1M0A2D0ZHEJIANG   ORD_ORDER  ORD0310
BU_:] k#Xt0ZHEJIANG   ORD_ORDER  ORD0307ITPUB个人空间X!m7^:RDC
ZHEJIANG   ORD_ORDER  ORD0901
$U bR-T q \'LEN7aK0ZHEJIANG   ORD_ORDER  ORD0301ITPUB个人空间*C"[D&En E
ZHEJIANG   ORD_ORDER  ORD0210
A7g,w`,e1l~?,\0ZHEJIANG   ORD_ORDER  ORD0207
#To qiMN&v0ZHEJIANG   ORD_ORDER  ORD0204
LV%Q#DtM.U0ZHEJIANG   ORD_ORDER  ORD0201
-H/xzb4bx1M0ZHEJIANG   ORD_ORDER  ORD0304

95 rows selected.

这个结果更加说明,其他SCHEMA中的分区表没有问题,而只有问题用户的分区表才出现错误。

莫非是收集统计信息的方法有差异:

SQL> SELECT LOG_USER, WHAT FROM DBA_JOBS ITPUB个人空间Fo2f@d?&j
  2  WHERE UPPER(WHAT) LIKE '%DBMS_STATS%'ITPUB个人空间.x)Z`vtfD&iP6td
  3  AND LOG_USER IN ('ANHUI', 'BEIJING', 'ZHEJIANG');

LOG_USER             WHAT
W&_5{ |i@0-------------------- --------------------------------------------------------ITPUB个人空间:]I,{jn],q^t
ANHUI                dbms_stats.gather_schema_stats(user, cascade => true);ITPUB个人空间4\t,KSm{&z{FN
ZHEJIANG             dbms_stats.gather_schema_stats(user, cascade => true);
['D |1|xve!Z0BEIJING              dbms_stats.gather_schema_stats(user, cascade => true);

可以看到三个SCHEMA采用完全相同的方法来收集统计信息,但是得到的结果确不相同,问题变得越来越有意思了。

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar