oracle-rdbms-server-11gR2-preinstall 的一个BUG解决

本文讨论了使用Oracle提供的RPM包修改内核参数时遇到的问题,具体为文件名中出现空格导致的复制失败,并分析了原因。文章提供了两种解决方法:修改日期格式输出或设置环境变量。分享了作者解决此问题的经验,希望对读者有所帮助。

Oracle提供了一个非常方便的修改内核参数的RPM包,的确省了不少麻烦,特别是脚本化以后只需要

cd /etc/yum.repo.d/

wget http://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以后据说就不需要了。

在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 RDBMS Server 12c Release 1 Preinstall 包(`oracle-rdbms-server-12cR1-preinstall`)主要设计用于简化 Oracle Database 12c Release 1 在 Oracle Linux 上的安装过程。它会自动配置操作系统以满足 Oracle 数据库安装的先决条件,包括内核参数、软件包依赖项以及用户和组的创建等[^1]。 关于该 RPM 包是否支持向下兼容的问题,需从以下几个方面进行分析: ### 1. 操作系统版本兼容性 `oracle-rdbms-server-12cR1-preinstall` 是为特定版本的 Oracle Linux 设计的,通常适用于 Oracle Linux 6 及其更新版本。例如,在 Oracle Linux 6.6 上已经验证该包是可用的[^1]。然而,当尝试将其“移植”到更早的更新版本(如 Oracle Linux 6.3)时,可能会遇到以下问题: - **依赖关系不满足**:早期版本的操作系统可能缺少某些必需的软件包或库文件,导致安装失败。 - **内核版本差异**:不同更新版本之间内核行为可能存在差异,影响预安装脚本的执行效果。 - **系统调用或配置方式变化**:早期版本中某些系统配置方法可能尚未标准化,导致预安装脚本无法正常运行。 因此,尽管在技术上可以尝试将 `oracle-rdbms-server-12cR1-preinstall` 安装到 Oracle Linux 6.3 上,但官方并不推荐这种做法,且可能出现不可预料的行为。 ### 2. Oracle Database 版本与操作系统的匹配 Oracle RDBMS Server 12c Release 1 预安装包通常建议与 Oracle Linux 6 的较新更新版本配合使用,例如 6.4 或更高版本。如果目标环境是较旧的 Oracle Linux 6.x 版本(如 6.3),则建议手动完成所有预安装步骤,而不是依赖该 RPM 包。 ### 3. 手动替代方案 若希望在不支持的环境中部署 Oracle 12c,则可以通过以下方式实现类似功能: - 手动安装必要的软件包(如 `binutils`, `compat-libcap1`, `gcc`, `glibc`, `ksh`, `libaio`, `libgcc`, `libstdc++`, `make`, `sysstat`, `unixODBC` 等)。 - 手动设置内核参数(如 `kernel.shmall`, `kernel.shmmax`, `kernel.shmmni`, `kernel.sem`, `fs.file-max`, `net.ipv4.ip_local_port_range`, `net.core.rmem_default`, `net.core.rmem_max`, `net.core.wmem_default`, `net.core.wmem_max`)。 - 创建所需的用户和组(如 `oracle` 用户和 `oinstall`、`dba` 组)。 - 设置环境变量(如 `ORACLE_HOME`, `ORACLE_SID`, `PATH`, `LD_LIBRARY_PATH`)。 ### 示例:检查 RPM 包兼容性的命令 ```bash # 查看 RPM 包支持的操作系统版本 rpm -qp --queryformat '%{DISTRIBUTION}\n' oracle-rdbms-server-12cR1-preinstall*.rpm # 尝试安装并查看依赖关系 yum install oracle-rdbms-server-12cR1-preinstall*.rpm --tryitnow ``` ### 结论 `oracle-rdbms-server-12cR1-preinstall` 并不具备良好的向下兼容性,尤其在 Oracle Linux 6.3 这样的旧版本上可能存在兼容性问题。建议使用 Oracle Linux 6.4 或更高版本以获得最佳支持体验。如果必须使用较旧的操作系统版本,则应通过手动方式完成预安装配置。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值