先说说我为什么非要写这个。上周有个朋友在客户现场装Oracle,图形界面弹不出来,运维那边又只给了个SSH终端,他急得满头大汗打电话问我。其实这活儿真不难,静默安装说白了就是提前把答案写好,让安装程序自己照着做。你只要掌握了套路,比点鼠标还省事。

静默安装的核心就一个文件——response file,也就是响应文件。这玩意儿相当于给Oracle安装程序的一份问卷,你把所有答案都填好,它就不问了,直接按你的意思装。Oracle安装包里有现成的模板,在database文件夹下的response目录里,三个文件:dbinstall.rsp、dbca.rsp和netca.rsp。我习惯先把它们复制到/home/oracle下,一是避免权限问题,二是改坏了还能从原文件恢复。
改响应文件这一步,很多人栽跟头。别用Windows的记事本去改,编码格式不对,Oracle会报字符集错误。在Linux下用vi或者sed都行。最关键的是这几个参数:oracle.install.option选INSTALLDBSWONLY,只装软件不建库;ORACLEBASE和ORACLEHOME的路径必须事先建好,比如/u01/app/oracle和/u01/app/oracle/product/12.2.0/dbhome1;UNIXGROUPNAME填oinstall;ORACLEHOSTNAME写你机器的主机名,用hostname命令查一下。还有那个INVENTORYLOCATION,是Oracle的清单目录,装完东西它得记个账。
有个坑我必须提醒你,那个oracle.install.db.InstallEdition参数,填EE还是SE。EE是企业版,功能全,但如果你只是测试用,SE就够。还有oracle.install.db.OSDBAGROUP和OSOPERGROUP,这俩填dba和oper。别小看这几行,填错了后面启动监听、建库全给你报错。我见过有人把这两个组填反了,结果装了三次才成功。
改完响应文件,用oracle用户跑安装命令。命令长这样:./runInstaller -silent -responseFile /home/oracle/dbinstall.rsp。跑之前先检查一下/tmp空间够不够,至少2G。命令敲下去后,终端会刷刷刷输出日志,看到“Successfully Setup Software”就说明软件装好了。要是报错也别慌,去看$ORACLEHOME/cfgtoollogs下的日志,那里有详细原因。最常见的是依赖包没装齐,比如libaio、glibc-devel这些,用yum装一下再跑就行。
软件装完,还得建库。这就轮到dbca.rsp上场了。同样改参数:gdbName填你的库名,比如orcl;sid填orcl;characterSet选AL32UTF8,别选ZHS16GBK,虽然中文能存,但以后做数据迁移容易出乱码;memoryPercentage填40,给数据库40%的物理内存,多了浪费,少了不够;templateName选GeneralPurpose.dbc这个通用模板,省事。还有那个listeners参数,填LISTENERORCL,一会儿用netca配置监听时要用这个名字。
建库命令是:dbca -silent -responseFile /home/oracle/dbca.rsp。这一步时间比较长,得等个十分钟左右。看到“Database creation complete”就成功了。完成后用sqlplus / as sysdba连进去验证一下,执行个select name from v$database,能查出库名就算齐活。
别忘了配置监听器。虽然建库时自动配了个,但最好还是手动跑一遍netca。命令:netca -silent -responsefile /home/oracle/netca.rsp。这个很快,秒完。配完用lsnrctl status检查一下,看到“Service registered”就说明监听工作正常。这一步要是漏了,远程客户端连不上数据库,白忙活。
说两个我踩过的坑。第一个是环境变量,装完一定要在.bashprofile里配好ORACLEHOME、ORACLE_SID和PATH,不然每次打开终端都得手动export,烦死。第二个是内核参数,装之前检查一下kernel.sem、kernel.shmmax这些值,用sysctl -a看看,不达标就改/etc/nf,加完执行sysctl -p生效。这两个地方做好了,整个安装过程能少一半报错。
说到底,Oracle静默安装就是个细心活。把响应文件改对,命令跑对,日志看明白,基本一次就能过。就算出了问题也别怕,那些日志文件写得清清楚楚,报什么错就解决什么问题。等你装完一遍,下次再遇到这活儿,闭着眼都能搞定。


