以下的文章主要是介紹使用Oracle數據庫進行相關的企業開發的方案,即,錯誤排查的實際應用 ,以及字符集問題的實際操作, 以下就是相關內容的具體描述,希望會給你帶來一些幫助在此方面。
錯誤排查
程序寫多了,難免會出錯,Oracle數據庫也不例外。出錯並不可怕,只要及時找到出錯的解決方案就可以了。
在上面已經提起過記錄OracleSQL語句的一些做法,當把SQL運行的時候,Oracle數據庫一般會報一個ora錯誤,如ora-00600這樣的方式,並給出一個簡短的說明,但是說明的文字都不會太細致。
如何根據這個蛛絲馬跡找到問題的所在呢?如果你的數據庫服務器位於unix或Linux服務器上,你需要telnet登錄服務器,系統提供了一個oerr的命令行工具,可以方便的查出錯誤的具體含義,如 oerr ora 600這種樣式。如果你的Oracle數據庫服務器位於Windows服務器,那麼沒有這樣的工具,只能查看幫助文檔了。
雖然用oerr工具可以看到錯誤的詳情,但是經過一段時間的試用後就會發現,其實它所給出的提示也是相對簡單的,有些甚至什麼都看不出來,那麼這時就會用到其它的解決辦法:
1.GOOGLE等搜索引擎
這是一個非常經濟實惠的解決方案,並且根據搜索引擎的強大功能,可以找到很多的相關資料,說不定看到有人和你有同樣的問題,下面緊跟著就是解決辦法。
2.Metalink
這是Oracle官方提供的一個收費的網站,用戶可以在上面查找資料(海量資料,信息量非常大),如果實在查不到解決辦法,還可以提問,會有Oracle的專家負責來解答。這是解決Oracle問題權威的地方,但是缺點就是如果你沒有賬號的話,就等於零了。
對於有些實在看不懂的錯誤提示,也可以請DBA協助,因為有些錯誤提示表面上看是SQL的問題,但是實際上可能是數據庫本身引起的。如果你從錯誤信息中可以直接看到“不能擴展”、“表空間已滿”或“回滾段過舊”等顯然和OracleSQL無關的錯誤,就可以直接去尋求DBA的幫助了。
如果您正在部署一個BS結構的系統,很有可能會發現,使用客戶端工具連接的時候,與服務器連接一切正常,可就是WEB程序無法連接Oracle數據庫,並且報告 “OCI需要8.1.7或以上版本”這個錯誤。這是個比較“暧昧”的錯誤信息,很顯然我們現在所裝的客戶端都滿足它的要求,那到底是哪裡的問題呢?問題就在於需要給Oracle的ora92目錄賦一個權限,如下圖:
如果你嘗試做這個授權的時候,你會發現,這個用戶已經存在,並且已經授權成功!但是為什麼還不行呢?這裡需要一個技巧,先把“讀取和運行”這個對勾去掉,再選中,然後“確定”,也就是重新做一次賦權,就可以了。根據機器的性能,可能要稍等幾秒鐘或幾分鐘。
經過上面的折騰一般就行了。如果還不能正常訪問,那麼請重新啟動WEB服務器(不是數據庫服務器),這個問題肯定就能解決了。
對於Oracle10g,沒有這個目錄,我的做法就是把Oracle整個安裝目錄全做一下這個授權,就沒有問題了。
字符集問題
如果Oracle數據庫服務器是裝在中文環境下,客戶端也是在中文環境下運行,那麼這一部分基本就不用看了。但是如果安裝情況比較復雜,特別是服務器需要支持多語言及多字符集的時候,客戶端如何配合就成了一個問題。
要想知道客戶端怎麼配置,就需要知道服務器端是按什麼標准來安排的,可以通過以下OracleSQL來查詢:
- select * from database_propertIEs
其中NLS_CHARACTERSET指的就是服務器端的字符集,比如服務器上查出來的結果是ZHS16GBK,那麼客戶端就需要按這個標准來配置。對於我們開發人員來說,客戶端一般是Windows平台,這個配置需要在注冊表中修改,注冊表的路徑為:我的電腦\HKEY_LOCAL_MacHINE\SOFTWARE\Oracle\HOME0\NLS_LANG
比如我的機器這個鍵值就是SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意保留空格),表示簡體中文的中文字符集。從字符集上看,目前服務器與客戶端是匹配的,字符集匹配,查詢出來的內容就不會是亂碼了,否則你將看到很多不願意看到的文字。
一般為了實現多語言支持,字符集都設成UTF8,這樣可以支持多種文字了。如果服務器端與客戶端字符集不一致,一般會出問題,但是問題主要都在顯示上面,不會對系統有太多的影響,比如俄羅斯錄入了當地語言的名字,在中文系統下有可能就顯示不出來。
Oracle一共支持多少的字符集呢,我沒有數過,如果ZHS16GBK不行,換UTF8試一下,說不定就行了。也有個例外,早期的Oracle有些版本只支持西歐字符集,那是一個單字節的字符集,字節的高位是空的。
這個字符集與ZHS16GBK是不兼容的,這時就要把客戶端同樣設成西歐字符集才可以。字符集之間有包容關系,只要符合這個包容關系,兩端設的不一樣也沒有關系,比如ZHS16GBK和UTF8之間就是包容的。
以上的相關內容就是對使用Oracle數據庫進行企業開發的方案的介紹,望你能有所收獲。