葉瑞綿,王曉華,丁慧瑩
(武警黑龍江省總隊醫院,黑龍江哈爾濱150076)
“軍字一號”系統是以Oracle為后臺數據庫,以Power Builder為開發平臺進行開發的,在“軍字一號”系統運行的過程中,Oracle數據庫常常會出現一些問題[1],本文總結了Oracle數據庫在使用過程中的問題,并給出了解決方法,分析如下。
原因:達到會話允許的最大游標數。
措施:①在初始化文件INIT.ORA文件中增加OPEN_CURSORS的數量,一般要求大于200。②出現這種錯誤提示大多是因為OracleConnection,OracleDataReader使用完后沒有正常的關閉造成的。只要使用后立即關閉掉就可以了,即調用相應的Close()就可以了。對于OracleDataReader來說一定要調用 Close()關掉[2]。
原因:一個行觸發讀取或修改變化的表(正在修改、插入)時,產生這種錯誤。
措施:檢查觸發器腳本,保證引用完整性。
原因:錯誤代碼 ORA-12545表示網絡連接串(即tnsnames.ora文件中的HOST處)中使用的機器名和IP地址不存在。
措施:修改客戶端的hosts和tnsnames.ora或者修改oracle服務器數據庫。
原因:沒有啟動監聽器或者監聽器損壞。
措施:①直接修改listener.ora,路徑是:Oracle安裝目錄oracleora81 etworkADMINlistener.ora.修改 HOST 為主機名或者IP。
②通過使用“Net8ConfigurationAssistant”工具向導之“監聽程序配置”增加一個監聽器即可。
原因:Oracle的數據庫服務沒有啟動。
措施:①環境變量setOracle_sid=需要的服務名。②listener.ora,tnsnames.ora等內機器名或者 IP 地址是否正確。③netstat–a檢查端口是否被占用。④檢查注冊表HKEY_LOCAL_MACHINE/Software/Oracle/Home0新增字符串USE_SHARED_SOCKET=TRUE,重新啟動服務。
原因:Oracle的網絡服務名沒有正確配置。
措施:①請使用“Net8ConfigurationAssistant”工具向導之“本地網絡服務名配置”配置TNS即可。②首先查看客戶端的tnsnames.ora文件,找到數據庫連接的描述中,sid=或service_name=之后的名稱,假設這個名稱是dbserver。然后在客戶端用tnsping命令,測試剛才找到的實例名,命令:tnspingdbserver,如果不通,則要從網絡環境、數據庫環境等方面找原因,看是否實例名錯誤、數據庫是否啟動、數據庫監聽是否啟動、網絡是否通暢[3]。
本地計算機上的OracleOraDb10g_home1TNSListener服務啟動后又停止了。一些服務自動停止,如果它們沒有什么可做的,例如“性能日志和警報”服務[4]。
解決辦法:oracleora81 etworkADMINlistener.ora.把這這文件里的內容改下HOST=你的計算機名字。
以上是筆者對在系統運行過程中出現的數據庫問題進行的總結,oracle數據庫功能強大,我們所遇到問題的也只是一小部分,希望以此能和更多的同行學習交流。
[1]夏 洪斌,呂一剛,于敏,等.醫院信息系統ORACLE數據庫升級的實現[J].解放軍醫院管理雜志,2008(04):343.
[2]張 帆,張紅君,劉聰.“軍字一號”ORACLE數據庫升級的實現[J].解放軍醫院管理雜志,2007(07):522.
[3]曹 麗,劉剛.醫院信息系統ORACLE數據庫升級解決方案[J].醫療設備信息,2007(07):30.
[4]劉 志敏.Oracle數據庫應用管理解決方案[M].電子工業出版社,2002.