十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CentOS 7命令行静默安装Oracle 11g R2全流程实战与避坑指南

CentOS 7命令行静默安装Oracle 11g R2全流程实战与避坑指南 1. 项目概述与核心价值如果你是一名运维工程师或者数据库管理员接到一个任务在一台全新的、只有命令行界面的 CentOS 7 服务器上部署一套稳定可用的 Oracle 11g 数据库。服务器可能位于机房深处或者干脆就是一台云主机没有图形化桌面环境。你打开浏览器搜索“CentOS 7 Oracle 11g 静默安装”扑面而来的教程要么步骤缺失要么依赖的图形化工具在纯命令行下根本用不了再不然就是各种“坑”等着你跳——依赖包冲突、内核参数不对、用户环境变量没配好任何一个环节出错都可能导致数小时的安装过程前功尽弃让人无比抓狂。这正是我写下这篇记录的原因。我刚刚亲手在一台纯净的 CentOS 7.9 最小化安装系统上完整走通了 Oracle Database 11g Release 2 (11.2.0.4) 的命令行静默安装全过程。这不是对官方文档的简单翻译而是融合了多次实战踩坑、调试、验证后梳理出的“避坑指南”。我的目标很明确提供一份详尽、可复现、每一步都有解释的操作手册让你能像执行自动化脚本一样一步步完成安装中间遇到的典型问题都有预案。我们不仅要知道“怎么做”更要明白“为什么这么做”这样才能在遇到非标准环境时也能游刃有余。静默安装的核心价值在于标准化、自动化和可重复性。它摆脱了对图形界面的依赖使得通过脚本批量部署、在CI/CD流水线中集成数据库安装成为可能。对于生产环境尤其是需要严格一致性的集群部署静默安装是唯一可靠的选择。接下来我将把整个过程拆解为清晰的步骤从系统准备到安装验证每个环节都附上我的实操心得和避坑要点。2. 前期准备系统环境与安装包核查在开始任何安装操作之前充分的准备工作是成功的一半。对于Oracle数据库安装这尤其重要因为其对于操作系统环境有着近乎苛刻的要求。2.1 操作系统与硬件要求确认首先确保你的CentOS 7系统是64位版本。在终端执行uname -m输出应为x86_64。Oracle 11g R2 不再支持32位操作系统。内存和交换空间是关键。官方最低要求是1GB内存但为了性能建议至少2GB。交换空间Swap的大小有明确公式通常为当物理内存RAM在1GB到2GB之间时Swap大小应为RAM的1.5倍。当RAM在2GB到16GB之间时Swap大小等于RAM。当RAM大于16GB时Swap大小可设为16GB。例如我的测试机有4GB内存因此我设置了4GB的Swap。你可以使用free -h命令查看当前Swap情况。如果不足可以使用dd命令创建Swap文件并激活这是一个比调整分区更灵活的方法# 创建4GB的Swap文件 sudo dd if/dev/zero of/swapfile bs1M count4096 # 设置正确的权限 sudo chmod 600 /swapfile # 格式化为Swap sudo mkswap /swapfile # 立即启用 sudo swapon /swapfile # 为了永久生效编辑 /etc/fstab添加一行/swapfile swap swap defaults 0 0磁盘空间方面Oracle软件本身需要约4.5GB数据库文件数据文件、控制文件、重做日志等根据业务量而定建议预留至少10GB以上的空间给/u01挂载点这是Oracle推荐的安装目录。使用df -h命令检查空间。注意使用Swap文件在某些极端性能场景下可能不如独立Swap分区但对于大多数测试和开发环境它完全够用且配置方便。确保swapfile所在的分区有足够空间。2.2 获取正确的Oracle安装介质这是第一个大坑。网络上流传的Oracle 11g安装包版本混乱你需要的是Oracle Database 11g Release 2 (11.2.0.4) for Linux x86-64的两个zip文件linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip11.2.0.4是11g的最终版本包含了大量的稳定性修复和补丁。强烈建议不要使用更早的版本如11.2.0.1否则你可能会在安装过程中或安装后遇到许多已知的、且难以解决的bug。下载后务必验证文件的完整性。比较可靠的方法是核对MD5或SHA256校验和。你可以将文件上传到服务器后使用md5sum命令进行计算并与官方或可靠来源提供的校验和进行比对。一个不完整的安装包会在解压或安装中途报错让你白白浪费大量时间。2.3 配置系统内核参数与资源限制Oracle数据库对Linux内核参数有一系列要求以确保其能获得足够的系统资源如共享内存、信号量、文件句柄等。这些参数需要写入/etc/sysctl.conf文件。以下是一组经过验证、适用于CentOS 7和Oracle 11g R2的推荐参数。你可以直接替换或添加到你的/etc/sysctl.conf文件中# /etc/sysctl.conf - Oracle 11gR2 Recommended Parameters fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 # 共享内存总页数。公式物理内存(字节) / 页大小(通常4096字节)。4GB内存约为 4*1024*1024*1024 / 4096 1048576这里设大一些。 kernel.shmmax 536870912 # 单个共享内存段最大字节数建议设为物理内存一半。这里512MB。 kernel.shmmni 4096 kernel.sem 250 32000 100 128 # 信号量设置SEMMSL, SEMMNS, SEMOPM, SEMMNI 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编辑保存后执行sudo sysctl -p使参数立即生效。可以通过sysctl -a | grep 参数名来验证是否生效。接下来配置用户资源限制编辑/etc/security/limits.conf在文件末尾为即将创建的Oracle用户添加如下行oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768这些限制确保了Oracle进程可以有足够的进程数、打开文件数和堆栈大小。实操心得kernel.shmmax参数非常关键。如果设置过小数据库实例可能无法启动报错类似于ORA-27123: unable to attach to shared memory segment。如果不确定可以将其设置为物理内存的80%以字节为单位。kernel.shmall的值应至少等于kernel.shmmax / PAGE_SIZE。获取页大小可以使用getconf PAGE_SIZE命令。3. 创建Oracle用户与目录结构Oracle强烈不建议使用root用户直接安装和运行数据库。我们需要创建一个专用的用户和组并规划好清晰的目录结构。3.1 创建用户组与用户首先创建主要的Oracle管理组oinstall和数据库管理员组dba。通常还会创建一个oper组操作员组但对于单实例安装dba组通常足够。sudo groupadd oinstall sudo groupadd dba sudo groupadd oper然后创建Oracle用户并将其主要组设置为oinstall附加组设置为dba和oper。同时指定家目录为/home/oracle。sudo useradd -g oinstall -G dba,oper -m -d /home/oracle -s /bin/bash oracle为用户设置一个强密码sudo passwd oracle3.2 规划与创建安装目录一个清晰的目录结构有助于日后的管理和维护。Oracle Flexible Architecture (OFA) 是一种推荐的标准。我们采用以下结构/u01/app/oracle 这是Oracle的基目录ORACLE_BASE。所有Oracle产品都将安装在此目录下。/u01/app/oraInventory Oracle清单目录用于记录所有Oracle软件的安装信息。/u01/app/oracle/product/11.2.0/dbhome_1 这是Oracle主目录ORACLE_HOME即软件安装的具体路径。/u01/app/oracle/oradata 数据库文件数据文件、控制文件、重做日志的存放目录。/u01/app/oracle/fast_recovery_area 快速恢复区FRA用于存放归档日志和备份。使用root用户创建这些目录并设置正确的权限sudo mkdir -p /u01/app/oracle /u01/app/oraInventory /u01/app/oracle/product/11.2.0/dbhome_1 /u01/app/oracle/oradata /u01/app/oracle/fast_recovery_area sudo chown -R oracle:oinstall /u01/app sudo chmod -R 775 /u01/appchmod 775确保了oracle用户和oinstall组成员有读写执行权限其他用户有读和执行权限。3.3 配置Oracle用户环境变量环境变量是Oracle软件运行的基础。以oracle用户登录su - oracle编辑其家目录下的.bash_profile文件。vi ~/.bash_profile在文件末尾添加以下内容。请务必根据你实际的目录路径进行修改# Oracle Settings export TMP/tmp export TMPDIR$TMP export ORACLE_HOSTNAMEhostname export ORACLE_UNQNAMEorcl # 你的数据库实例名 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SIDorcl # 你的数据库系统标识符通常与ORACLE_UNQNAME相同 export PATH/usr/sbin:$PATH export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib # 设置语言环境避免安装和运行中出现乱码 export LANGen_US.UTF-8 export NLS_LANGAMERICAN_AMERICA.AL32UTF8 alias sqlplusrlwrap sqlplus # 可选安装rlwrap后可以获得SQL*Plus命令行历史功能 alias rmanrlwrap rman保存退出后执行source ~/.bash_profile使环境变量在当前会话生效。以后每次以oracle用户登录都会自动加载。注意事项ORACLE_SID是实例标识符在同一台服务器上必须是唯一的。ORACLE_UNQNAME是数据库的唯一名称在RAC环境中尤为重要单实例下通常与SID相同。确保ORACLE_HOME的路径与你之前创建的目录完全一致一个字符的错误都会导致后续安装失败。4. 安装必要依赖包与解决兼容性问题CentOS 7 自带的软件包仓库可能不包含Oracle 11g R2所需的所有老版本依赖。这是静默安装中最容易卡住的地方。4.1 安装基础编译与依赖包首先确保系统是最新的并安装常用的开发工具sudo yum update -y sudo yum groupinstall -y Development Tools sudo yum install -y elfutils-libelf-devel glibc-devel glibc-headers ksh libaio-devel libgcc libstdc libstdc-devel libXext libXtst libX11 libXau libXi make sysstat unzip其中libaio-devel异步IO库和kshKorn Shell是Oracle安装程序运行所必需的缺少它们安装程序会直接报错退出。4.2 处理特定版本依赖包Oracle 11g R2是在较旧的系统上认证的因此需要一些特定版本的包。最经典的问题是binutils、compat-libstdc和glibc的版本。安装或降级 binutils CentOS 7 默认的binutils版本可能过高。你可以尝试直接安装如果后续链接器ld报错再考虑降级。sudo yum install -y binutils安装 compat-libstdc 这个兼容库至关重要。sudo yum install -y compat-libstdc-33验证 glibc 版本 执行rpm -q glibc。Oracle 11gR2 需要glibc-2.5-12以上版本CentOS 7 默认满足无需担心。安装其他可能需要的包sudo yum install -y xorg-x11-utils xorg-x11-xauth xorg-x11-server-utils尽管是静默安装但Oracle的安装程序runInstaller仍然是一个链接了X11库的二进制文件因此需要这些X11相关的包来提供必要的运行时库即使没有图形界面。缺少它们可能会导致Cannot run graphical installer之类的错误。4.3 配置依赖关系与规避已知问题有时即使安装了所有包仍可能遇到依赖问题。一个常见技巧是使用yum的provides命令来查找某个文件由哪个包提供sudo yum provides */libgcc_s.so.1如果遇到无法解决的依赖冲突可以考虑从CentOS的Vault仓库存档仓库下载老版本的rpm包进行手动安装。但务必谨慎因为这可能破坏系统其他软件的依赖。踩坑实录我在一次安装中遇到了pdksh包的问题。Oracle文档要求pdksh但CentOS/RHEL 7 默认只有ksh。经过测试ksh完全可以替代pdksh安装程序不会报错。不要费力去寻找pdksh包直接安装ksh即可。另一个坑是libXp这个库在默认仓库里可能没有需要从EPEL等第三方仓库安装或者手动下载rpm。你可以先尝试sudo yum install -y libXp如果找不到再考虑其他来源。5. 解压安装包与准备响应文件一切准备就绪后我们开始处理Oracle安装介质。5.1 解压安装文件将之前下载的两个zip文件上传到服务器的某个临时目录例如/tmp。然后以oracle用户身份解压cd /tmp unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip解压后会生成一个database目录。这就是Oracle的安装源。5.2 理解与准备响应文件静默安装的核心是一个名为“响应文件”Response File的XML文件。它包含了安装过程中所有需要手动输入的参数如安装路径、组件选择、数据库配置等。安装程序 (runInstaller) 通过读取这个文件来“自动”完成安装。在解压后的database/response目录下Oracle提供了多个响应文件模板。对于我们这种“安装软件并创建一个数据库”的典型场景我们需要db_install.rsp。首先将其复制到我们的工作目录并备份cp /tmp/database/response/db_install.rsp /home/oracle/ cd /home/oracle cp db_install.rsp db_install.rsp.bak现在用文本编辑器如vi打开db_install.rsp。我们需要修改其中关键的几十个参数。下面列出最核心的部分及其解释# 是否接受Oracle的许可协议必须设为true oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 DECLINE_SECURITY_UPDATEStrue # 是否跳过安全更新设为true跳过否则需要My Oracle Support账号 UNIX_GROUP_NAMEoinstall # 指定拥有Oracle清单的组 INVENTORY_LOCATION/u01/app/oraInventory # Oracle清单目录路径 SELECTED_LANGUAGESen # 选择安装语言英文即可 ORACLE_HOSTNAMEhostname # 主机名 ORACLE_BASE/u01/app/oracle # Oracle基目录 ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 # Oracle主目录 ORACLE_HOME_NAMEOraDb11g_home1 # Oracle主目录名称用于注册 INSTALL_TYPEEE # 安装类型EE为企业版SE为标准版 TOPLEVEL_COMPONENT{oracle.server,11.2.0.4.0} # 要安装的顶级组件 DEINSTALL_LIST{oracle.server,11.2.0.4.0} # 卸载列表与安装对应 oracle.install.db.InstallEditionEE # 数据库安装版本 oracle.install.db.isCustomInstallfalse # 是否自定义安装false为典型安装 oracle.install.db.DBA_GROUPdba # DBA用户组 oracle.install.db.OPER_GROUPoper # OPER用户组 oracle.install.db.CLUSTER_NODES # 集群节点单实例留空 oracle.install.db.config.starterdb.typeGENERAL_PURPOSE # 启动数据库类型通用 oracle.install.db.config.starterdb.globalDBNameorcl # 全局数据库名 oracle.install.db.config.starterdb.SIDorcl # 数据库SID oracle.install.db.config.starterdb.characterSetAL32UTF8 # 字符集强烈推荐UTF8 oracle.install.db.config.starterdb.memoryLimit1024 # 自动内存管理上限(MB) oracle.install.db.config.starterdb.password.ALLOracle123 # 为所有管理用户SYS, SYSTEM等设置统一密码 oracle.install.db.config.starterdb.installExampleSchemasfalse # 是否安装示例Schema oracle.install.db.config.starterdb.enableSecuritySettingstrue # 启用安全设置 oracle.install.db.config.starterdb.storageTypeFILE_SYSTEM_STORAGE # 存储类型文件系统 oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/u01/app/oracle/oradata # 数据文件位置 oracle.install.db.config.starterdb.fileSystemStorage.recoveryAreaLocation/u01/app/oracle/fast_recovery_area # 恢复区位置 oracle.install.db.config.starterdb.fileSystemStorage.recoveryAreaSize10240 # 恢复区大小(MB)重要提示DECLINE_SECURITY_UPDATES必须设为true除非你能在安装时连接到Oracle支持网站。oracle.install.db.config.starterdb.password.ALL设置的密码需要满足Oracle的复杂度要求至少8位包含字母和数字否则安装会在后期配置数据库时失败。建议使用大小写字母和数字的组合。6. 执行静默安装与运行配置脚本这是最激动人心也最需要耐心的步骤。安装过程会持续30分钟到1小时以上期间请保持网络稳定不要中断会话。6.1 启动静默安装切换到oracle用户并确保环境变量已正确加载 (source ~/.bash_profile)。然后进入安装源目录执行安装命令cd /tmp/database ./runInstaller -silent -ignorePrereq -waitforcompletion -responseFile /home/oracle/db_install.rsp让我们分解这个命令-silent: 启用静默模式。-ignorePrereq:忽略先决条件检查。这是一个关键参数。因为我们的系统环境如包版本可能与Oracle认证的精确版本有细微差别使用此参数可以跳过检查让安装继续。前提是你确信已满足了所有核心依赖如libaio, ksh等。-waitforcompletion: 让安装程序在前台运行直到完成。这样我们可以在终端看到进度日志。-responseFile: 指定我们修改好的响应文件路径。执行命令后终端会输出日志信息显示安装进度。你会看到诸如“正在复制文件”、“正在链接二进制文件”等提示。这个过程可能会很长请耐心等待不要关闭终端或中断进程。6.2 处理安装过程中的输出与错误安装程序会将详细日志写入$ORACLE_BASE/oraInventory/logs/目录下。如果安装卡住或报错这是第一个需要查看的地方。常见的错误包括空间不足检查/tmp和/u01目录的空间。权限问题确保/u01/app及其子目录的所有者是oracle:oinstall并且有写权限。依赖缺失尽管用了-ignorePrereq但像libaio.so.1这样的运行时库缺失仍会导致失败。检查日志中的具体错误信息。如果安装成功你会在最后看到类似以下的关键信息... The installation of Oracle Database 11g was successful. Please check /u01/app/oraInventory/logs/silentInstall.log for more details. As a root user, execute the following script(s): 1. /u01/app/oraInventory/orainstRoot.sh 2. /u01/app/oracle/product/11.2.0/dbhome_1/root.sh6.3 以root身份执行配置脚本安装程序要求以root用户身份执行两个脚本。这非常重要它们会完成一些需要超级用户权限的配置比如创建必要的系统文件、设置/etc/oratab等。打开另一个终端或者使用sudo -i切换到root用户然后按顺序执行sudo /u01/app/oraInventory/orainstRoot.sh这个脚本会提示你确认清单目录的权限直接按回车接受默认值即可。接着执行第二个也是更重要的脚本sudo /u01/app/oracle/product/11.2.0/dbhome_1/root.sh执行root.sh时会有一系列输出。它会提示你确认本地bin目录通常是/usr/local/bin并创建一些符号链接。请仔细阅读每一步的提示大多数情况下直接按回车接受默认值。脚本最后会显示“Finished product-specific root actions.”。踩坑实录root.sh脚本有时会失败。一个常见错误是“/etc/oratab不存在或不可写”。你可以手动创建它sudo touch /etc/oratab并确保root有写权限。另一个错误可能与/etc/init.d下的服务脚本有关如果失败可以查看脚本输出的具体错误信息通常问题不大数据库核心功能可能已经安装成功。务必查看脚本执行完毕后的最终状态信息。7. 验证安装与创建后步骤安装脚本执行完毕后并不意味着数据库已经启动并运行了。我们需要进行验证并执行一些创建后的配置。7.1 验证Oracle安装首先切换回oracle用户检查环境变量和基本命令是否可用su - oracle echo $ORACLE_HOME which sqlplus sqlplus -v如果sqlplus能正确显示版本号如SQL*Plus: Release 11.2.0.4.0说明软件安装基本成功。接下来检查监听器和数据库实例的状态。Oracle Net监听器负责处理客户端连接。安装程序可能已经启动了一个默认监听器。lsnrctl status如果监听器未运行使用lsnrctl start启动它。现在尝试连接到数据库。根据响应文件中的配置我们应该已经创建好了一个名为orcl的数据库。使用sqlplus连接sqlplus / as sysdba这条命令以操作系统认证的方式以SYSDBA特权身份连接本地数据库。如果连接成功你会看到SQL提示符。在SQL提示符下执行一些基本查询来验证数据库SELECT name, open_mode, database_role FROM v$database; SELECT * FROM v$version WHERE rownum 1;第一条语句查看数据库名称和状态应为OPEN。第二条查看数据库版本应显示11.2.0.4.0。7.2 配置监听器与网络服务虽然安装可能配置了监听器但为了确保万无一失我们检查一下监听器配置文件$ORACLE_HOME/network/admin/listener.ora。一个最基本的配置如下LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) ) ) SID_LIST_LISTENER (SID_LIST (SID_DESC (GLOBAL_DBNAME orcl) (ORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME orcl) ) )HOST可以改为你的服务器IP或主机名以便远程连接。PORT1521是Oracle默认端口。同样配置客户端连接使用的tnsnames.ora文件也在同一目录ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST localhost)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) ) )配置完成后重新加载或重启监听器lsnrctl reload # 或者 lsnrctl stop lsnrctl start7.3 设置开机自启动为了确保服务器重启后数据库和监听器能自动启动我们需要配置系统服务。在CentOS 7中我们使用systemd。首先创建Oracle数据库服务文件/etc/systemd/system/oracle-db.service(以root身份)sudo vi /etc/systemd/system/oracle-db.service内容如下[Unit] DescriptionOracle Database 11g Afternetwork.target [Service] Typeforking EnvironmentORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 EnvironmentORACLE_SIDorcl Useroracle Groupoinstall ExecStart/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart $ORACLE_HOME ExecStop/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshut $ORACLE_HOME Restarton-abort TimeoutSec300 [Install] WantedBymulti-user.target然后创建监听器服务文件/etc/systemd/system/oracle-listener.service[Unit] DescriptionOracle Net Listener Afteroracle-db.service [Service] Typeforking EnvironmentORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 Useroracle Groupoinstall ExecStart/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start ExecStop/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl stop Restarton-abort [Install] WantedBymulti-user.target启用并启动服务sudo systemctl daemon-reload sudo systemctl enable oracle-db sudo systemctl enable oracle-listener sudo systemctl start oracle-db sudo systemctl start oracle-listener使用systemctl status oracle-db和systemctl status oracle-listener检查服务状态。实操心得dbstart和dbshut脚本依赖于/etc/oratab文件。请检查该文件中是否有一行类似于orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y的记录。最后的Y表示允许dbstart自动启动此数据库。如果是N请将其改为Y。8. 常见问题排查与解决方案速查即使按照步骤操作也可能遇到意外。这里汇总了我遇到过的典型问题及其解决方法。8.1 安装阶段问题问题1执行runInstaller时提示 “无法执行二进制文件” 或 “No such file or directory”。原因 可能是安装包位数不对如用了32位包或者缺少关键的32位兼容库。解决 确认安装包是64位。运行file /tmp/database/runInstaller查看文件信息。安装glibc.i686等32位库sudo yum install -y glibc.i686 libgcc.i686 libstdc.i686。问题2安装日志中提示 “Error in invoking target ‘agent nmb’ of makefile ...”原因 这通常是由于compat-libstdc相关的问题或者gcc版本过高。解决 确保已安装compat-libstdc-33。可以尝试创建一个符号链接cd $ORACLE_HOME/sysman/lib; ln -s /usr/lib64/libstdc.so.6 libstdc.so.5。然后从安装界面重试失败的操作或在静默安装时忽略此错误有时不影响核心功能。问题3安装进度到一定比例后长时间卡住无响应。原因 可能是后台在编译某个大型组件也可能是遇到了一个需要交互的提示但静默模式无法显示。解决 首先查看详细安装日志 ($ORACLE_BASE/oraInventory/logs/installActions*.log)搜索ERROR或FATAL关键字。如果日志显示在等待某个任务可以多等一段时间半小时以上。如果确认卡死可以中断安装清理环境后重试。清理包括删除$ORACLE_BASE/*和$ORACLE_HOME/*并运行$ORACLE_HOME/deinstall/deinstall进行卸载如果可用。8.2 数据库启动与连接问题问题4sqlplus / as sysdba连接时报 “ORA-12547: TNS:lost contact”原因 通常是因为$ORACLE_HOME/bin/oracle二进制文件的权限或所属用户/组不正确。解决 以root身份检查ls -l $ORACLE_HOME/bin/oracle。它应该属于oracle:oinstall并且权限是-rwsr-s--x设置了setuid和setgid。如果不是修正它sudo chown oracle:oinstall $ORACLE_HOME/bin/oracle; sudo chmod 6751 $ORACLE_HOME/bin/oracle。问题5监听器启动失败提示 “TNS-12555: TNS:permission denied” 或 “TNS-12546: TNS:permission denied”原因 对/tmp/.oracle或/var/tmp/.oracle目录没有写权限或者SELinux阻止了访问。解决 首先检查SELinux状态getenforce。如果是Enforcing可以尝试临时关闭sudo setenforce 0。但生产环境建议配置SELinux策略。更常见的解决方法是sudo chown -R oracle:oinstall /tmp/.oracle如果目录存在。或者确保oracle用户对/tmp有写权限。问题6远程客户端无法连接但本地可以。原因 防火墙阻止了1521端口或者监听器配置的HOST是localhost。解决开放防火墙端口sudo firewall-cmd --permanent --add-port1521/tcp; sudo firewall-cmd --reload。修改listener.ora将HOST localhost改为HOST 服务器实际IP或HOST 0.0.0.0监听所有接口。修改后重启监听器lsnrctl stop; lsnrctl start。8.3 性能与配置优化提示安装完成后为了获得更好的性能和稳定性可以考虑进行以下调整在sqlplus / as sysdba下执行调整内存参数 如果服务器内存较大可以增加SGA和PGA。ALTER SYSTEM SET sga_max_size2G SCOPEspfile; ALTER SYSTEM SET sga_target2G SCOPEspfile; ALTER SYSTEM SET pga_aggregate_target512M SCOPEspfile; -- 修改后需要重启数据库 SHUTDOWN IMMEDIATE; STARTUP;调整进程与会话数 默认值可能偏小。ALTER SYSTEM SET processes500 SCOPEspfile; ALTER SYSTEM SET sessions555 SCOPEspfile;创建额外的表空间 默认的USERS表空间可能不够用建议为应用创建独立的表空间。CREATE TABLESPACE app_data DATAFILE /u01/app/oracle/oradata/orcl/app_data01.dbf SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; CREATE TEMPORARY TABLESPACE app_temp TEMPFILE /u01/app/oracle/oradata/orcl/app_temp01.dbf SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;完成所有验证和配置后你的CentOS 7命令行下的Oracle 11g数据库就已经是一个稳定、可远程访问、开机自启的生产就绪环境了。整个过程看似繁琐但每一步都有其必要性理解其背后的原理能让你在遇到变数时从容应对。记住好的开始是成功的一半严谨的前期准备和清晰的排错思路是运维工作的基石。
返回列表