1. 环境准备与系统配置
在国产化操作系统银河麒麟V10上部署Oracle 11g,首先要确保系统环境满足基本要求。我去年在某个金融项目迁移时就遇到过因环境配置不当导致的安装失败,折腾了整整两天才找到问题根源。这里把踩过的坑都总结出来,帮你少走弯路。
操作系统建议选择银河麒麟V10 SP1 0518 Server x86_64版本,这个版本经过多次实测最稳定。安装系统时有个关键点:swap分区至少要7GB,Oracle在安装过程中会大量使用交换空间,特别是当物理内存不足时。有次我在一台32GB内存的服务器上偷懒只配了4GB swap,结果安装到70%时直接卡死,血泪教训啊!
装完系统后先做三件事:
- 关闭selinux(修改/etc/selinux/config文件为disabled)
- 停用firewalld(systemctl stop firewalld && systemctl disable firewalld)
- 如果是内网环境,必须配置本地yum源。这里有个小技巧:可以先用能上网的机器下载好所有依赖包,做成离线仓库。具体操作可以参考麒麟官方文档,注意要包含base、updates和epel三个仓库。
2. 依赖安装与用户配置
2.1 解决依赖问题
Oracle 11g对系统依赖包的要求比较特殊,在银河麒麟上需要特别注意这几个包:
yum install libnsl* -y yum install binutils gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libXi -y遇到过最头疼的问题是libpthread_nonshared.a这个文件缺失,会导致安装时提示"Error in invoking target 'install' of makefile"。解决方法是从其他相同系统的机器上拷贝这个文件到/usr/lib64目录下,或者从安装光盘里提取。
2.2 用户与目录规划
Oracle的权限管理很严格,建议按以下步骤创建用户和组:
groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper useradd -u 54321 -g oinstall -G dba,oper oracle passwd oracle # 建议设置复杂密码工作目录建议放在/u01下,这是Oracle的惯例位置:
mkdir -p /u01/app/oracle/ chown -R oracle:oinstall /u01/ chmod -R 755 /u01/3. 内核参数与环境变量
3.1 关键内核参数调整
Oracle对Linux内核参数有严格要求,这些参数直接影响数据库性能。在我的压力测试中发现,不合理的shmmax设置会导致OOM错误。以下是经过验证的参数配置:
# 添加到/etc/sysctl.conf fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576执行sysctl -p生效后,建议用sysctl -a | grep shm验证参数是否生效。
3.2 环境变量配置
Oracle用户的环境变量很容易配错,特别是ORACLE_HOME和PATH的先后顺序。这是我验证过的配置:
# 在oracle用户的~/.bash_profile中添加 export ORACLE_SID=orcl export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib有个细节要注意:在银河麒麟上必须额外设置export CV_ASSUME_DISTID=RHEL7.6,否则安装程序会误判系统版本。
4. 图形化安装实战
4.1 解决图形界面问题
在无GUI的服务器上安装时,推荐用X11转发:
- 本地安装Xming或VcXsrv
- SSH连接时加上-X参数
- 执行
export DISPLAY=localhost:10.0 - 测试
xclock能正常显示后再运行安装程序
遇到过中文乱码的情况,解决方法是将jdk目录下的filegroup4.jar替换为中文版。具体路径在安装包的/database/stage/Components/oracle.jdk/1.5.0.51.10/1/DataFiles目录。
4.2 安装过程要点
执行安装时建议用这个命令:
./runInstaller -ignoreSysPrereqs -ignorePrereq安装选项选择:
- 跳过软件更新
- 仅安装数据库软件(后续再用DBCA建库)
- 企业版许可
- 英文+简体中文语言支持
遇到先决条件检查失败时,常见的两个问题:
- pdksh包缺失:可以直接忽略
- 内核参数警告:检查是否漏掉了shmmax等参数
5. 常见报错解决方案
5.1 OUI-25031错误
这个错误通常出现在安装进度到68%时,解决方法:
# 修改$ORACLE_HOME/sysman/lib/ins_emagent.mk 找到$(MK_EMAGENT_NMECTL)行,在后面添加 -lnnz115.2 libaio版本冲突
银河麒麟自带的libaio可能与Oracle要求的不兼容,解决方法:
rpm -e --nodeps libaio rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm5.3 监听程序启动失败
如果listener起不来,检查$ORACLE_HOME/network/admin/listener.ora文件,确保HOST写的是实际IP而非localhost。遇到过因为/etc/hosts配置错误导致监听无法启动的情况。
6. 数据库创建与优化
6.1 使用DBCA建库
安装完软件后,用oracle用户执行:
dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl -sid orcl \ -sysPassword oracle123 \ -systemPassword oracle123 \ -emConfiguration NONE \ -storageType FS \ -datafileDestination /u01/app/oracle/oradata \ -characterSet AL32UTF8 \ -memoryPercentage 406.2 关键参数调整
建库后建议修改这些参数:
ALTER SYSTEM SET sga_max_size=4G SCOPE=spfile; ALTER SYSTEM SET sga_target=4G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=spfile; ALTER SYSTEM SET processes=500 SCOPE=spfile;7. 备份与日常维护
7.1 配置RMAN备份
建议创建专门的备份目录:
mkdir -p /u01/backup/{archivelog,controlfile,datafile} chown -R oracle:oinstall /u01/backup然后在SQL*Plus中配置:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%U';7.2 监控脚本示例
这个脚本可以检查表空间使用率:
#!/bin/bash sqlplus -S / as sysdba <<EOF set pagesize 0 feedback off select tablespace_name,round(used_percent) pct_used from dba_tablespace_usage_metrics where used_percent > 80; EOF在实际项目中,把这些脚本配上crontab定时运行,能提前发现很多潜在问题。有次就是靠这个脚本发现了临时表空间暴涨,及时处理避免了生产事故。