今天在进行数据泵导入操作时,发现一个bug。
这篇文章描述导致问题的原因。
现在已经找到了问题的原因,并且也找到了解决问题的方法,但是导致问题的原因还不清楚。
也就是说,要找到为什么这几个分区表的统计信息被锁住。
Oracle的DBMS_STATS包提供了LOCK_TABLE_STATS过程,但是当前的问题显然不是手工调用这个过程造成的。
所有了一下metalink,发现Oracle在文档Doc ID: 433240.1中描述了统计信息被锁定的可能性:
手工执行DBMS_STATS包的LOCK_TABLE_STATS过程;
使用imp或impdp,导入表的时候不加载数据,会锁住表的统计信息;
在升级过程中,队列表的统计信息可能被锁定。
前面已经排除了手工执行LOCK_TABLE_STATS的可能性,而出现问题的表又不是队列表,显然第二种情况导致问题的可能性最大。
由于迁移确实是用IMP和IMPDP实现的,但是由于距离迁移的时间太长,导致一些具体的操作已经记不清了。而且由于服务器空间的问题,一些迁移时的log脚本已经被清除掉了。因此找到当时具体的操作很困难了。
如果根据当时的迁移步骤,是不存在只导入结构而没有导入数据的情况的。
根据记忆描述一下迁移的步骤:
在9i的源数据库用exp导出了数据;
由于要转换表空间,以及去掉物化视图日志等信息,避免导入过程对产品环境导致的危害,设立了一个10g的中间数据库;
在中间数据库上手工建立了分区表,然后用imp指定ignore=y导入所有的表;
在中间数据库进行数据的清理工作;
在中间数据库执行expdp导出;
在目标数据库上执行impdp导入。
如果说发生过imp操作,可能在中间数据库上执行过。不过检查统计信息的生成时间,实在对象的创建之后,而且间隔几个小时之久:
SQL> conn zhejiang输入口令: 已连接。
SQL> set pages 100 lines 120
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
会话已更改。
SQL> select object_name, created
2 from user_objects a, user_part_tables b
3 where a.object_name = b.table_name
4 and a.object_type = 'TABLE';
OBJECT_NAME CREATED
------------------------------ -------------------
CON_LOG_LIST_ITEM 2007-05-03 10:17:40
ORD_ORDER 2007-05-03 10:18:06
ORD_ORDER_ITEM 2007-05-03 10:18:15
ORD_PURCHASE_ITEM 2007-05-03 10:18:26
ORD_LOG_HIT_COMM 2007-05-03 11:12:34
EMED_WEB_LOG 2008-06-24 17:06:59
已选择6行。
SQL> select a.table_name, last_analyzed
2 from user_tables a, user_part_tables b
3 where a.table_name = b.table_name;
TABLE_NAME LAST_ANALYZED
------------------------------ -------------------
CON_LOG_LIST_ITEM 2007-05-03 15:33:19
ORD_ORDER 2007-05-03 15:23:42
ORD_ORDER_ITEM 2007-05-03 15:30:25
ORD_PURCHASE_ITEM 2007-05-03 15:33:17
ORD_LOG_HIT_COMM 2007-05-03 15:33:45
EMED_WEB_LOG 2009-08-09 01:07:31
已选择6行。
这说明在对象导入后,成功的收集过一次统计信息。
莫非是在系统迁移之后,执行过IMP或IMPDP的导入,这个问题的产生和迁移没有关系。统计信息的收集时间与迁移时间发生在同一天,且间隔比较接近,而且此后这些分区表就没有再被分析过,要说这个问题和迁移没有关系,显然难以令人信服。更重要的是,除了迁移过程,平常基本上没有可能对产品环境执行IMP或IMPDP的操作。
由于系统上的日志信息已经都丢失了,只能依靠数据库中保存的信息了。
检查数据库中对象的创建时间,看看能否发现一些什么:
SQL> select object_name, object_type, created
2 from user_objects
3 where created < to_date('2007-5-4', 'yyyy-mm-dd')
4 order by created;
OBJECT_NAME OBJECT_TYPE CREATED
------------------------------ ------------------- -------------------
CON_LOG_LIST_ITEM TABLE PARTITION 2007-05-03 10:17:40
CON_LOG_LIST_ITEM TABLE PARTITION 2007-05-03 10:17:40
CON_LOG_LIST_ITEM TABLE 2007-05-03 10:17:40
CON_LOG_LIST_ITEM TABLE PARTITION 2007-05-03 10:17:40
CON_LOG_LIST_ITEM TABLE PARTITION 2007-05-03 10:17:40
CON_LOG_LIST_ITEM TABLE PARTITION 2007-05-03 10:17:40
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER TABLE PARTITION 2007-05-03 10:18:06
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_ORDER_ITEM TABLE PARTITION 2007-05-03 10:18:15
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:26
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:27
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:27
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:27
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:27
ORD_PURCHASE_ITEM TABLE PARTITION 2007-05-03 10:18:27
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32
TU_ORD_ORDER_PLAT_ID INDEX PARTITION 2007-05-03 10:18:32A_DATA SYNONYM 2007-05-03 10:25:44
BACKUP_SQL SYNONYM 2007-05-03 10:25:44
CAT_INVITE_COMM_DATA SYNONYM 2007-05-03 10:25:44
T_LINK TYPE 2007-05-03 10:25:44
CAT_REGION_MERCHANDISE_DATA SYNONYM 2007-05-03 10:25:44
TEMP_FIRST_PRODUCT SYNONYM 2007-05-03 10:25:44
TEMP_SECOND_CATEGORY SYNONYM 2007-05-03 10:25:44
CAT_INVITE_COMM_SEND_DATA SYNONYM 2007-05-03 10:25:44
DATA01.US.ORACLE.COM DATABASE LINK 2007-05-03 10:25:45
TRANSFER SEQUENCE 2007-05-03 10:25:45
HI_TEMPTOTAL_ID SEQUENCE 2007-05-03 10:25:45
IMP_SYS_TMP SEQUENCE 2007-05-03 10:25:45
JOB_ID SEQUENCE 2007-05-03 10:25:45
.
.
.
TRANFER SEQUENCE 2007-05-03 10:25:45
GOV_SEQ SEQUENCE 2007-05-03 10:25:45
ASS_BBS_USERINFO TABLE 2007-05-03 10:25:46
ASS_COMPLAIN_ORG_SCORE TABLE 2007-05-03 10:25:46
ASS_COMPLAIN_RECORD TABLE 2007-05-03 10:25:46
ASS_COMPLAIN_REPLY TABLE 2007-05-03 10:25:46
ASS_BBS_CATALOG TABLE 2007-05-03 10:25:46
ASS_NEWS TABLE 2007-05-03 10:25:46
ASS_NEWS_TYPE TABLE 2007-05-03 10:25:46A TABLE 2007-05-03 10:25:46
ASS_BBS_ARTICLE TABLE 2007-05-03 10:25:46
ASS_COMPLAIN_TYPE TABLE 2007-05-03 10:25:46
.
.
.
ZZZ_YANGS_ORDER2 TABLE 2007-05-03 10:26:25
ZZZ_YANGS_ORDER3 TABLE 2007-05-03 10:26:25
ZZZ_YANGS_PRO TABLE 2007-05-03 10:26:25
ORD_PAYMENT_ORG TABLE 2007-05-03 10:26:25
SYS_LOB0000061644C00004$$ LOB 2007-05-03 10:26:25
SYS_LOB0000061644C00003$$ LOB 2007-05-03 10:26:25
CON_LIST_ITEM_SHARE_TMP TABLE 2007-05-03 10:26:25
JOB_MONTH_STATS TABLE 2007-05-03 10:26:25
ZJ_PRODUCT TABLE 2007-05-03 10:26:25
PK_ORD_PAYMENT_ORG_MERCHID INDEX 2007-05-03 10:39:11
TU_OD_PAYMENT_ORG_BID_ORG INDEX 2007-05-03 10:39:11
PK_ASS_BBS_ARTICLE INDEX 2007-05-03 10:39:11
PK_ASS_BBS_CATALOG INDEX 2007-05-03 10:39:11
PK_ASS_BBS_USERINFO INDEX 2007-05-03 10:39:11
PK_ASS_NEWS INDEX 2007-05-03 10:39:12
.
.
.
SYS_C0014351 INDEX 2007-05-03 10:52:55
SYS_C0014352 INDEX 2007-05-03 10:52:55
CHANGE_PRICE_1 FUNCTION 2007-05-03 10:53:32
P_UPDATE_TEMP_PRICE PACKAGE 2007-05-03 10:53:32
PA_UPDATE_ORD_HIT_COMM PACKAGE 2007-05-03 10:53:32
PA_PLAN_REPORT PACKAGE 2007-05-03 10:53:32
CON_LIST_ITEM_SHIFT PACKAGE 2007-05-03 10:53:32F_LINK FUNCTION 2007-05-03 10:53:32F_GET_EXP_TAB_NAME FUNCTION 2007-05-03 10:53:32
CHANGE_PRICE_2 FUNCTION 2007-05-03 10:53:32
DELPUR PROCEDURE 2007-05-03 10:53:34
GETFULLSQL PROCEDURE 2007-05-03 10:53:34
.
.
.
P_SCHEMA_STATS PROCEDURE 2007-05-03 10:53:35
PA_UPDATE_ORD_HIT_COMM PACKAGE BODY 2007-05-03 10:53:40
P_UPDATE_TEMP_PRICE PACKAGE BODY 2007-05-03 10:53:40
CON_LIST_ITEM_SHIFT PACKAGE BODY 2007-05-03 10:53:40
PA_PLAN_REPORT PACKAGE BODY 2007-05-03 10:53:41
T_LINK TYPE BODY 2007-05-03 10:53:41
T_PURCHASE_PURCHASE_TYPE INDEX 2007-05-03 10:53:44
TU_ORD_BUY_WAR_SYNC_STATE INDEX 2007-05-03 10:53:44
T_ORDER_RECEIVE_PP INDEX 2007-05-03 10:53:45
T_PURCHASE_APPROVE_USERID INDEX 2007-05-03 10:53:45
T_PURCHASE_CREATE_USERID INDEX 2007-05-03 10:53:45
T_ORDER_RECEIVE_PLAT_ID INDEX 2007-05-03 10:53:45
TU_A_TEMP_CLIT_BUYER_FLAG INDEX 2007-05-03 10:53:45
ORD_LOG_HIT_COMM TABLE 2007-05-03 11:12:34
ORD_LOG_HIT_COMM TABLE PARTITION 2007-05-03 11:12:34
ORD_LOG_HIT_COMM TABLE PARTITION 2007-05-03 11:12:34
ORD_LOG_HIT_COMM TABLE PARTITION 2007-05-03 11:12:34
ORD_LOG_HIT_COMM TABLE PARTITION 2007-05-03 11:12:34
ORD_LOG_HIT_COMM TABLE PARTITION 2007-05-03 11:12:34
CAT_ZONE_HOLIDAY SYNONYM 2007-05-03 11:29:24
CAT_ZONE_DEALER SYNONYM 2007-05-03 11:29:24
.
.
.
MBR_PRODUCT_GRANTOR SYNONYM 2007-05-03 11:29:26
MBR_NOTICE SYNONYM 2007-05-03 11:29:26
USR_USER TABLE 2007-05-03 14:28:06
PK_USR_USER INDEX 2007-05-03 14:28:07
UN1_USR_USER INDEX 2007-05-03 14:28:07
TU_USR_USER INDEX 2007-05-03 14:28:07
TU_USR_USER_USERNAME INDEX 2007-05-03 14:28:08
USR_ROLE TABLE 2007-05-03 14:28:09
PK_USR_ROLE INDEX 2007-05-03 14:28:09
USR_USER_ROLE TABLE 2007-05-03 14:28:10
PK_USR_US_PLAT_ROLE INDEX 2007-05-03 14:28:11
TU_USR_USER_ROLE_ROLE_ID INDEX 2007-05-03 14:28:11
TU_USR_USER_ROLE_USER_ID INDEX 2007-05-03 14:28:11
PK_T_ORDER INDEX 2007-05-03 15:22:41
TU_ORD_ORDERITEM_SENDER_ORGID INDEX 2007-05-03 15:22:55
TU_ORD_ORDER_BUYER INDEX 2007-05-03 15:23:03
TU_ORD_ORDER_CODE INDEX 2007-05-03 15:23:10
TU_ORD_ORDER_PURCHASE_ID INDEX 2007-05-03 15:23:16
TU_ORD_ORDER_SALER_ORGID INDEX 2007-05-03 15:23:23
IND_ORD_ORDER_CREATE_DATE INDEX 2007-05-03 15:23:31
IND_ORD_ORDER_MODIFY_DATE INDEX 2007-05-03 15:23:37
PK_T_ORDER_ITEM INDEX 2007-05-03 15:23:43
TU_ORD_ORDER_ITEM_BID_ORG INDEX 2007-05-03 15:24:32
TU_ORD_ORDER_ITEM_BUY INDEX 2007-05-03 15:25:01
TU_ORD_ORDER_ITEM_ORDERID INDEX 2007-05-03 15:25:24
TU_ORD_ORDER_ITEM_PLATID INDEX 2007-05-03 15:25:45
TU_ORD_ORDER_ITEM_PUR_ITEM INDEX 2007-05-03 15:26:06
TU_ORD_ORDER_ITEM_P_BUYER INDEX 2007-05-03 15:26:26
TU_ORD_ORDER_ITEM_SALER INDEX 2007-05-03 15:27:00
TU_ORD_ORDER_ITEM_SEND INDEX 2007-05-03 15:27:23
TU_ORD_ORDER_ITEM_SOURCE INDEX 2007-05-03 15:27:47
TU_ORD_ORD_ITEM_PRODUCT_ID INDEX 2007-05-03 15:28:15
TU_ORD_ORD_IT_COMB_PLAT_ORDID INDEX 2007-05-03 15:28:39
TU_ORD_ITEM_CREATE_DATE INDEX 2007-05-03 15:29:10
TU_ORD_ITEM_CD_SD INDEX 2007-05-03 15:29:30
TU_ORD_ITEM_HIT_COMM_ID INDEX 2007-05-03 15:30:00
PK_T_PURCHASE_ITEM INDEX 2007-05-03 15:30:27
TU_ORD_PURCHASE_ITEM_BUYER INDEX 2007-05-03 15:31:04
TU_ORD_PURCHASE_ITEM_PROD_ID INDEX 2007-05-03 15:31:25
TU_ORD_PUR_ITEM_HITCOMMID INDEX 2007-05-03 15:31:47
TU_ORD_PUR_ITEM_PURCHASE_ID INDEX 2007-05-03 15:32:12
TU_ORD_PUR_ITEM_SEND_ID INDEX 2007-05-03 15:32:33
UN_PURCHASE_TEMP INDEX 2007-05-03 15:32:57
TU_CON_LOG_LIST_ITEM_OPER_DATE INDEX 2007-05-03 15:33:18
TU_ORD_LOG_HIT_COMM_BUYER INDEX 2007-05-03 15:33:20
T_MEDICAL VIEW 2007-05-03 15:55:59
S_USER VIEW 2007-05-03 15:55:59
.
.
.
V_PRODUCT VIEW 2007-05-03 15:56:00
JOB_PCONTRACT_SHOW PROCEDURE 2007-05-03 16:09:38
MLOG$_CON_LIST TABLE 2007-05-03 17:20:45
.
.
.
RUPD$_ORD_ORDER_RETURN TABLE 2007-05-03 17:20:47
已选择1514行。
下面根据对象的创建顺序进行分析:首先创建的对象是手工建立的分区表。然后执行的数据泵导入过程,先导入了同义词和序列,然后是表和索引,最后是过程、函数和包。最后导入了几个BITMAP索引,数据泵在10:53:45秒导入结束。
SQL> select index_type from user_indexes
2 where index_name = 'T_ORDER_RECEIVE_PLAT_ID';
INDEX_TYPE
---------------------------
BITMAP
最后补建了一个分区表。而此后的同义词的建立是在数据泵导入完成后,通过pl/sql代码实现的。
此后在14:28分的时候使用imp导入了一些USR开头的表和索引,不过这和当前的问题没有关系。
关键的时刻到了,在15:22分到15:33分的时间段内,建立了这些出问题的分区表的索引。如果和这些分区表的统计信息的最后收集时间进行比较,可以发现二者时间惊人的接近,这显然不是巧合,多半是导入索引信息的时候,将统计信息一起导入。
到了这个时候,总算想起当时的操作了。由于其他的表都是通过exp导出,并使用imp导入,因此包含完整的索引定义。而这些表是手工建立,在建立表的时候没有建立表的索引。因此发现了这一点后,利用exp或expdp从源数据库导出了索引定义,并导入到目标数据库中。
正是由于这个操作,将分区表的统计信息锁定。这也解释了为什么只有分区表没有收集新的统计信息,而其他表没有同样的问题。
这个例子说明两个问题:
对于迁移或升级这种大型变更,一定要留下尽量详细的资料备查。包括迁移计划、迁移步骤、导出导入工具的日志信息、升级后执行catupgrd.sql的输出文件等等。这些信息对于日后出现问题后进行分析异常重要。
应该尽可能深入了解每个工具的特性,即使是这么常用的exp和expdp工具,都可能隐藏着这种隐蔽的操作。详细的计划和必要的上线测试可以避免绝大部分问题的发生,但是无法杜绝所有的问题,尤其是一些突发的时间。在这个时候所使用的工具是否能够完成目标而没有任何副作用,所选择的方法是否足够高效且没有危害,这些就要靠平时的积累来完成了。
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html