oracle登陆不了账号被锁定oracle-rdbms-server-11gR2-preinstall的一个BUG解决

oracle-rdbms-server-11gR2-proracle账号einstall的一个BUG解决

 

Oracle提供了一个非常方便的修改内核参数的RPM包,的确省了不少麻烦,

特别是脚本化以后只需要  www.2cto.com  

 

cd /etc/yum.repo.d/

 

wget https://public-yum.oracle.com/public-yum-ol6.repo

 

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以后据说就不需要了。  www.2cto.com  

 

在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"

 

以上这个问题花了我半天的时间,刚开始怀疑是不是虚拟机问题,是不是安装包问题,走了很多弯路,希望对大家有帮助。

 

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。