日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle数据泵索引创建慢,IMPDP 很慢的原因探究

發布時間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据泵索引创建慢,IMPDP 很慢的原因探究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近幫一個客戶做數據遷移測試,數據庫版本的10.2.0.4.0,操作系統是AIX到Linux,采用EXPDP/IMPDP方式進行全庫導出和導入。

客戶的數據庫有3.6T,導出時間花了30小時,但是導入卻花了120小時,這個很不正常。因為目標數據庫的I/O效率比源數據庫的I/O效率要高,導入過程中發現導入表數據的時候很快,而后來創建索引的時間特別長,占了80%的時間。通過AWR報告分析,竟然發現在導入過程中運行了下面語句:

ANALYZE TABLE "XXX."XXXX" COMPUTE STATISTICS;

被分析的這個表450G,分析了40小時的時間,這個讓人摸不到頭腦,后來查看了大量資料,發現這是Oracle10g的一個bug,就是在用expdp導出過程中,如果某個表包含函數索引,則在導入過著中會到該表進行分析,通過形成導入腳本驗證了這個說法。下面是驗證過程:

Sqlplus system/****

SQL> create table test (id number, name varchar2(30)) tablespace users;

SQL>insert into test values (1,’A’);

SQL>COMMIT;

Expdp system/******** directory=expdir dumpfile=test01.dmp tables=test

Impdp system/******** directory=expdir dumpfile=test01.dmp sqlfile=test01.sql

查看test01.sql的內容

沒有發現 表分析語句

創建行數索引

SQL>create index idx_test on test(upper(name)) tablespace users;

重新導出導入形成導入腳本,發現腳本中包含下面內容

CREATE INDEX "SYSTEM"."IDX_FUN_1" ON "SYSTEM"."TEST" (UPPER("NAME"))

PCTFREE 10 INITRANS 2 MAXTRANS 255

STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

TABLESPACE "SYSTEM" PARALLEL 1 ;

ALTER INDEX "SYSTEM"."IDX_FUN_1" NOPARALLEL;

-- new object type path is: TABLE_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS

DECLARE IND_NAME VARCHAR2(60);

IND_OWNER VARCHAR2(60);

BEGIN

DELETE FROM "SYS"."IMPDP_STATS";

IND_NAME := 'IDX_FUN_1'; IND_OWNER := 'SYSTEM';

INSERT INTO "SYS"."IMPDP_STATS" (type, version, flags, c1, c2, c3, c5,

n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, d1)

VALUES ('I', 4, 2, IND_NAME, NULL, NULL, 'SYSTEM', 10, 1, 10, 1, 1, 1, 0, 10, NULL, NULL, NULL, NULL, TO_DATE('2015-11-25 16:02:35', 'YYYY-MM-DD:HH24:MI:SS'));

DBMS_STATS.IMPORT_INDEX_STATS( '"' || ind_owner || '"', '"' || ind_name || '"', NULL, '"IMPDP_STATS"', NULL, '"SYS"');

DELETE FROM "SYS"."IMPDP_STATS";

END;

/

-- new object type path is: TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

ANALYZE TABLE "SYSTEM"."TEST" COMPUTE STATISTICS;

重新導出,忽略統計信息

Expdp system/******** directory=expdir dumpfile=test04.dmp tables=test exclude=STATISTICS

Impdp system/******** directory=expdir dumpfile=test04.dmp sqlfile=test04.sql

發現test04.sql中部包含表分析語句。

結論:

在Oracle 10g 進行數據泵導出時,最好不導出統計信息,到導入后再進行統計信息的收集,省得浪費時間進行無聊的表分析操作,改bug在11g被消除。

總結

以上是生活随笔為你收集整理的oracle数据泵索引创建慢,IMPDP 很慢的原因探究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。