国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Oracle超大型數(shù)據(jù)庫(kù)數(shù)據(jù)遷移方法論

2017-03-06 16:44劉娟
電腦知識(shí)與技術(shù) 2016年30期
關(guān)鍵詞:遷移邏輯數(shù)據(jù)庫(kù)

劉娟

摘要:在實(shí)踐中,一般將容量超過(guò)1T的數(shù)據(jù)庫(kù),稱之為超大型數(shù)據(jù)庫(kù)。在運(yùn)營(yíng)過(guò)程中,經(jīng)常會(huì)遇到不同的需求,需要對(duì)這類數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行遷移,該文根據(jù)日常運(yùn)營(yíng)實(shí)踐,總結(jié)了對(duì)Oracle超大型數(shù)據(jù)庫(kù)數(shù)據(jù)采用邏輯遷移的解決方案。

關(guān)鍵詞:數(shù)據(jù)庫(kù);邏輯;遷移;數(shù)據(jù)泵

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)30-0007-02

通信企業(yè)為了支撐業(yè)務(wù)發(fā)展和企業(yè)日常管理的需要,建設(shè)了規(guī)模龐大的IT系統(tǒng)。為了保障IT系統(tǒng)的長(zhǎng)期穩(wěn)定高效的運(yùn)轉(zhuǎn),在日常運(yùn)營(yíng)過(guò)程中,常常會(huì)遇到服務(wù)器硬件升級(jí)擴(kuò)容、系統(tǒng)軟件升級(jí)等需求。為了完成這些需求,通常會(huì)對(duì)數(shù)據(jù)進(jìn)行遷移,需要遷移的數(shù)據(jù)規(guī)模從幾百G到超過(guò)10T。在長(zhǎng)期的運(yùn)營(yíng)實(shí)踐中,作者總結(jié)了一套完善、成熟的數(shù)據(jù)遷移方法論,通過(guò)該方法論,成功完成了大量系統(tǒng)的數(shù)據(jù)遷移,累計(jì)實(shí)現(xiàn)數(shù)據(jù)遷移規(guī)模超過(guò)100T,有效的支撐了系統(tǒng)穩(wěn)定高效的運(yùn)轉(zhuǎn)。

1 不同遷移方法的對(duì)比

數(shù)據(jù)遷移通??梢圆捎梦锢砗瓦壿媰煞N不同的方法,兩種方法的對(duì)比見表1。

隨著x86硬件平臺(tái)的性能提高和成熟、Linux系統(tǒng)的穩(wěn)定、以及基于x86平臺(tái)虛擬化技術(shù)的發(fā)展,將會(huì)越來(lái)越多地出現(xiàn)將數(shù)據(jù)從小型機(jī)平臺(tái)遷移到x86平臺(tái)的需求,在這種情況下,邏輯遷移是最常用的一種遷移方法。本文重點(diǎn)討論邏輯遷移的方法。

2 數(shù)據(jù)遷移準(zhǔn)備工作

遷移前期需要完成的準(zhǔn)備工作主要包括以下內(nèi)容:目標(biāo)主機(jī)數(shù)據(jù)庫(kù)軟件的安裝、創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表空間以及下面的檢查工作(注意目標(biāo)數(shù)據(jù)庫(kù)在遷移完成之前需要置為非歸檔模式)。

3 詳細(xì)遷移步驟

為了減少邏輯遷移過(guò)程中的系統(tǒng)停機(jī)時(shí)間,需要對(duì)數(shù)據(jù)先進(jìn)行分類,部分歷史或者靜態(tài)數(shù)據(jù)在正式遷移前先行導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)中,盡量縮小正式遷移過(guò)程中的數(shù)據(jù)量。

10g以前的版本由于無(wú)數(shù)據(jù)泵技術(shù),所以分兩種情況討論。

3.1 Oracle 9i(包括9i)之前版本數(shù)據(jù)遷移

Oracle 9i(包括9i)之前版本數(shù)據(jù)遷移采用Export/Import+DB Link方式,主要步驟為先利用Export/Import導(dǎo)出、導(dǎo)入用戶元數(shù)據(jù),再采用DB Link方式插入數(shù)據(jù)。不直接采用Import導(dǎo)入數(shù)據(jù),主要原因是Import是串行執(zhí)行,且如果中途報(bào)錯(cuò),導(dǎo)入過(guò)程要整體回退,不容易掌控導(dǎo)入的進(jìn)度;而采用數(shù)據(jù)庫(kù)鏈接插入數(shù)據(jù)的方式則可以避免這些問(wèn)題。

1) 在目標(biāo)庫(kù)上設(shè)置參數(shù)job_queue_processes為0,暫停目標(biāo)數(shù)據(jù)庫(kù)job的執(zhí)行。

2) 比照源數(shù)據(jù)庫(kù),在目標(biāo)數(shù)據(jù)庫(kù)上創(chuàng)建用戶、角色和profile,并將相關(guān)權(quán)限授予角色和用戶。

3) 在源庫(kù)上批量生成需要遷移的用戶元數(shù)據(jù)導(dǎo)出腳本。

4) 在源庫(kù)上批量生成目標(biāo)庫(kù)導(dǎo)入用戶元數(shù)據(jù)的腳本。導(dǎo)入后,注意需要更新JOB$表來(lái)更正JOB導(dǎo)入的問(wèn)題。

5) 檢查對(duì)象總數(shù)、無(wú)效對(duì)象。首先在目標(biāo)庫(kù)上執(zhí)行無(wú)效對(duì)象編譯的腳本:@?/rdbms/admin/utlrp.sql然后對(duì)比目標(biāo)庫(kù)和源庫(kù)的遷移用戶的對(duì)象總數(shù)、無(wú)效對(duì)象數(shù),是否有遺漏和不一致,在進(jìn)行針對(duì)性的補(bǔ)充。

6) 通過(guò)數(shù)據(jù)庫(kù)鏈接插入數(shù)據(jù)。關(guān)閉應(yīng)用,在源庫(kù)上設(shè)置job_processes=0停止所有JOB運(yùn)行,在源庫(kù)上創(chuàng)建一個(gè)端口號(hào)為1526的監(jiān)聽,停掉原來(lái)的端口號(hào)為1521的監(jiān)聽,避免有應(yīng)用連接;插入數(shù)據(jù)前,再次確認(rèn)表上是否有觸發(fā)器,如果有,做好記錄后將其刪除。

7) 利用第三方工具,產(chǎn)生序列創(chuàng)建腳本,并傳輸?shù)侥繕?biāo)庫(kù)上直接執(zhí)行。

8) 利用第三方工具,產(chǎn)生索引創(chuàng)建腳本,并對(duì)腳本進(jìn)行修改,增加nologging、parallel選項(xiàng),加快索引創(chuàng)建速度,并傳輸?shù)侥繕?biāo)庫(kù)上直接執(zhí)行,執(zhí)行完畢后,再取消并行,恢復(fù)logging模式。

9) 利用第三方工具,產(chǎn)生約束創(chuàng)建腳本,并傳輸?shù)侥繕?biāo)庫(kù)上直接執(zhí)行,注意主鍵和外鍵分開執(zhí)行,先創(chuàng)建主鍵約束,再創(chuàng)建外鍵約束,兩者不能同時(shí)執(zhí)行。

10) 利用第三方工具,產(chǎn)生觸發(fā)器創(chuàng)建腳本,并傳輸?shù)侥繕?biāo)庫(kù)上直接執(zhí)行。

11) 收集相關(guān)統(tǒng)計(jì)信息。

3.2 Oracle 10g之后版本數(shù)據(jù)遷移

在Oracle 10g以后的版本,由于數(shù)據(jù)泵技術(shù)的出現(xiàn),可以直接在數(shù)據(jù)泵中使用并行,可以簡(jiǎn)化遷移的步驟。

1) 設(shè)置參數(shù)job_queue_processes為0,暫停新舊數(shù)據(jù)庫(kù)job的執(zhí)行。

2) 使用IMPDP直接按照用戶遷移數(shù)據(jù)。

使用數(shù)據(jù)泵,采用DB Link的方式,開啟并行遷移數(shù)據(jù),如果一個(gè)用戶數(shù)據(jù)量特別大,尤其是有特別大的表,可以將該表排除,或者將一個(gè)用戶的表分割成多個(gè)IMPDP腳本執(zhí)行:

impdp system/**** network_link=dl_old_db schemas=testuser directory=dir1 parallel=4 logfile=testuser.log

3) 按用戶遷移數(shù)據(jù)完畢后檢查用戶的對(duì)象權(quán)限、角色權(quán)限是否有缺失,并進(jìn)行補(bǔ)充。

4) 檢查表和索引是否開啟了并行,如果有進(jìn)行關(guān)閉。

5) 編譯失效對(duì)象。

6) 檢查是否有失效的組件。

7) 恢復(fù)job參數(shù)。

8) 收集統(tǒng)計(jì)信息。

3.3 數(shù)據(jù)遷移的后續(xù)操作

應(yīng)用啟動(dòng)后,標(biāo)志著整個(gè)遷移工作已經(jīng)完成絕大部分。但是仍然有以下幾個(gè)重要步驟需要完成。

1) 調(diào)整JOB定時(shí)任務(wù)。

根據(jù)業(yè)務(wù)需要,某些定時(shí)任務(wù)只能在特定時(shí)間啟動(dòng),可能需要調(diào)整定時(shí)任務(wù)的啟動(dòng)時(shí)間。

2) 復(fù)制腳本以及創(chuàng)建cron任務(wù)。

將源庫(kù)上的以cron方式調(diào)用的定時(shí)任務(wù)以及相應(yīng)的腳本復(fù)制到目標(biāo)庫(kù)主機(jī)上。

3) 對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。

將目標(biāo)庫(kù)設(shè)置為歸檔模式,在目標(biāo)庫(kù)安裝備份軟件,對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。

4) 如果數(shù)據(jù)庫(kù)使用了GoldenGate等第三方復(fù)制軟件,需要在目標(biāo)庫(kù)上重新配置。

4 遷移測(cè)試及回退

由于遷移操作步驟較多,操作較復(fù)雜,必須進(jìn)行測(cè)試和演練,確保方案可行,保證能夠在既定的停機(jī)時(shí)間內(nèi)完成遷移。

由于遷移過(guò)程不影響源生產(chǎn)庫(kù)。因此,可以按本方案,將所有的操作進(jìn)行一次演練。 除了應(yīng)用切換之外,其他步驟均可進(jìn)行測(cè)試和演練。

如果在正式遷移時(shí),發(fā)生不能修復(fù)的并且嚴(yán)重影響遷移的問(wèn)題,需要切換回原生產(chǎn)庫(kù),根據(jù)不同的情況進(jìn)行相應(yīng)的操作:

l 如果應(yīng)用沒(méi)有啟動(dòng),因?yàn)闆](méi)有對(duì)原生產(chǎn)庫(kù)做任何改動(dòng),那么不需要做任何其他的步驟,直接啟動(dòng)應(yīng)用,保持現(xiàn)狀即可。

l 如果應(yīng)用已經(jīng)啟動(dòng),則需要將應(yīng)用切換回原生產(chǎn)庫(kù)。并將在目標(biāo)庫(kù)上發(fā)生的新的業(yè)務(wù)數(shù)據(jù)改動(dòng)應(yīng)用到原生產(chǎn)庫(kù)中。為了避免數(shù)據(jù)改動(dòng)過(guò)大,建議應(yīng)用啟動(dòng)和測(cè)試時(shí)分步進(jìn)行,首先進(jìn)行查詢型的業(yè)務(wù)操作測(cè)試,避免事務(wù)型的業(yè)務(wù)操作。

5 遷移方法總結(jié)

對(duì)超大型數(shù)據(jù)庫(kù)的數(shù)據(jù)遷移采用邏輯方式,不論是采用Export/Import、數(shù)據(jù)庫(kù)鏈接還是采用數(shù)據(jù)泵,都需要重點(diǎn)考慮以下幾個(gè)問(wèn)題:

l 要遷移的數(shù)據(jù)量有多少?

l 是否能夠按照歷史/靜態(tài)數(shù)據(jù)、動(dòng)態(tài)數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行分類?是否能對(duì)部分垃圾或者歷史數(shù)據(jù)進(jìn)行清理?

l 遷移過(guò)程中使用的網(wǎng)絡(luò)帶寬是100M還是1000M?這個(gè)因素直接影響遷移的速度。

l 遷移的數(shù)據(jù)表上索引、約束、觸發(fā)器的數(shù)量?

l 業(yè)務(wù)最長(zhǎng)停機(jī)時(shí)間是多少?

對(duì)遷移方案和過(guò)程的選擇,要充分考慮以上因素,盡量縮短數(shù)據(jù)遷移的時(shí)間,對(duì)創(chuàng)建索引和約束要留夠充足的時(shí)間,并對(duì)準(zhǔn)備好的遷移方案在測(cè)試環(huán)境進(jìn)行充分的測(cè)試和驗(yàn)證,如果涉及版本的升級(jí),還需要對(duì)應(yīng)用進(jìn)行兼容性的測(cè)試,在確保穩(wěn)妥可靠以后,再進(jìn)行正式的數(shù)據(jù)遷移。

猜你喜歡
遷移邏輯數(shù)據(jù)庫(kù)
刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
邏輯
創(chuàng)新的邏輯
淺析遷移規(guī)律在足球教學(xué)中的影響
香河县| 安宁市| 怀宁县| 开平市| 洪湖市| 盱眙县| 宜川县| 兴国县| 湟源县| 武汉市| 太白县| 定陶县| 梧州市| 宕昌县| 牡丹江市| 得荣县| 屏东县| 娄烦县| 元江| 谷城县| 濮阳县| 盘锦市| 拜城县| 萨迦县| 桑植县| 龙游县| 莱阳市| 太仓市| 博客| 高雄县| 六安市| 汉阴县| 肇庆市| 深州市| 鱼台县| 尼木县| 克东县| 嘉禾县| 无棣县| 五河县| 庆元县|