午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

避坑指南:通過(guò)expdp/impdp遷移數(shù)據(jù)的7個(gè)坑

 數(shù)據(jù)和云 2020-08-19

墨墨導(dǎo)讀:expdp/impdp是一個(gè)非常簡(jiǎn)單的操作,但是簡(jiǎn)單的操作中往往蘊(yùn)藏了很多原理性的東西,如果稍不注意,則可能會(huì)才到很多坑。

背景

客戶更新生產(chǎn)庫(kù)中的一些核心數(shù)據(jù),所有核心數(shù)據(jù)更新的時(shí)間需在2天內(nèi)完成。為了配合業(yè)務(wù)對(duì)數(shù)據(jù)更新時(shí)間進(jìn)行演練和預(yù)估,客戶要求將10T+核心數(shù)據(jù)導(dǎo)入到新的庫(kù)中。全過(guò)程使用expdp導(dǎo)出,然后傳輸數(shù)據(jù)文件到目標(biāo)端,最后用impdp導(dǎo)入。

這里總結(jié)整個(gè)過(guò)程中遇到的問(wèn)題和經(jīng)驗(yàn),供大家參考,希望大家遇到同類情況可以規(guī)避這7種錯(cuò)誤。

問(wèn)題1 在導(dǎo)出導(dǎo)入前未充分調(diào)研需要遷移的數(shù)據(jù)量

在之前做的一些遷移(不管是邏輯還是物理),如果不是空間非常緊張,我一般只會(huì)對(duì)數(shù)據(jù)文件或者表空間的大小進(jìn)行調(diào)研,要求新環(huán)境的數(shù)據(jù)文件或表空間要大于源環(huán)境的數(shù)據(jù)文件即可。


但這次只是遷移部分?jǐn)?shù)據(jù),所以我在調(diào)研的時(shí)候,主要是通過(guò)dba_segments的方式來(lái)判斷(已經(jīng)確定這些表中沒(méi)有LOB字段)??墒窃谶x擇segment_type的時(shí)候,我只篩選了其中相關(guān)的TABLE,而沒(méi)有對(duì)其他的相關(guān)對(duì)象進(jìn)行評(píng)估。因此,最開(kāi)始評(píng)估出來(lái)的數(shù)據(jù)只有4T左右。而實(shí)際上相關(guān)對(duì)象還有索引等(索引是最大的),加起來(lái)總共有近10T的大小。而這也導(dǎo)致我在遷移的時(shí)候,在最后表空間很緊張。

那么這里我也大概寫了一個(gè)對(duì)數(shù)據(jù)里量和相關(guān)索引量調(diào)研的查詢SQL語(yǔ)句,供參考:

--table:select owner,segment_name,tablespace_name,sum(bytes)/1024/1024/1024 gb from dba_segments where segment_name ='TABLE_NAME1' and owner='USER' group by owner,segment_name,tablespace_name;
--index:select owner,segment_name,tablespace_name,sum(bytes)/1024/1024/1024 gb from dba_segments where segment_name in(select index_name from dba_indexes where table_name='TABLE_NAME1' and owner='USER') and owner='USER' group by rollup(owner,segment_name,tablespace_name);


問(wèn)題2 :傳輸文件到源端

由于客戶要求精確報(bào)告進(jìn)度,所以要求每張表導(dǎo)出一個(gè)數(shù)據(jù)文件。所以總共導(dǎo)出了20多個(gè)數(shù)據(jù)文件。大小有1T+。

在傳輸文件過(guò)程時(shí),本想偷懶用腳本在后臺(tái)進(jìn)行,就不需要人工看著。所以通過(guò)except方式寫了個(gè)shell腳本,對(duì)這些文件進(jìn)行后臺(tái)scp傳輸,但是腳本跑起后,回到家才發(fā)現(xiàn),每個(gè)文件只傳輸了幾兆,任務(wù)就中斷不再傳輸了。測(cè)試了好幾遍,發(fā)現(xiàn)通過(guò)nohup進(jìn)行scp的時(shí)候,傳輸一會(huì)兒任務(wù)自己就掉了(目前還不太清楚是為什么),所以最后就只能還是通過(guò)前臺(tái)進(jìn)行文件傳輸了。


問(wèn)題3 :目標(biāo)端表空間創(chuàng)建

在進(jìn)行impdp的時(shí)候,如果我們?cè)趇mpdp語(yǔ)句中不加remap_tablespace參數(shù)時(shí),我們就必須要?jiǎng)?chuàng)建和源端一樣的表空間。如果導(dǎo)出導(dǎo)入的數(shù)據(jù)表中存在不一致的表空間,則會(huì)報(bào)錯(cuò)中斷。而由于我前期沒(méi)有充分調(diào)研,發(fā)現(xiàn)在導(dǎo)出的表中,其索引全部是在一個(gè)單獨(dú)的表空間中,所以導(dǎo)入時(shí)由于索引表空間不存在而失敗。

當(dāng)然,如果沒(méi)有強(qiáng)制要求(比如這里我們只是進(jìn)行測(cè)試),懶得創(chuàng)建一模一樣的表空間時(shí),我們也可以在導(dǎo)入時(shí)加入remap_tablespace參數(shù),將源端表空間remap到新建表空間。但是,這也必須知道我們的源端表空間有哪些,remap_tablespace參數(shù)中,必須要將源端到目標(biāo)端表空間map關(guān)系寫全。


問(wèn)題4 :臨時(shí)表空間

在導(dǎo)入數(shù)據(jù)索引的時(shí)候一定要注意臨時(shí)表空間的大小。由于邏輯導(dǎo)入索引,實(shí)際執(zhí)行的還是create index命令,所以一定會(huì)占用臨時(shí)表空間,雖然期間也會(huì)釋放,但是當(dāng)遇到一個(gè)非常大的索引時(shí)候,則可能會(huì)引起臨時(shí)表空間不足而導(dǎo)致導(dǎo)入任務(wù)卡住超時(shí)。

而由于本次遷移的數(shù)據(jù)索引量巨大,所以在導(dǎo)入前一定要擴(kuò)展臨時(shí)表空間,否則會(huì)出現(xiàn)問(wèn)題。


問(wèn)題5 :undo

在導(dǎo)入數(shù)據(jù)及索引的時(shí)候,其過(guò)程核心還是進(jìn)行DDL、DML等操作,而這一定會(huì)產(chǎn)生事務(wù),只要使用到事務(wù),就一定會(huì)用到undo表空間。所以我們也需要時(shí)刻關(guān)注undo表空間的大小。不足的時(shí)候,可以臨時(shí)調(diào)整undo_retention或undo的大小。


問(wèn)題6 undo_retention大小問(wèn)題

像上一條說(shuō)的,導(dǎo)入會(huì)產(chǎn)生事務(wù),所以我們有時(shí)要唔該undo_retention的大小,但是該參數(shù)大小如何調(diào)整呢?如果調(diào)整的太大,undo釋放的慢,undo表空間很快就會(huì)滿;如果調(diào)整的太小,undo釋放的快了,但是導(dǎo)入可能會(huì)出現(xiàn)ORA-01555的錯(cuò)誤。所以我們需要將undo_retention調(diào)整到適中大下。本次遷移,我將undo擴(kuò)展為160G。undo_retention保留為1小時(shí)。在后面的導(dǎo)入過(guò)程中沒(méi)有出現(xiàn)任何問(wèn)題。


問(wèn)題7 如何提高效率

通過(guò)一條impdp語(yǔ)句導(dǎo)入時(shí)候,如果沒(méi)有Lob字段,僅有數(shù)據(jù),導(dǎo)入還是非常的快,比如500G的數(shù)據(jù),大概20分鐘就導(dǎo)入了。而創(chuàng)建索引的過(guò)程是非常慢的。所以為了提高速率,我們可以通過(guò)impdp將索引導(dǎo)為sql file,然后手動(dòng)對(duì)索引的創(chuàng)建加入并行度(加了并行后,一定要在腳本里對(duì)創(chuàng)建完成的索引,將并行度改回1),并對(duì)腳本進(jìn)行拆分,使用多個(gè)會(huì)話進(jìn)行索引創(chuàng)建(這樣,就更需要注意temp表空間了)從而提高索引創(chuàng)建速度。

墨天輪原文鏈接:https://www./db/22553(復(fù)制到瀏覽器中打開(kāi)或者點(diǎn)擊“閱讀原文”)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多