最近帮客户折腾了一台Oracle 11g单机环境,装到一半发现监听启动后自动关闭,折腾了两个小时才定位到问题。后来想想,这类问题网上问的人一大堆,但真正把前因后果讲清楚的没几个。这篇文章就把Oracle 11g安装这件事从下载准备到安装完成、从监听配置到常见报错整体捋一遍,既照顾刚入门的新手,也能让运维老手直接拿来做排查手册。
Oracle 11g虽然已经是“老古董”了,但生产环境里依然是绝对主力,尤其是一堆传统业务系统,客户根本不愿意为升级买单。这篇文章围绕Oracle 11g安装的完整链路展开,包括版本选择、系统参数、依赖包、图形安装、静默安装、监听故障、开机自启动、冷迁移注意事项等,全都是我实际操作过的内容。如果你正在给服务器部署Oracle 11g,或者装完了出现各种奇怪问题,这篇文章应该能帮你少走不少弯路。
1. 装之前先想清楚:Oracle 11g到底适合什么场景
1.1 版本选择:11.2.0.4才是唯一值得装的版本
很多新人一听说装11g,就去官网随便下载一个安装包,装到一半发现跟教程对不上。这里必须先说清楚:Oracle 11g这个叫法覆盖了好几个版本,包括11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2、11.2.0.3、11.2.0.4。但在生产环境里,真正靠谱的只有一个:11.2.0.4。这是11g的最后一个补丁集版本,意味着它修复了大量已知bug,稳定性最好。
我见过不少装11.2.0.1的,系统跑一段时间就出现各种诡异问题,比如ORA-00600、ORA-07445,查MOS(Oracle官方支持平台)才发现都是老版本bug。所以如果你要装11g,认准11.2.0.4。下载的时候注意看文件名称,下面带11.2.0.4标记的才是对的东西,别拿个11.2.0.1的包当宝贝。
另外要提一句:11.2.0.4的安装包分Linux和Windows,两个平台的安装介质不通用。Linux x86-64的包通常是两个zip文件,名字里带linux.x64_11gR2_database字样;Windows的包则是解压后有个setup.exe。下载之前先确认清楚目标服务器的操作系统。
1.2 搞清楚自己要装哪些组件
Oracle 11g安装包解压后,里面有数据库软件、数据库实例、网格基础设施(Grid Infrastructure)等内容。单机环境必须明确一点:普通文件系统部署不需要装Grid Infrastructure。Grid是给RAC(集群)和ASM用的,单机装了纯属给自己找麻烦,启动一堆集群进程不说,还会占用大量内存端口。
安装类型上,安装向导会问你是“仅安装数据库软件”还是“创建和配置数据库”。如果数据库实例的存储路径、字符集你已经想清楚了,可以直接选“创建和配置数据库”一步到位。如果只是提前把软件准备好,之后再用DBCA建库,就选“仅安装数据库软件”。我自己习惯先装软件,再用DBCA单独建库,逻辑更清晰,出了问题也好排查。
1.3 冷迁移、等保合规这些需求,提前想好
再看热搜词里很多人关心的“Oracle 11g冷迁移”和“等保命令”。冷迁移说白了就是停库、拷贝文件、恢复启动这个过程。Oracle 11g的冷迁移不复杂,但有几个细节必须注意:数据文件、控制文件、日志文件和参数文件要全部拷贝完整,文件路径如果变了还要处理spfile里面的路径信息。这里提前讲是因为,很多人安装时随意指定了乱七八糟的目录,到迁移时才发现路径被写死,改起来非常痛苦。后面第5章我会专门展开冷迁移的操作步骤。
等保这块,11g的安全配置确实比较繁琐,但核心不外乎:关闭默认的远程操作系统认证、设置合理的密码策略、开启统一审计。这些配置在安装后做,比安装过程中临时改更可控。后面也会给出一套可以直接抄的任务清单。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的系统准备:依赖和内核参数一步不能省
2.1 硬件、内存、分区的底线要求
Oracle 11g安装的最低要求是1GB内存,但这是理论值。实际生产环境,内存小于4GB跑11g都会觉得很吃力,因为安装完启动实例后,SGA随便分个1GB,加上Oracle进程、OS本身,2GB内存就捉襟见肘了。建议至少4GB物理内存,8GB以上更好。
磁盘方面,安装Oracle软件本身只需要5GB左右的空间,但DBCA建库需要额外空间。数据文件、控制文件、重做日志、归档日志要预留足够空间,具体看业务数据量。这里特别提醒:Oracle安装包不要放在要装Oracle的磁盘分区里解压,因为安装时会读写同一块磁盘,容易引发IO瓶颈。我一般把安装包放在/u01/software,Oracle软件装到/u01/app/oracle,数据文件放/u02/oradata,尽量避免挤在一起。
交换分区方面,如果内存是4GB,建议swap配4GB;内存8GB以上,swap配8GB。太小的话,安装数据库实例时容易因为内存不足直接报错退出。
2.2 安装依赖包:最容易挂掉的一步
Linux环境下安装Oracle,依赖包缺失是最常见的问题之一,而且不同Linux发行版依赖包列表不一样。以CentOS 7/RHEL 7为例,装11.2.0.4需要以下这些包(部分可能已经存在):
bash复制binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-7.el7.x86_64
compat-libstdc++-33-3.2.3-61.el7.x86_64
gcc-4.8.2-16.el7.x86_64
gcc-c++-4.8.2-16.el7.x86_64
glibc-2.17-105.el7.x86_64
glibc-devel-2.17-105.el7.x86_64
ksh
libaio-0.3.109-12.el7.x86_64
libaio-devel-0.3.109-12.el7.x86_64
libgcc-4.8.2-16.el7.x86_64
libstdc++-4.8.2-16.el7.x86_64
libstdc++-devel-4.8.2-16.el7.x86_64
libXext-1.3.2-2.1.el7.x86_64
libXtst-1.2.2-2.1.el7.x86_64
make-3.82-21.el7.x86_64
sysstat-10.1.5-7.el7.x86_64
unixODBC-2.3.1-11.el7.x86_64
unixODBC-devel-2.3.1-11.el7.x86_64
CentOS 7上可以直接用yum批量安装:
bash复制yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst make sysstat unixODBC unixODBC-devel
如果你用的是CentOS 8或更新的系统,安装11g会麻烦很多,因为compat-libstdc++-33这类老包在默认源里已经没有了,需要去别的地方找rpm包手动装。这也是为什么我建议部署11g优先选CentOS 7或RHEL 7。
2.3 内核参数、资源限制、关闭防火墙
这是最容易跳过但影响最大的部分。Oracle对Linux内核参数有硬性检查,安装时runInstaller检测不通过,虽然可以强制忽略,但运行期容易出现性能问题甚至直接报错。
典型的/etc/sysctl.conf配置如下:
bash复制fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
重点是kernel.shmmax和kernel.shmall。shmmax是单个共享内存段的最大字节数,建议设置为物理内存的一半,例如8GB内存设4294967296;shmall是共享内存页总数,建议设成shmmax除以页大小(通常4KB)后的值。很多安装失败或者SGA分配报错,就是这两个值没配对。
修改后执行sysctl -p生效。另外还要修改/etc/security/limits.conf:
bash复制oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
同时要关闭SELinux,把/etc/selinux/config里的SELINUX=enforcing改成SELINUX=disabled。防火墙和NetworkManager在安装阶段建议先关掉,否则监听通信和Oracle内部进程通信容易出幺蛾子:
bash复制systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl status network
2.4 Oracle用户、目录规划与环境变量
安装Oracle不能直接用root用户,必须建一个专门的系统用户。我通常建oracle用户,主组oinstall,附加组dba:
bash复制groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
目录方面,Oracle默认路径是/u01/app/oracle,但这个目录不一定存在,需要先创建并授权:
bash复制mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
注意11.2.0.4对Oracle Inventory目录也有要求,默认是/u01/app/oraInventory,这个目录在安装时由root建,但是提前建好并授权可以少一些干扰。
最后是环境变量,在/home/oracle/.bash_profile末尾加:
bash复制export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export TMP=/tmp
export TMPDIR=/tmp
ORACLE_SID要和后面DBCA建库的实例名保持一致,否则进SQL*Plus时会出现连接错误。
3. 安装过程全记录:图形界面与静默安装两条路
3.1 图形化安装的关键步骤
图形化安装是最直观的方式,前提是服务器有图形环境,或者你用X11转发。Windows机器上可以用Xming或者MobaXterm转发Linux的图形界面,但延迟大、容易卡,我建议能用静默安装尽量用静默安装。
如果在有图形界面的服务器上装,解压完安装包后进入database目录,直接执行:
bash复制./runInstaller
安装界面第一个关键选择是“Skip software updates”,除非你有明确的补丁需求,否则别去联网检查更新,浪费时间。接下来选择安装类型,单机选“Install database software only”还是“Create and configure a database”取决于你的规划。我建议先选“Install database software only”,后面用DBCA建库,这样每一步都比较清晰。
选择语言时,简体中文和英语都可以,实际使用中影响不大,关键是字符集,字符集在建库时配置,跟软件语言是两回事。选完安装路径(默认就是ORACLE_HOME),系统会自动检查依赖包和内核参数,这个时候最容易弹红色警告。如果依赖包没装全,会提示缺少的包;如果只是兼容性warning,可以勾选“Ignore”继续,但千万别忽略缺失的依赖包,否则后面数据库实例起不来。
等待软件复制到ORACLE_HOME后,系统会弹窗提示你以root身份执行两个脚本:/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh。这一步是不能跳过的。执行完成后,在弹窗里点OK,软件安装就结束了。
3.2 静默安装:适合服务器批量部署
生产环境很多是没有图形界面的,静默安装就派上用场了。安装包解压后,在database/response目录下有三个模板文件:db_install.rsp、dbca.rsp、netca.rsp。我们主要改db_install.rsp。
最核心的几个参数:
bash复制oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=db-server
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryLimit=1024
oracle.install.db.config.starterdb.password.ALL=Oracle123
如果只装软件不建库,把oracle.install.option设置成INSTALL_DB_SWONLY,后面的starterdb参数就不需要了。如果软件和库一起建,设置成INSTALL_DB_AND_CONFIG,但生产环境我不建议这样,除非你对硬盘、内存、字符集规划都笃定了。
编辑好响应文件后,用oracle用户执行:
bash复制./runInstaller -silent -responseFile /path/to/db_install.rsp
安装日志在/u01/app/oraInventory/logs下,如果报错,优先看这个目录下的日志。静默安装完成后,同样需要用root执行那两个脚本。
响应文件里有一个坑:ORACLE_HOSTNAME如果填错了,安装过程会卡在域名解析上。建议填服务器的完整主机名,或者保证/etc/hosts里有一行主机名对应的解析。
3.3 建库与字符集、内存参数
安装完数据库软件,用DBCA建库。命令行方式很简单:
bash复制dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname orcl -sid orcl \
-characterSet AL32UTF8 \
-memoryPercentage 40 \
-sysPassword Oracle123 \
-systemPassword Oracle123
-memoryPercentage 40表示把物理内存的40%分配给Oracle,对于单机环境是比较均衡的选择。如果内存紧张,可以改成30,但不要低于25,否则SGA太小。
字符集这块,11g默认模板常常是AL32UTF8,如果你确定业务数据是中文,也可以选ZHS16GBK。这里要特别提醒:字符集建库后改起来非常麻烦,只能通过重建或者导入导出的方式转换,所以建库之前一定要跟开发确认清楚。UTF8能存更多语言但占用空间稍大,GBK对中文更友好但只支持中文和英文。
4. 安装后必做的几件事:监听、自启动、密码策略、用户授权
4.1 监听器配置:别急着改listener.ora
监听器(Listener)是客户端连数据库的入口。很多教程一上来就让手写listener.ora,实际上用Oracle自带的netca图形或静默工具配置更安全。
我一般直接执行静默方式:
bash复制netca /silent /responsefile $ORACLE_HOME/network/install/netca_typ.rsp
生成的listener.ora位于$ORACLE_HOME/network/admin目录下。默认监听端口是1521,如果你不想用标准端口,需要改LISTENER条目下的端口号,改完后用lsnrctl stop和lsnrctl start重启。
检查监听状态:
bash复制lsnrctl status
正常情况下应该看到STATUS为READY,服务里包含orcl这个实例。如果服务里没有实例注册,可以用alter system register;强制注册,这个在SQL*Plus里执行。
监听文件常见的坑是主机名写错。LISTENER条目里如果用主机名,务必确认主机名能被解析;如果不想依赖DNS,建议直接用IP地址,简单粗暴但有效。
4.2 开机自启动:dbstart和rc.local
Oracle 11g默认不会随系统开机自动启动数据库和监听。很多服务器一重启,数据库就挂掉,必须手动sqlplus / as sysdba执行startup,非常麻烦。配置自启动有标准流程。
先改/etc/oratab文件。这个文件在安装时会自动生成,里面有类似这样的行:
code复制orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
把最后的N改成Y,表示允许dbstart启动这个实例。
然后编辑$ORACLE_HOME/bin/dbstart,确认ORACLE_HOME_LISTNER变量不是空的,有些版本这里默认是空的,会导致监听不启动:
bash复制ORACLE_HOME_LISTNER=$ORACLE_HOME
修改完后,编辑/etc/rc.d/rc.local,添加下面两行:
bash复制su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - oracle -c "$ORACLE_HOME/bin/lsnrctl start"
注意rc.local要有可执行权限,CentOS 7上必须chmod +x /etc/rc.d/rc.local,否则开机不执行。这个细节经常有人漏掉,结果折腾半天发现rc.local根本没跑。
另外,如果数据库启动物理内存不够,启动到一半会报错,这时先看看dmesg有没有内存相关的报错。确认没问题再配自启动。
4.3 关闭密码有效期:避免莫名其妙的连接失败
Oracle 11g默认开启了密码失效策略,默认生命周期是180天,到期后用户账号会被锁定,应用直接报ORA-28001。这个问题在运维中太常见了,客户半夜打电话说业务断了,一查就是这个。
关闭或延长密码有效期的方法很简单,但要用sysdba执行:
sql复制ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
这个操作对所有使用DEFAULT profile的用户都生效。如果你想保留一定的安全性,可以设置成1800天,但说实话,对于很多内部系统,“永久有效”才符合实际,然后再通过应用层和防火墙去管控访问。
改完之后建议顺手查一下当前哪些用户已经接近过期:
sql复制SELECT username, account_status, expiry_date FROM dba_users;
如果某个用户状态是EXPIRED,说明密码已经失效,需要重置密码:
sql复制ALTER USER username IDENTIFIED BY newpassword;
4.4 创建用户并授权
安装完数据库,第一件事往往是建业务账号。有些新手喜欢直接用sys或system给应用连,这是大忌。生产环境里必须给应用单独建账号,并只授予必要的权限。
常见的需求场景是,一个业务账号能独立建表、增删改查数据,但不能操作其他用户的对象。可以这样处理:
sql复制CREATE USER apps IDENTIFIED BY apps_password DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE TO apps;
CONNECT和RESOURCE是两个经典角色。CONNECT允许登录,RESOURCE允许建表、建索引等。如果应用需要跨用户访问视图或存储过程,再额外GRANT SELECT ON schema.table TO apps;。
如果你想细粒度控制,11g还支持系统权限和对象权限分离,但大多数应用用不到,给太多反而增加安全风险。
5. 常见问题排查:从监听到迁移,一网打尽
5.1 监听启动成功后立即自动关闭
这个故障在热搜词里出现率极高。现象是执行lsnrctl start提示监听启动成功,但几秒后再看lsnrctl status就提示TNS-12541或者No listener。
我遇到的大多数情况和listener.ora里的主机名或IP配置有关,尤其是我之前提到的/etc/hosts解析问题。LISTENER条目如果定义为:
code复制LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhostname)(PORT = 1521)))
而myhostname这个主机名在系统里解析到127.0.0.1或者解析失败,监听启动后就会因为找不到有效地址而退出。
排查建议:
bash复制cat /etc/hosts
hostname
ping $(hostname)
确保主机名解析到的IP是服务器对外IP,而不是127.0.0.1。如果不想处理DNS,直接把监听文件里的主机名改成IP:
code复制LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521)))
改完后重启监听。还有一个隐蔽原因:ORACLE_HOME权限不对或者listener.ora里引用了不存在的目录,比如ADR_BASE目录没建好。可以在lsnrctl start时加-debug看详细日志:
bash复制lsnrctl start -debug
日志会精确告诉你卡在哪一步。
5.2 之前装过12c,卸载不干净导致11g装不上
这是个非常折腾的场景。服务器上原来装过12c,卸载后注册表(Windows)或者目录(Linux)残留,再装11g时,OUI(Oracle Universal Installer)检测到已有更高级的Inventory信息,直接拒绝安装。
Linux环境下,处理思路是这样的:
- 彻底删除原先的
ORACLE_BASE和ORACLE_HOME目录 - 清理
/etc/oratab文件里残留的实例行 - 清理
/u01/app/oraInventory目录 - 检查
/usr/local/bin下是否有Oracle相关的软链(dbhome、oraenv、coraenv),有就删掉 - 检查
/etc/oraInst.loc文件是否存在,这个文件记录Inventory位置,如果指向已删除的目录,也要同步修改或删除
Windows下更麻烦,注册表相关项包括HKLM\SOFTWARE\ORACLE,清理不干净会导致OUI无法安装。网上很多清除工具其实就是删这些注册表项和残留目录,但手动操作时别误删别的软件的注册表。
最好的办法是:装前先备份,装完尽量别装两个大版本在同一个环境。如果非要在同一台机器测试,建议用虚拟机快照,出问题直接回滚。
5.3 冷迁移:停库拷贝启动三步走
Oracle 11g数据库冷迁移,本质上就是数据库在完全关闭状态下,把所有物理文件复制到新机器,再在新机器上正常启动。操作不复杂,但顺序和完整性要求极高。
第一步,在源库正常关闭数据库:
bash复制sqlplus / as sysdba
shutdown immediate;
一定要确认输出是ORACLE instance shut down,而不是abort。shutdown abort后文件处于不一致状态,直接拷贝到新库启动时会要求实例恢复,反而增加不确定性。
第二步,拷贝文件。需要拷贝的清单包括:
- 控制文件:
control01.ctl、control02.ctl(具体位置从v$controlfile查) - 数据文件:所有
dbf文件 - 在线重做日志:
redo*.log spfile或pfile:- 密码文件:
$ORACLE_HOME/dbs/orapworcl - 监听和
tnsnames.ora
获取文件路径:
sql复制SELECT name FROM v$controlfile;
SELECT name FROM v$datafile;
SELECT member FROM v$logfile;
不建议直接拷贝整个/u01/app/oracle/oradata目录,而是按上面清单精确拷贝,因为新库可能只需要部分数据文件。
第三步,新机器上启动。如果目录结构和源库一致,直接:
bash复制sqlplus / as sysdba
startup;
如果目录结构变了,比如原来在/u01/oradata,现在在/u02/oradata,需要先通过pfile指定新位置:
bash复制startup pfile='/tmp/init.ora';
然后重建spfile并重启。修改控制文件的路径时,用alter database rename操作要谨慎,控制文件路径变了但内容没变的话,数据库起不来。
5.4 等保命令和安全基线:日志、审计、权限自查
现在很多客户会在部署完Oracle后要求出安全基线或者等保合规材料。11g相关的安全配置,我整理了实际经常被检查到的点。
一种是操作系统层面的检查:是否开启audit日志、是否修改默认端口、是否禁用无关服务。另一种是数据库层面的检查。
这里给出一组常用的“自查命令”,可以直接拿去做记录:
sql复制-- 查看所有用户及状态
SELECT username, account_status, expiry_date FROM dba_users;
-- 查看角色和权限
SELECT grantee, granted_role FROM dba_role_privs WHERE grantee='APPS';
SELECT grantee, privilege FROM dba_sys_privs WHERE grantee='APPS';
-- 查看审计策略
SELECT name, value FROM v$parameter WHERE name LIKE '%audit%';
-- 查看密码策略
SELECT profile, resource_name, limit FROM dba_profiles WHERE resource_name IN ('FAILED_LOGIN_ATTEMPTS','PASSWORD_LIFE_TIME','PASSWORD_LOCK_TIME');
除了审计策略本身,很多检查还要求提供“日志佐证材料”,说白了就是要有操作记录。Oracle 11g里,最直接的证据就是alert_<SID>.log,它在$ORACLE_BASE/diag/rdbms/<dbname>/<SID>/trace目录下,记录了数据库启动、关闭、备份、内部错误等关键事件。数据库层面的登录审计默认不一定开启,建议根据需求开启统一审计,但要注意审计日志本身也占据磁盘,别把文件系统撑爆。
第三点,是用户权限自查。生产环境里最常见的风险是给了普通用户过大的系统权限,比如DBA角色被授予给了应用账号。自查时可以:
sql复制SELECT * FROM dba_role_privs WHERE granted_role='DBA';
如果发现应用账号带DBA权限,强烈建议收回,只保留CONNECT、RESOURCE和最少的业务权限。安全基线检查如果发现这个问题,基本上会给你判个“高风险”。
6. 写在最后:一点个人体会
Oracle 11g安装这件事,说难不难,说简单也不简单。很多时候问题不是出在安装本身,而是前面没准备到位:依赖包缺了、内核参数没调、主机名解析错了、密码策略没关、自启动没配好。这些坑单独看都很小,但叠加起来就足够让人折腾一整天。
我在实际安装中体会到,最有价值的做法是坚持做安装记录。每次安装前把系统版本、依赖包、内核参数、安装方式、遇到的所有报错和解法记下来,下次碰到类似环境,半小时就能搞定。不要一说装11g就去网上复制一个别人的sysctl.conf,每台服务器的内存、磁盘布局、业务需求都不一样,参数一定要结合自己的环境调整。
最后再补一个小技巧:如果安装到一半报错,别急着重新装,先看安装日志里的INFO级别信息。Oracle的日志其实已经把所有线索都写出来了,只是很多人习惯只看最后几行,忽略了中间的关键报错。
希望这篇文章能帮你把Oracle 11g安装这件事真正落地,少踩一些我已经踩过的坑。
