孟慶崧
(濟南軍區總醫院 資源共享協作辦公室,山東 濟南 250031)
“軍衛一號”數據庫系統由Oracle8i手工升級至Oracle10g的方法
孟慶崧
(濟南軍區總醫院 資源共享協作辦公室,山東 濟南 250031)
利用Oracle公司提供的升級腳本,將“軍衛一號”數據庫系統由Oracle8i手工升級至Oracle10g,該方法升級速度快,簡便易行,為“軍衛一號”系統的深入應用奠定了良好的基礎。
“軍衛一號”;Oracle數據庫;HIS
Abstract:This paper provides a method for upgrading the database system of No.1 military medical project from Oracle8i to Oracle10g by using the upgrading script provided by Oracle corporation.The method provides a quick way for upgrading and is easy to use.It makes a good foundation for the deep application of No.1 military medical project.
Key words:"No.1 military medical project";Oracle database;HIS
隨著我院信息化建設的深入發展,地方醫療保險系統、LIS、PACS等系統的陸續投入使用,我院“軍衛一號”數據庫系統的維護和管理面臨新的挑戰:
(1)客戶端的增多對后臺數據庫的性能提出了更高的要求,需要對內存參數進行恰當的調整;
(2)用戶一旦對數據進行了誤操作,如誤刪除某條記錄等,需要立即進行恢復;
(3)新上線的社會醫療保險系統采用ZHS16GBK中文字符集,而“軍衛一號”數據庫系統采用US7ASCII英文字符集,雖然通過編程的方法可以進行字符集轉換,但程序使用過程中仍經常會出現亂碼的情況,為了長遠的需要,最好將“軍衛一號”數據庫的字符集修改為簡體中文字符集。
我院“軍衛一號”數據庫系統為Oracle8.1.7.4,操作系統為Windows Server 2000,對于上述問題不是不能解決,但需要對Oracle8i的知識有深入的了解。目前,Oralce10g的推出已有一段時間,業界有關Oracle10g的應用已日益成熟,且Oralce10g提供了許多新的特性,如自動化實例調整、自動化內存調整、閃回(Flashback)以及修改字符集的內部指令等,這些新特性完全可以應對我院“軍衛一號”數據庫管理所面臨的新挑戰。因此,有必要對我院“軍衛一號”數據庫系統進行升級。
將Oracle8i升級為Oracle10g的方法很多,利用Oracle的Exp/Imp以及Toad工具實現數據遷移[1];采用建立數據庫鏈接的方法實現數據遷移[2]。這兩種方法雖然最終都能夠實現數據庫的升級,但由于“軍衛一號”系統數據量很大,數據遷移耗費的時間很長,從而造成系統切換的時間很長。
除上述方法以外,Oracle也提供了其它升級途徑,比如采用Database Upgrade Assistant升級工具,以及利用升級腳本進行手工升級等。采用手工升級可以明確的察覺升級過程中出現的錯誤,以采取應對措施,便于對升級過程進行有效的控制,而且升級速度較前面介紹的數據遷移的方法要快。因此,本文就手工升級方法進行詳細的介紹。
需要注意的是,對“軍衛一號”數據庫系統進行升級是一個復雜的過程,它關系著整個醫院信息系統的正常運行。因此,有必要在備用服務器中對升級過程進行反復實驗,待實驗成功后,才可對生產數據庫進行升級。
目標數據庫版本為Oralce 10.2.0.1,以下簡稱為Oracle10g,現有數據庫版本為Oracle 8.1.7.4,以下簡稱為Oracle8i。
(1)如果待升級數據庫版本為Oracle 8.1.7.4,則略去此步,否則,安裝待升級數據庫對應的Patch,將待升級數據庫先升級到Oralce 8.1.7.4,有關安裝Patch的方法,請參考有關說明,此處不再贅述。
(2)在Windows Server 2000操作系統中創建一個新目錄,在該目錄下全新安裝Oracle10g數據庫,并且不安裝任何啟動數據庫。
(3)將Oracle10g目錄ORACLE_HOME/rdbms/admin下的utlu102i.sql文件拷貝出至另一目錄,并切換至該目錄,用數據庫管理員身份登錄Oracle8i數據庫的SQL*Plus,執行該腳本(該腳本又稱為升級前信息工具)并查看腳本的執行結果。
(4)備份原Oracle8i數據庫。
(5)將原Oracle8i數據庫中的參數文件、口令文件拷貝至Oracle10g數據庫的相應目錄下??截悈滴募?,將該參數文件重命名為initsid.ora。(在Oracle8i數據庫中,參數文件名為init.ora,在Oracle10g數據庫中,參數文件名為initsid. ora)。
(6)調整Oracle10g數據庫中的參數文件initsid.ora,對照(3)步中升級前信息工具的執行結果,在initsid.ora文件中將該結果中標記為“Obsolete”的參數刪除,將標記為“Deprecated”的參數的參數值進行調整,調整范圍參考該結果中提供的參考值,并增加該結果中提示需增加的參數。同時參照該結果調整其它需要調整的方面,比如使某些小的回滾段離線,并創建一個更大的回滾段以便于升級過程中使用該回滾段等。
(7)在cmd(控制臺命令行)下,關閉Oracle8i數據庫,刪除該數據庫實例,并創建新的Oracle10g數據庫實例。設“軍衛一號”數據庫系統的實例名為“orcl”,執行:

使用Oracle10g目錄下的參數文件創建新的實例:

(8)在cmd下切換至Oracle10g的ORACLE_HOME/rdbms/ admin目錄,啟動Oracle10g的SQL*Plus,以數據庫管理員(sysdba)身份連接至數據庫,執行:

(1)安裝Oracle10g中Web版的OEM(Oracle企業管理器),在cmd下執行:

(2)啟動iSQL*Plus服務,在cmd下執行:

(3)將原“軍衛一號”數據庫采用的英文字符集AMERICAN_AMERICA.US7ASCII修改為簡體中文字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK,啟動Oracle10g的SQL*Plus,執行:

本文介紹了將Oracle8i版本的“軍衛一號”數據庫手工升級為Oracle10g的方法。該方法的最大優點是升級速度快,縮短了新舊系統切換的時間。經過嚴密測試,最終數據庫由Oracle 8.1.7.4成功升級為Oracle 10.2.0.1,并且將“軍衛一號”數據庫的字符集成功修改為簡體中文字符集。系統升級后,運行平穩。
[1] 徐正雄,王玲,喬靜,等.用Exp/Imp實現“軍衛一號”從Oracle8i到Orade10g的升級[J].醫療衛生裝備,2009,30(1):55-56.
[2] 夏洪斌,陳金雄,陳薇薇.“軍衛一號”數據庫從Oracle 8.17到Oracle 10g的升級實現[J].醫療衛生裝備,2008,29(4):40-41.
[3] 劉志敏,等.利用數據庫分布技術改善HIS的應用性能[J].中國醫療設備,2008(6):25-26.
[4] Kathy Rich,Viv Schupmann.Oracle Database Upgrade Guide 10g Release 2(10.2)[DB/OL].(2008-01-01)[2009-06-01].http:// download.oracle.com/docs/cd/B19306_01/server.102/b14238/ toc.htm.
[5] 蓋國強.循序漸近Oracle[M].北京:人民郵電出版社,2007.
A Method of Manual Upgrading No.1 Military Medical Project Database from Oracle8i to Oracle10g
MENG Qing-song
(Resource Sharing Cooperation Office, General Hospita of Jinan Military Area,Jinan Shandong 250031,China)
TP392
A
10.3969/j.issn.1674-1633.2010.02.015
1674-1633(2010)02-0040-02
2009-06-24
作者郵箱:qing-song-zi-zai@163.com