文章來源:杭州美創(chuàng)科技有限公司
隨著我國對信息安全和自主可控技術(shù)的日益重視,國產(chǎn)數(shù)據(jù)庫在黨政機(jī)關(guān)、軍隊(duì)和大型央企等行業(yè)中得到了快速應(yīng)用。達(dá)夢數(shù)據(jù)庫(以下簡稱DM)是國內(nèi)數(shù)據(jù)庫行業(yè)領(lǐng)軍企業(yè)——達(dá)夢推出的一款自主可控的高性能數(shù)據(jù)庫產(chǎn)品。
如何降低從Oracle到DM數(shù)據(jù)庫移植的技術(shù)門檻,保障用戶現(xiàn)有業(yè)務(wù)系統(tǒng)投資,美創(chuàng)DBA團(tuán)隊(duì)對Oracle安全移植到DM數(shù)據(jù)庫的技術(shù)課題進(jìn)行了研究實(shí)踐。
從Oracle到DM的移植,主要包含以下工作
Ⅰ、分析待移植系統(tǒng),確定移植對象。
Ⅱ、通過數(shù)據(jù)遷移工具 DTS 完成常規(guī)數(shù)據(jù)庫對象及數(shù)據(jù)的遷移。
Ⅲ、通過人工完成 PL/SQL 的移植。
Ⅳ、移植完成后對移植的結(jié)果進(jìn)行校驗(yàn),確保移植的完整性和正確性。
Ⅴ、對應(yīng)用系統(tǒng)進(jìn)行測試和優(yōu)化。
具體移植攻略
1、待移植系統(tǒng)分析
1.1、信息采集,包括操作系統(tǒng)版本、數(shù)據(jù)庫版本、應(yīng)用開發(fā)平臺、應(yīng)用開發(fā)接口和需要移植的數(shù)據(jù)庫對象;
1.2、統(tǒng)計(jì)Oracle數(shù)據(jù)庫基礎(chǔ)信息;
1.3、統(tǒng)計(jì) Oracle 數(shù)據(jù)中的對象以及表數(shù)據(jù)量。
二、準(zhǔn)備移植環(huán)境
僅做移植兼容性測試。這里指的是用戶或者開發(fā)商對于移植可能性和技術(shù)工作量的一個(gè)評估和確認(rèn)工作,也就是嘗試性的移植,移植后可能并不會立刻進(jìn)行產(chǎn)品級的應(yīng)用功能、性能、穩(wěn)定性測試,在這種情況下,一般搭建最基礎(chǔ)的移植環(huán)境即可,用虛擬機(jī)和物理機(jī)服務(wù)器都可以進(jìn)行,且對配置無特別要求,滿足基本運(yùn)行條件即可;
為替換 Oracle 上線運(yùn)行進(jìn)行正式移植。在這種情況下,移植完成后,會對應(yīng)用進(jìn)行產(chǎn)品級全方位的功能點(diǎn)測試、性能測試、壓力測試以及穩(wěn)定性測試等集成測試。在這種情況下搭建移植環(huán)境,一定要優(yōu)先采用物理服務(wù)器搭建,并且對于物理服務(wù)器的相關(guān)硬件配置要提出要求。
2.1 DM 移植環(huán)境
2.1.1、選擇版本
版本優(yōu)先選擇完整安裝版本,避免數(shù)據(jù)庫客戶端和服務(wù)器端存在版本不匹配帶來的額外工作量,達(dá)夢在不同平臺的不同版本上,安裝包都會有差異,一定要采用嚴(yán)格匹配的原則。
2.1.2、初始化參數(shù)
從 Oracle 移植到 DM 數(shù)據(jù)庫,初始化參數(shù)建議:
(1)頁大小 PAGE_SIZE
Oracle 也叫塊大小(block),在 DM 數(shù)據(jù)庫中,頁大小可以為 4KB、8KB、16KB 或者 32KB,從 Oracle 移植到 DM,建議設(shè)置頁大小為 8KB,一旦創(chuàng)建好了數(shù)據(jù)庫,在該庫的整個(gè)生命周期內(nèi),頁大小都不能夠改變。除了每個(gè)字段的最大長度限制外,每條記錄總長度不能大于頁面大小的一半。如果系統(tǒng)中存在或者以后可能存在含有較長的字符串類型的表,建議該參數(shù)設(shè)置為 16 或者 32。頁大小設(shè)置越大,最后數(shù)據(jù)文件的物理大小就會越大,系統(tǒng)運(yùn)行時(shí),每次從磁盤調(diào)入內(nèi)存的數(shù)據(jù)單位也就越大,所以此處要慎重。
(2)簇大小 EXTENT_SIZE
數(shù)據(jù)文件使用的簇大小,即每次分配新的段空間時(shí)連續(xù)的頁數(shù),只能是16頁或32頁,缺省使用 16 頁,從 Oracle 移植到 DM 使用默認(rèn)值就可。
(3)大小寫敏感 CASE_SENSITIVE
DM 為了兼容不同的數(shù)據(jù)庫,在初始化數(shù)據(jù)庫的時(shí)候有一個(gè)參數(shù)字符串比較大小寫敏感,用于確定數(shù)據(jù)庫對象及數(shù)據(jù)是否區(qū)分大小寫,默認(rèn)為區(qū)分,不可更改。Oracle 遷移過來的系統(tǒng),使用大小寫敏感,以便和原來系統(tǒng)匹配。
(4)字符集 CHARSET
建議采用默認(rèn)值 GB18030,如果需要國際字符可以采用Unicode,GB18030 數(shù)字字母占 1 個(gè)字節(jié),普通漢字占 2 個(gè)字節(jié),部分繁體及少數(shù)民族文字占 4 字節(jié),Unicode 在達(dá)夢中采用 UTF-8 編碼格式,歐洲的字母字符占 1 到 2 個(gè)字節(jié), 亞洲的大部分字符占 3 個(gè)字節(jié),附加字符為 4 個(gè)字節(jié)。如果只存儲中文和字母數(shù)字,一般來說 GB18030 更節(jié)省空間一些。
2.1.3、合理配置 INI參數(shù)
COMPATIBLE_MODE 參數(shù),配置成兼容Oracle數(shù)據(jù)庫模式。
在 INI 參數(shù)的 compatibility部分,還有其它的一些參數(shù),在涉及到之前,盡量保持默認(rèn)值,在移植準(zhǔn)備的環(huán)節(jié),先只調(diào)整這個(gè)參數(shù)就可以了,其它參數(shù),在移植過程中,遇到了再具體分析。
2.1.4、創(chuàng)建用戶和表空間
移到系統(tǒng)管理員 SYSDBA 用戶下和 MAIN 表空間下。首先需要分析本次移植 Oracle 源庫需要移植的是哪一個(gè)或者哪幾個(gè)用戶的數(shù)據(jù),然后分別創(chuàng)建這些需要移植的用戶和對應(yīng)的表空間;大多數(shù)情況下,我們需要移植的 Oracle 實(shí)例中可能存在有大量的用戶,并不是所有的用戶對象都是需要我們移植的,所以在移植準(zhǔn)備階段,一定要溝通明確清楚。
2.2 Oracle 移植環(huán)境
在從 Oracle 向 DM7 進(jìn)行移植準(zhǔn)備階段,也需要注意 Oracle 的移植環(huán)境:嚴(yán)禁在生產(chǎn)環(huán)境中直接遷移。因?yàn)橐浦彩紫仁且粋€(gè)測試的工作,所以移植應(yīng)該避免從Oracle生產(chǎn)環(huán)境數(shù)據(jù)庫中直接進(jìn)行移植,需要提前向應(yīng)用開發(fā)商提出需要搭建一個(gè)測試環(huán)境,準(zhǔn)備 Oracle 需要移植的環(huán)境和數(shù)據(jù)。直接從生產(chǎn)庫上進(jìn)行數(shù)據(jù)移植,有很多風(fēng)險(xiǎn)存在, 例如會影響生產(chǎn)庫的效率,引發(fā)崩潰的可能等等。推薦使用 pl/sql developer 工具進(jìn)行移植測試工作。
3、常規(guī)對象及數(shù)據(jù)遷移
常規(guī)對象指的是序列、表和視圖,都可以通過達(dá)夢提供的數(shù)據(jù)遷移工具從 Oracle 完整的遷移到達(dá)夢數(shù)據(jù)庫。
3.1 制定遷移計(jì)劃
3.1.1、選擇合理的遷移順序:先遷移序列、再遷移表、最后遷移視圖。
3.1.2、對于數(shù)據(jù)量大的表單獨(dú)遷移。
3.1.3、對于分區(qū)表如果數(shù)據(jù)量沒有超過 1 億建議遷移成普通表,在分區(qū)列上創(chuàng)建索引。
3.1.4、對于大字段較多的表,需要修改批量的行數(shù),以免造成遷移工具內(nèi)存溢出。
3.2 Oracle 移植環(huán)境
序列對象一般不依賴其他模式對象,而被其他如表、過程所依賴,所以一般遷移過程中, 最先遷移序列對象。遷移序列方法:
3.2.1、使用 DTS 工具遷移序列,此方法適用于批量遷移序列對象。DTS 工具使用方法可參考幫助-幫助主題。
3.2.2、從源 Oracle 中獲取序列定義,在目的庫手動(dòng)執(zhí)行序列創(chuàng)建,此方法適用于所需遷移對象較少,或者對方法一中遷移出錯(cuò)的序列單獨(dú)處理。
3.3 表對象遷移
3.3.1、一次性遷移
對于表比較少,數(shù)據(jù)量不大的系統(tǒng),可以通過 DTS 采取一次性遷移。
3.3.2、分批次遷移
對于表比較多,數(shù)據(jù)量大的系統(tǒng),建議先遷移小表再進(jìn)行大表的遷移,遷移時(shí)最好不用快速裝載功能。
3.4 視圖對象遷移
3.4.1、普通視圖對象遷移
(1)使用 DTS 工具遷移視圖,此方法適用于批量遷移視圖對象。DTS 工具使用方法可參考幫助-幫助主題。
(2)從源 Oracle 中獲取視圖定義,在目的庫手動(dòng)創(chuàng)建視圖,此方法適用于所需遷移對象較少,或者對方法一中遷移出錯(cuò)的視圖單獨(dú)處理。
3.4.2、物化視圖對象遷移
(1)使用 DTS 工具遷移物化視圖,此方法適用于批量遷移物化視圖對象。
(2)從源 Oracle 中獲取物化視圖定義,在目的庫手動(dòng)創(chuàng)建物化視圖,此方法適用于所需遷移對象較少,或者對 a 方法中遷移出錯(cuò)的物化視圖單獨(dú)處理。
4、PL/SQL 移植
接下來對自定義類型、存儲過程、函數(shù)、觸發(fā)器進(jìn)行移植,可以使用達(dá)夢 DTS 工具進(jìn)行遷移。如果遇到大量錯(cuò)誤難以排查,也可以使用如下的方法進(jìn)行分步遷移,導(dǎo)出待移植對象的腳本:
方法一:使用 PL/SQL DEVELOPER 等工具導(dǎo)出自定義類型、存儲過程、函數(shù)、觸發(fā)器等 PL/SQL 腳本。
方法二:在 sqlplus 中使用 Oracle 自帶的包導(dǎo)出自定義類型、存儲過程、函數(shù)、觸發(fā)器等。
同理,其他類型如 TYPE, PACKAGE,PACKAGEBODY 等也可以用這種方法導(dǎo)出。
5、移植后收尾工作
5.1、更新統(tǒng)計(jì)信息
數(shù)據(jù)核對完成無問題后,應(yīng)進(jìn)行一次全庫的統(tǒng)計(jì)信息更新工作。更新統(tǒng)計(jì)信息的目的在于大批量遷移數(shù)據(jù)后,可能會導(dǎo)致數(shù)據(jù)庫優(yōu)化器根據(jù)錯(cuò)誤的統(tǒng)計(jì)信息得到錯(cuò)誤的查詢計(jì)劃,嚴(yán)重影響查詢性能。
5.2、數(shù)據(jù)備份
再對數(shù)據(jù)更新完統(tǒng)計(jì)信息后,在數(shù)據(jù)量不大,磁盤空間足夠的情況下應(yīng)進(jìn)行一次數(shù)據(jù)備份工作。數(shù)據(jù)備份有兩種方式:正常停止數(shù)據(jù)庫后,拷貝備份 data 文件夾;或者開啟歸檔日志后,進(jìn)行物理備份。
5.3、整理對象腳本
整理所有數(shù)據(jù)庫對象腳本,這是為了對項(xiàng)目移植情況進(jìn)行記錄和備份,方便再次進(jìn)行數(shù)據(jù)遷移。備份的數(shù)據(jù)庫對象腳本包括:序列定義及當(dāng)前值,表定義,索引定義,視圖定義,函數(shù)定義,存儲過程定義,包及包體定義、自定義類型和同義詞定義。
6、系統(tǒng)測試與優(yōu)化
數(shù)據(jù)庫和應(yīng)用系統(tǒng)移植完畢后開啟 sql 日志,對系統(tǒng)進(jìn)行全面測試,排除移植過程中錯(cuò)誤的地方,對慢的 sql 語句進(jìn)行優(yōu)化。
在功能測試和性能測試的時(shí)候可以開啟 SQL 日志,然后通過日志分析工具從執(zhí)行時(shí)間和執(zhí)行次數(shù)兩個(gè)維度對 SQL 日志進(jìn)行分析,生產(chǎn)分析結(jié)果,然后根據(jù)分析結(jié)果對系統(tǒng)性能進(jìn)行優(yōu)化。
結(jié)語
在數(shù)據(jù)庫國產(chǎn)化進(jìn)程中,大量Oracle數(shù)據(jù)庫向國產(chǎn)數(shù)據(jù)庫移植是一個(gè)長期、復(fù)雜的過程,需要管理、業(yè)務(wù)和運(yùn)維各方的充分協(xié)作。美創(chuàng)DBA團(tuán)隊(duì)對Oracle到國產(chǎn)數(shù)據(jù)庫的移植場景進(jìn)行了充分探索和實(shí)踐,可以結(jié)合客戶實(shí)際環(huán)境和個(gè)性化需求提供安全、高效的移植服務(wù),并確保數(shù)據(jù)庫移植后生產(chǎn)業(yè)務(wù)系統(tǒng)的持續(xù)穩(wěn)定運(yùn)行。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 為什么年輕人不愛換手機(jī)了
- 柔宇科技未履行金額近億元被曝已6個(gè)月發(fā)不出工資
- 柔宇科技被曝已6個(gè)月發(fā)不出工資 公司回應(yīng)欠薪有補(bǔ)償方案
- 第六座“綠動(dòng)未來”環(huán)保公益圖書館落地貴州山區(qū)小學(xué)
- 窺見“新紀(jì)元”,2021元宇宙產(chǎn)業(yè)發(fā)展高峰論壇“廣州啟幕”
- 以人為本,景悅科技解讀智慧城市發(fā)展新理念
- 紐迪瑞科技/NDT賦能黑鯊4 Pro游戲手機(jī)打造全新一代屏幕壓感
- 清潔家電新老玩家市場定位清晰,攜手共進(jìn),核心技術(shù)決定未來
- 新思科技與芯耀輝在IP產(chǎn)品領(lǐng)域達(dá)成戰(zhàn)略合作伙伴關(guān)系
- 芯耀輝加速全球化部署,任命原Intel高管出任全球總裁
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。