oracle-rdbms-server-11gR2-preinstall 的一個BUG解決
Oracle提供了一個非常方便的修改核心引數的RPM包,的確省了不少麻煩,特別是指令碼化以後只需要
cd /etc/yum.repo.d/
yum -y install oracle-rdbms-server-11gR2-preinstall
即可,特別需要注意的是11gR2 11.2.0.1版本需要i686的安裝包
libaio-0.3.107-10.1.ky3.i686.rpm
libaio-devel-0.3.107-10.1.ky3.i686.rpm
11.2.0.2以後據說就不需要了。
在12月的時候按照以上步驟確認能正常修改核心引數,但是這個月再執行後,發現orakenerl.log裡有錯誤,Failed to copy /etc/sysctl.conf to /var/log/oracle-rdbms-server-11gR2-preinstall//backup/ 1月-03-2013-15-09-13
從錯誤資訊來看,原因應該就是1月-03-2013-15-09-13 前面有個空格,不能作為目錄名,要找到根本原因得找到對應的程式碼,於是
開啟/usr/bin/oracle-rdbms-server-11gR2-preinstall-verify檔案,找到BACKUPDIR的地方,
BACKUPDIR=/var/log/oracle-rdbms-server-11gR2-preinstall/backup/`date "+%b-%d-%Y-%H-%M-%S"`
原來是因為日期格式化的時候採用的是語言相關的%b,對於中文來說是兩個位元組,而一月的1是一個位元組,前面就用空格補齊了,所以就造成了這個BUG,
難道Oracle的開發者沒有在非英文環境下做過測試?抑或是測試的時候是10-12月?
知道原因修正方法就比較簡單了,大致有兩種方法:
第一種:%b改成%B 這樣輸出是“一月”,就不會有問題了
第二種:換語言,執行之前設定一下環境變數EXPORT LANG=en_US.UTF8,這樣輸出就是"Jan"
以上這個問題花了我半天的時間,剛開始懷疑是不是虛擬機器問題,是不是安裝包問題,走了很多彎路,希望對大家有幫助。