陳岸慶,金映輝
(1.華東師范大學設備處,上海200062;2.華東師范大學計算中心,上海200062)
設備與實驗室管理平臺數據遷移的實踐與思考
陳岸慶1,金映輝2
(1.華東師范大學設備處,上海200062;2.華東師范大學計算中心,上海200062)
為了提高我校設備與實驗室管理平臺的安全性和穩定性,我們制定了可行的方案,實現了數據的遷移,完成了系統軟硬件的全面升級。本文詳細記錄了數據遷移的操作步驟和注意事項,為其他相似的業務系統數據遷移、跨平臺升級提供借鑒。
數據遷移;跨平臺;跨版本;Oracle數據庫
本校的設備與實驗室管理平臺是一個基于三層結構BS模式的設備管理系統,實現了對教學、行政辦公、生活后勤設備以及大型精密儀器等固定資產的管理。設備與實驗室管理平臺運行環境為x86架構的Windows Server 2003操作系統,物理內存總數為4G,使用Oracle 10G數據庫存儲業務數據。近年隨著高校信息化建設的不斷發展、學校規模的擴大、實驗室建設的快速發展、設備管理業務需求的不斷增加,現有服務器的硬件性能已經嚴重落后。另外,系統架構也存在紕漏,Tomcat應用服務和Oracle 10G數據庫部署在同一臺服務器,導致頻繁產生資源競爭。以上軟硬件環境影響了設備與實驗室管理平臺的安全性和穩定性,常出現宕機現象,嚴重影響服務質量。因此,對服務器硬件升級以及對軟件系統的優化是此次數據遷移的主要目的。系統優化主要從以下三個方面進行:①應用和存儲分離。應用系統和存儲系統分別部署在不同的服務器,這樣既避免資源競爭,又提高了系統的安全性和處理效率。②操作系統平臺的更換。生產數據庫7x24小時不間斷運行,選擇較為穩定的Linux系統作為后臺操作系統。③數據庫版本的升級。11G版本的Oracle數據庫為DBA和開發人員提供了更多的功能和特性,并且提升了數據庫的穩定性。

目前虛擬機技術在許多應用環境中取代傳統物理服務器。虛擬化極大地節省了成本,簡化了管理,維護方便。因此在遷移之前,利用虛擬機技術對硬件服務器進行規劃。我們準備了四臺Dell PowerEdge R910服務器,采用Raid10方式構建冗余磁盤,安裝Vmware Esxi 5.5U2,使用Vcenter組成群集,提供統一管理的虛擬機服務。構建兩臺虛機服務器,一臺作為應用服務器提供對外Web服務,另一臺作為Oracle數據庫服務器存儲日常業務數據,實現應用與存儲的分離。應用服務器虛擬機安裝Windows Server 2008 R2操作系統,部署Tomcat應用服務,第一和第二塊網卡連接內網Oracle數據庫,開啟vmotion以及管理流量選項,第三和第四塊網卡提供對外的Web服務。數據庫服務器虛擬機安裝Oracle linux 5.10操作系統,部署Oracle 11.2.0.0版本數據庫,開啟vmotion功能。VSphere 5.1[1]以上版本支持無共享存儲的在線遷移功能,即使主機只有LOCAL DISK,沒有掛載共享存儲,也可以通過vmotion的網絡來遷移虛擬機,將虛擬機在ESXi主機上的“內存數據”及“本地磁盤數據”通過網絡遷移至其他ESXi主機上。利用這個特性,當主機發生硬件故障或者需要升級主機硬件配置的時候,也不會對業務產生很大的影響,確保業務不被中斷。硬件服務器的規劃如圖1所示。

圖1 硬件服務器的規劃

為了盡量減少停機時間,計劃在2小時之內完成全部遷移工作。正因為如此,需制定詳細可行的遷移方案,確保遷移成功。萬一遷移失敗,要能及時恢復。
(1)遷移前需做好以下工作
①遷移方式的選擇。
Oracle數據庫提供了多種數據遷移的方式:EXP/ IMP邏輯導入導出,數據泵,Rman備份恢復,表空間傳輸,高可用性dataguard、stream等。本校的設備與實驗室管理平臺作為一個業務系統,為教職工提供固定資產管理服務。如果數據遷移導致長時間停機,會嚴重影響用戶開展日常工作。利用Oracle傳輸表空間(Transporting Tablespaces Between Databases)[2]的特性能夠滿足需求,在較短時間之內快速完成數據遷移,同時也滿足跨平臺(Windows到Linux)以及跨版本(Oracle10G到11G)的技術要求。
②安裝數據庫服務器,配置Oracle 11G數據庫,編寫好Rman[3]備份恢復腳本。
③提前安裝配置Web應用服務器,程序指向新的Oracle數據庫,并且做好測試工作。
(2)遷移過程中需做好以下工作
①在遷移當天夜間,停止源端服務器的Web服務,設置數據庫的表空間狀態為只讀。
②此時業務處于停止狀態,然后從源數據庫中導出表空間元數據,拷貝元數據和表間數據文件到目標數據庫,拷貝完成之后導入表空間元數據到目標數據庫中。
③最后設置目標端數據庫表空間為讀寫。
④測試Web應用是否正常。如果出現短時間內無法解決的問題,那么就進行簡單的回退工作:重新更改源數據表空間的狀態為讀寫,啟動源端Web應用,恢復正常業務。

跨平臺遷移表空間,需要查詢視圖V$TRANSPORTABLE_PLATFORM,確定源系統和目標系統ENDIAN_FORMAT是否一致。ENDIAN_FORMAT是系統平臺的字節碼,表示數據存儲和處理的順序。運行命令如下:
Select*from V$TRANSPORTABLE_PLATFORM;
此次遷移工作中源端的服務器操作系統Microsoft Windows和目標端服務器操作系統Linux x86的ENDIAN_FORMAT都是Little,那么就省去了使用RMAN命令轉換數據文件的步驟。

源數據庫表空間進行自包含檢查,確定需要遷移的對象是否引用其他表空間。使用數據庫自帶的PL/SQL包進行檢查,擁有EXECUTE_CATALOG_ROLE角色權限的用戶可以運行PL/SQL包:
EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('表空間名稱',TRUE);
如果發現違反條件的對象,可以通過如下命令查看結果:
SELECT*FROMTRANSPORT_SET_VIOLATIONS;
如果無返回數據說明表空間是自包含的。

用戶必須擁有EXP_FULL_DATABASE角色的權限,才可以生成傳輸表空間數據集。以下為操作的詳細步驟:
①設置數據表空間集為只讀。
SQL>ALTER TABLESPACE“表空間名稱”READ ONLY;
Tablespace altered.
②導出源數據表空間元數據。
元數據是描述數據結構的信息,實際數據并沒有導出,所以即使表空間的數據量巨大,導出也能很快完成。
SQL>HOST
$EXPDP system/password DUMPFILE=sbc.dmp DIRECTORY=sbc_dir_source
TRANSPORT_TABLESPACES=“表空間名稱”。
DUMPILE定義元數據文件的名稱,DIRECTORY定義了dmp文件存放的位置,在使用導入導出之前必須先定義DIRECTORY對象,并且賦予read和write權限給public。
③完成之后,退回到SQLPLUS命令行
$EXIT
如果系統字節碼endian不一致,此時可以使用RMAN命令來進行轉換。

數據文件和表空間元數據需要拷貝到目標數據庫。可以使用多種方式實現拷貝:
①Linux操作系統從遠程Windows系統主機拷貝文件,可以使用SCP命令;
②使用Oracle提供的DBMS_FILE_TRANSFER程序包,可以方便地從本地數據庫和遠程數據庫之間傳輸文件;
③使用SecureCRT、FileZilla等FTP工具實現遠程拷貝。

導入操作不需要用戶擁有特別的權限,直接運行如下命令:
IMPDP system/password DUMPFILE=sbc.dmp DIRECTORY=sbc_dir_targetTRANSPORT_DATAFILES=/路徑/數據文件名稱.dbf。
DUMPFILE參數定義導入的元數據文件名稱。The DIRECTORY定義dmp文件存放位置,TRANSPORT_DATAFILES參數定義數據文件所在路徑和文件名稱。
命令運行成功之后,源表空間所有數據已經拷貝到目標數據庫。查看導入日志是否有錯誤發生,同時更改表空間的狀態為讀寫。至此,數據遷移操作全部完成。
數據遷移是一個非常復雜和細致的過程,它要求設計與實施人員具備多元化的知識結構,否則就會陷入顧此失彼的境地。一個完整和成功的數據遷移解決方案包含六個部分:①具備專業技能的人員;②經過驗證的解決方案;③穩健可靠的流程和方法論;④交付前實驗室模擬驗證;⑤高效的遷移工具;⑥應急的回滾措施。任意一個條件的缺乏都有可能導致數據遷移不成功。[4]
本次數據遷移使用傳輸表空間特性實現,整個遷移過程并不繁瑣。但是筆者在實際操作中,還是遇到了一些問題。數據遷移完成之后,應用系統某些模塊發生錯誤,通過查找原因,發現目標表空間中存儲過程、程序包、視圖、觸發器等都沒有生成,這類對象并不是數據段的對象,都是屬于SYSTEM表空間,傳輸表空間不能對SYSTEM表空間的對象進行遷移。因此,與字典信息有關的對象,沒有數據段的對象是不會在目標端生成,需要重新做一次exp/imp row=no導入導出,重新導入導出對象結構,這樣可以快速在目標端生成SYSTEM表空間的對象。
Oracle環境中,傳輸表空間是快速數據遷移的一種技術手段,理想情況下傳輸速率可以達到近似網絡直傳的速率。[5]相對于其他手段,傳輸表空間最大的好處就在于不需要進行繁復的抽取和還原過程,并且可以實現跨平臺的數據遷移。但是使用傳輸表空間特性是有限制的,需要滿足一些基本條件,否則遷移過程中會發生問題。
①源數據庫和目標數據庫必須使用相同的字符集(CHARACTER SET)和國家字符集(NATIONAL CHAR ACTER SET)。
②源數據庫表空間的名稱和目標數據庫中的表空間名稱不允許重復,如果相同,需要預先更改表空間名稱。
③表空間中對象如果有引用其他對象,那么所有對象必須在同一個表空間中。如果引用對象在其他表空間,那么這些表空間需要一起遷移。
④不能移動SYS用戶擁有的對象以及SYSTEM表空間中的內容。例如PL/SQL、Java類、視圖、同義詞、用戶、權限等。
⑤傳輸表空間需要系統平臺的字節碼(endian_format)相同。
遷移前期的準備工作還是很重要的,花費時間仔細參閱官方技術手冊和官方文檔還是非常值得的。
數據服務將成為高校信息化核心驅動力。數據無疑是最核心的驅動力。[6]數據的存儲以及數據的遷移成為時刻需要關注的問題。
為了降低數據遷移對系統的影響,我校設備與實驗室管理平臺使用傳輸表空間特性在短時間之內完成整個應用數據的遷移,并且快速地恢復了應用系統的正常運行。目前新的應用平臺配置使用高性能的機架式服務器,采用更為穩定的Linux系統運行Oracle11G版本數據庫。系統在新的運行環境下,整體性能得到增強,系統運行效率、穩定性、安全性都得到大大的提升。數據庫能夠處理復雜事務,使業務系統的運行更加流暢。數據遷移為設備與實驗室管理平臺的穩定運行奠定了堅實的基礎。
[1]VMware.VMware vSphere 5.5文檔中心[DB/ OL].http://pubs.vmware.com/vsphere-55/index.jsp.
[2]Oracle.Database Administrator's Guide 10g Release 2(10.2)B14231-02[DB/OL].http://docs.oracle.com/cd/ B19306_01/server.102/b14231/toc.htm.
[3]Oracle.DatabaseBackupandRecoveryUser's Guide 11g Release 2(11.2)E10642-06[DB/OL].http:// docs.oracle.com/cd/E11882_01/backup.112/e10642/toc.htm.
[4]數據遷移助力鄂爾多斯政務智能化[DB/OL].http://www.sxjdw.org.cn/Details.aspx?pn=22&id=2311.
[5]朱有存,楊曉蓉,羅丹,郭平彩.用傳輸表空間技術升級Oracle數據庫[J].醫療衛生裝備,2012(7):39-40.
[6]宓詠.數據服務將成為高校信息化核心驅動力[J].中國教育網絡,2015(8).
(編輯:王天鵬)
G482
A
1673-8454(2016)05-0044-03