资讯动态

Oracle 12c runInstaller 报错 Username/Email Address Not Specified:response 文件里 DECLINE_SECURITY_UPDATE

发布时间:2026/10/3 22:00:00 来源:尧图企业网站定制
1. Oracle 12c 静默安装卡在 My Oracle Support 凭据runInstaller 报错到底在说什么Oracle 12c 的 runInstaller 静默安装是很多 DBA 和运维在批量部署数据库软件时的首选方式。它不需要图形界面靠一个 response 文件把安装参数一次性喂给安装器理论上可以做到无人值守。但真正跑过的人都知道第一次执行./runInstaller -silent -responseFile ...时十有八九会在日志里看到这么一行[WARNING] - My Oracle Support Username/Email Address Not Specified很多人第一反应是「我没填邮箱补上不就行了」于是去 response 文件里找MYORACLESUPPORT_USERNAME之类的参数结果发现填了也没用安装照样中断或者卡住。这个报错的本质其实不是让你去登录 My Oracle Support而是安装器在询问你要不要接收 Oracle 的安全更新通知如果你不明确表态它就会一直提示凭据缺失。这个场景特别典型你在内网环境、没有外网、也不想注册 Oracle 账号只想安安静静把 12c 软件装完。那正确的做法不是补邮箱而是在 response 文件里显式声明「我拒绝安全更新」也就是把DECLINE_SECURITY_UPDATES设为true。这个参数默认是false意味着安装器默认认为你愿意接收更新于是它才需要你的 My Oracle Support 凭据。一旦你把它改成true安装器就知道你不需要这个服务凭据缺失的警告自然消失。这篇文章面向的就是这类场景你手上有一台 Linux 服务器已经解压好 12c 的 database 安装包准备用 response 文件跑静默安装结果被这个警告拦住。我会带你从报错定位、response 文件配置、重跑验证到常见错误排查完整走一遍让你一次跑通无人值守安装。适合刚接触 Oracle 静默安装的运维、需要批量部署的 DBA以及被这个警告折腾过想彻底搞明白的人。需要说明的是本文不涉及任何账号注册或外部服务接入纯粹围绕本地 response 文件参数展开。你不需要 My Oracle Support 账号也不需要联网只要把参数配对安装就能继续。2. 前置准备response 文件从哪来、TaoToken 在 AI 辅助排障里的位置在动手改参数之前先把环境理清楚。Oracle 12c 的静默安装依赖两个东西安装介质和 response 文件。安装介质就是你从官方渠道拿到的linuxx64_12201_database.zip解压后的database目录。response 文件则藏在database/response/下面12c 里常见的有db_install.rsp装数据库软件和dbca.rsp建库我们这篇只关心前者。你可以先确认一下文件在不在cd /u01/app/oracle/database ls response/ # db_install.rsp dbca.rsp netca.rspdb_install.rsp是一个纯文本的键值对文件每一行形如KEYvalue。安装器读取它的时候会逐项校验。如果某个关键项没给或者给了非法值就会在日志里抛警告甚至直接退出。DECLINE_SECURITY_UPDATES就是其中一个关键项它控制安装器是否跳过安全更新配置环节。这里顺便说一个我实际排障时的习惯遇到 runInstaller 报错不要急着改参数先把日志里的报错行和 response 文件里的键对上号。Oracle 的安装日志通常在这两个位置# 安装器主日志 /tmp/OraInstall时间戳/installActions时间戳.log # 或者 $ORACLE_BASE/oraInventory/logs/installActions时间戳.log日志里出现[WARNING]的行往往紧跟着它认为缺失的参数名。比如My Oracle Support Username/Email Address Not Specified对应的就是安全更新相关的几个键。你可以在日志里搜DECLINE_SECURITY_UPDATES看安装器读到的值是什么是空、是false还是根本没读到。如果你在排障过程中想借助 AI 工具快速理解日志含义、生成配置片段可以用 TaoToken 这类聚合入口来调用大模型。它的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。对于「把这段 Oracle 日志翻译成人话」「帮我生成一份 db_install.rsp 模板」这类需求直接丢给模型对话就行入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。需要长期做运维脚本、Agent 自动化的可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。这些只是辅助手段核心还是把 response 文件配对。前置准备清单你可以对照检查项目要求检查命令安装介质12c database 解压完成ls database/runInstallerresponse 文件db_install.rsp 存在且可写ls -l database/response/db_install.rsp临时空间/tmp 大于 500MBdf -h /tmpswap大于 150MBfree -m用户用 oracle 用户执行非 rootwhoami这些条件在 excerpt 里也提到了runInstaller 启动时会先检查 Temp space 和 swap space通过了才会继续。所以如果你看到的是空间不足的报错那是另一类问题先把空间解决再谈凭据。3. 可复制配置db_install.rsp 里 DECLINE_SECURITY_UPDATES 及相关参数怎么写现在进入正题。打开db_install.rsp找到安全更新相关的区块。12c 的 response 文件里和 My Oracle Support 凭据、安全更新有关的键主要有这几个# 是否拒绝安全更新默认 false DECLINE_SECURITY_UPDATEStrue # 以下三项在 DECLINE_SECURITY_UPDATEStrue 时可以不填 # 但如果你的模板里保留了它们建议留空或注释掉 # MYORACLESUPPORT_USERNAME # MYORACLESUPPORT_PASSWORD # SECURITY_UPDATES_VIA_MYORACLESUPPORT关键就是第一行。DECLINE_SECURITY_UPDATES默认值是false意思是「我不拒绝安全更新」安装器于是认为你需要配置 My Oracle Support进而要求用户名和邮箱。把它改成true等于告诉安装器「我明确拒绝接收安全更新」它就不再索要凭据。一个容易踩的坑是有些人的 response 文件是从别处拷来的模板里面DECLINE_SECURITY_UPDATES写成了False首字母大写或者带了引号true。Oracle 的 response 解析对布尔值比较敏感建议统一用小写true/false不要加引号。下面是一份可以直接复制的最小可用片段你把它贴到db_install.rsp对应位置即可# 安全更新配置 DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse如果你用的是 JSON 或 TOML 风格的配置管理比如自己写脚本生成 response 文件逻辑是一样的核心键名不变。比如用 shell 脚本动态生成#!/bin/bash RSP/u01/app/oracle/database/response/db_install.rsp sed -i s/^DECLINE_SECURITY_UPDATES.*/DECLINE_SECURITY_UPDATEStrue/ $RSP grep -n DECLINE_SECURITY_UPDATES $RSP执行后你应该看到DECLINE_SECURITY_UPDATEStrue除了这个键还有几个和静默安装强相关的参数建议一并确认避免装到一半又报别的错oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMEtest12c1 UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_HOME/u01/app/oracle/product/12.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPbackupdba oracle.install.db.OSDGDBA_GROUPdgdba oracle.install.db.OSKMDBA_GROUPkmdba这些参数里oracle.install.optionINSTALL_DB_SWONLY表示只装软件不建库适合后续用 dbca 单独建库的场景。ORACLE_HOSTNAME要和hostname命令输出一致否则安装器会报主机名不匹配。INVENTORY_LOCATION和ORACLE_HOME的路径要提前创建好并授权给 oracle 用户。这里要提醒一句DECLINE_SECURITY_UPDATEStrue只是跳过安全更新配置不代表安装器会跳过所有校验。它仍然会检查空间、swap、内核参数、依赖包。所以如果你改完这个参数重跑还是失败要看日志里新的报错行而不是盯着这一条。4. 重跑验证从 runInstaller 命令到日志确认安装成功参数改好之后就可以重跑了。先清理上一次失败留下的临时文件和 inventory避免干扰# 删除上次的临时安装目录 rm -rf /tmp/OraInstall* # 如果上次已经写了 inventory视情况清理 # rm -rf /u01/app/oraInventory/*然后用 oracle 用户执行静默安装。注意命令里的路径要换成你自己的cd /u01/app/oracle/database ./runInstaller -silent -force \ -responseFile /u01/app/oracle/database/response/db_install.rsp \ -ignorePrereq \ -waitforcompletion参数说明-silent表示静默模式-force允许覆盖已有安装-responseFile指定配置文件-ignorePrereq跳过部分前置检查生产环境慎用测试环境方便-waitforcompletion让命令阻塞到安装结束方便你直接看结果。如果你习惯后台跑并看 nohup 输出可以这样nohup ./runInstaller -silent -force \ -responseFile /u01/app/oracle/database/response/db_install.rsp \ -waitforcompletion nohup.out 21 tail -f nohup.out正常的话你会看到类似这样的输出不再有 My Oracle Support 的警告Starting Oracle Universal Installer... Checking Temp space: must be greater than 500 MB. Actual 9367 MB Passed Checking swap space: must be greater than 150 MB. Actual 16382 MB Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall... ... The following configuration scripts need to be executed as the root user. #!/bin/sh /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/12.2.0/dbhome_1/root.sh To execute the configuration scripts: 1. Open a terminal window 2. Log in as root 3. Run the scripts 4. Return to this terminal Successfully Setup Software.看到Successfully Setup Software就说明软件装完了。接下来按提示用 root 执行两个脚本/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/12.2.0/dbhome_1/root.sh执行完 root.sh 后安装才算真正结束。你可以验证一下ls $ORACLE_HOME/bin/sqlplus $ORACLE_HOME/bin/sqlplus -V如果 sqlplus 能正常输出版本号说明软件层没问题。这一步的验证很关键因为有些安装虽然报了 Successfully但 root.sh 没跑后续建库会失败。日志确认方面重点看 installActions 日志里DECLINE_SECURITY_UPDATES被读取的值grep -i DECLINE_SECURITY_UPDATES /u01/app/oraInventory/logs/installActions*.log如果输出里显示true并且没有My Oracle Support Username/Email Address Not Specified的警告那就说明配置生效了。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 等报错对照静默安装过程中除了凭据警告还有几类报错经常出现。我把它们和对应的排查方向整理成对照方便你按图索骥。报错一[WARNING] - My Oracle Support Username/Email Address Not Specified反复出现这是本篇的核心问题。排查顺序先确认db_install.rsp里DECLINE_SECURITY_UPDATEStrue是否真的写进去了用grep确认再确认你传给-responseFile的路径就是改过的那个文件很多人改了 A 文件却传了 B 文件最后看日志里读到的值如果还是false说明文件没被正确读取检查文件权限和路径。报错二SEVERE: [FATAL] [INS-10101] The specified response file ... is not foundresponse 文件路径写错或者 oracle 用户没有读权限。用绝对路径并chmod 644确保可读。报错三INS-08101: Unexpected error occurred伴随local proxy failed这类报错通常和网络代理配置有关。如果你的环境里设置了http_proxy之类的环境变量安装器可能会尝试走代理去连 My Oracle Support结果失败。解决办法是临时清掉代理变量再跑unset http_proxy https_proxy ftp_proxy注意这里只是清理环境变量不涉及任何网络工具的使用。内网环境本来就不该有这些变量。报错四Error reading choices或reading choices相关这通常是 response 文件里某个键的值不在允许范围内比如布尔值写成了True而不是true或者枚举值拼写错误。用grep -n逐行检查可疑键对照官方模板修正。报错五OAuth或凭据校验相关如果你在 response 文件里保留了MYORACLESUPPORT_USERNAME但填了错误的值安装器可能会尝试校验并报 OAuth 类错误。既然我们走的是DECLINE_SECURITY_UPDATEStrue路线就把这几项留空或注释掉不要填任何凭据。报错六INS-13001: Environment not set up correctly内核参数或依赖包不满足。用yum install补齐binutils、compat-libstdc、gcc、libaio等并检查/etc/sysctl.conf里的kernel.shmmax、kernel.shmall等参数。排查时有一个通用技巧把日志里[WARNING]和[FATAL]的行单独抓出来按时间顺序看往往能定位到第一个出问题的参数。grep -E WARNING|FATAL|SEVERE installActions*.log | head -50第一个 FATAL 通常就是根因后面的报错很多是连锁反应。如果你在排查过程中需要快速理解某个报错可以把日志片段贴到模型对话里问入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。需要自己写脚本批量处理 response 文件、自动生成配置的可以看 API Keys 和接入文档 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 和 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。长期做数据库自动化运维、想用 Agent 管理安装流程的Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。6. 把参数配对这件事做扎实无人值守安装的稳定套路回到最开始那个警告。它之所以让人困惑是因为措辞指向了「用户名/邮箱」让人以为要去注册账号实际上它问的是「要不要安全更新」。DECLINE_SECURITY_UPDATEStrue就是那个明确的「不要」的答复。把这个键配对警告就消失了。我在多次部署 12c 的过程中总结出一个稳定套路先准备一份干净的 response 模板把所有和外部服务相关的键统一处理——要么显式拒绝要么留空注释。然后每次安装前用grep做一次自检grep -E DECLINE_SECURITY_UPDATES|MYORACLESUPPORT|SECURITY_UPDATES db_install.rsp确认输出里DECLINE_SECURITY_UPDATEStrue其余凭据项为空或注释。这一步花不了十秒但能省掉后面反复重跑的时间。另外安装日志一定要留着。installActions日志里记录了安装器读到的每一个参数值出问题时它是唯一能告诉你「安装器到底看到了什么」的依据。养成装完就grep一遍关键参数的习惯比事后猜要靠谱得多。最后root.sh 执行完再验证一次 sqlplus确认软件层可用。到这一步你的 12c 静默安装就算真正跑通了后续建库、配置监听都可以在这个基础上继续。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑