尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Oracle 11gR2 Linux单机安装全流程与翻车点排查
简介面向Linux平台Oracle数据库部署学习者的11gR2单机安装图解文档针对单机环境安装流程复杂、依赖配置易出错的问题提供从前期准备到建库收尾的系统参考适合具备一定Linux与数据库基础的运维和开发人员。资源包共1个doc文档约1.73MB以图文结合方式组织内容篇幅集中、查阅方便。目前已有134人学习。文档围绕安装前package检查、Oracle用户组与环境变量配置、runInstaller启动、安装类型及企业版组件选择、Inventory目录与OS组设置、系统检查与root脚本执行等环节展开并延伸至netca监听配置和dbca建库时的服务名、字符集选择配有界面图解和常见报错提示可作为安装前的准备清单、过程中的对照手册及故障排查参考。1. 一台 8 核 16G 的测试机从下午两点装到六点卡在 Link binaries 的 79%进度条不动日志最后一行是「无法找到某个 .mk 文件」——在 Linux 上装 Oracle 11gR2翻车点往往不在主流程而在前面那些看起来「顺手就过了」的准备动作。这份图解资料的价值在这儿它把从依赖包、内核参数、oracle 用户组到 runInstaller 向导、netca 监听、dbca 建库的整条链路拆成了可对照的界面步骤适合手里有一台干净的 Linux 机器、需要把 11gR2 单机环境跑起来的人。它不教你 SQL 调优也不讲 RAC目标很朴素把库装出来、能连上、字符集不出乱码。下面按我实际复现的顺序重排一遍把每一步的参数、判断依据和翻车点补上。2. 装之前先砌地基依赖包、内核参数与 oracle 用户的落地清单11gR2 的安装器是个很老的 OUI 界面它对你系统的要求写死在检查项里绕不过去。前面这一章的所有动作本质都是让安装器启动后的 Prerequisite Checks 尽量一次全绿——不是因为它不能点 Ignore All而是被忽略的项会在建库阶段以更难看的方式回来找你。2.1 用一条 rpm 循环把依赖包一次补齐依赖包清单不用背按 11gR2 的官方要求把下面这组装齐就够覆盖单机场景。核心思路是先rpm -q判断缺了再装避免在离线环境里反复猜哪个没装。# 以 root 执行yum 源不可用时把缺的包从安装介质里找出来用 rpm -ivh 装 PKGSbinutils compat-libstdc-33 elfutils-libelf elfutils-libelf-devel \ gcc gcc-c glibc glibc-common glibc-devel glibc-headers ksh \ libaio libaio-devel libgcc libstdc libstdc-devel \ make sysstat unixODBC unixODBC-devel for p in $PKGS; do if rpm -q $p /dev/null 21; then echo [ok] $p else echo [miss] $p - installing yum install -y $p || echo !! $p 需要手工从介质安装 fi done逻辑很直白循环里先查后装把「缺哪个」变成一条条可见的输出装完再跑一遍确认全 ok。几个参数容易被忽略——compat-libstdc-33是 32 位兼容库在很多新一点的源里已经下架得从系统安装光盘的 Packages 目录里捞ksh不能拿 bash 顶11gR2 的检查项认的是 ksh 这个包名缺了会红libaio-devel和unixODBC-devel是给后续 OCI/ODBC 场景预留的即使当前不用装上也就几十兆省得日后补。gcc、make、glibc-devel这组是安装器在部分阶段编译辅助组件用的缺了会在链接阶段报错——也就是开头那个 79% 的位置。装完执行rpm -q $PKGS一把梭全部输出包名加版本号才算过。这里有个血泪经验不要在装到一半时去升级 glibc装完库再动系统库很容易把已经跑起来的实例搞成ORA-12547: TNS:lost contact。2.2 内核参数别抄错单位shmmax、shmall 与 sem 的取值内核参数是第二个高频翻车区翻车原因九成是单位。kernel.shmmax的单位是字节kernel.shmall的单位是页默认 4KB 一页很多人抄博客时把 MB 直接填进去结果 SGA 分配不出来。# 以 root 执行先按物理内存算出本机该用的值再写进 /etc/sysctl.conf MEM_KB$(awk /MemTotal/{print $2} /proc/meminfo) SHMMAX$(( MEM_KB * 1024 / 2 )) # 物理内存的一半单位字节 SHMALL$(( (SHMMAX 4095) / 4096 )) # 换算成 4K 页数向上取整 cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall ${SHMALL} kernel.shmmax ${SHMMAX} 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 EOF sysctl -pSHMMAX取内存一半是单实例的常规做法它决定了单个共享内存段的上限SGA 要落在这个范围内SHMALL是系统级共享内存总页数必须不小于 shmmax/4096否则实例启动时报ORA-27102: out of memory。kernel.sem四个值依次是 SEMMSL每个信号量集的信号量个数、SEMMNS系统总信号量数、SEMOPM单次 semop 调用允许的操作数、SEMMNI信号量集个数Oracle 给的这组250 32000 100 128是经过验证的保守值并发进程数上去之后 SEMMNS 不够会报ORA-27154。fs.aio-max-nr给到 1048576 是为了异步 IOfs.file-max管的是整个系统能打开的文件句柄这两个值在库跑起来之后如果被压测打爆表现是连接随机失败而不是明确报错属于典型的黑匣子问题。改完必须sysctl -p生效并cat /proc/sys/kernel/shmmax复核一遍别只信配置文件。配套的还有/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 32768nofile的 soft 给 1024 是 Oracle 的传统建议值实际生产里我会直接抬到 65536因为一个连接会消耗多个句柄150 个并发会话就能把 1024 顶穿症状是监听日志里大量TNS-12518。改完用su - oracle重新登录再ulimit -n验证不重登不生效。2.3 组、用户、目录权限与环境变量的正确顺序顺序不能乱先建组再建用户再建目录并授权最后写环境变量。反过来做安装器写 inventory 时会因为目录属主不对直接失败。groupadd -g 54321 oinstall # 主组管 inventory groupadd -g 54322 dba # OSDBA拥有 sysdba 权限 groupadd -g 54323 oper # 可选OSOPER useradd -u 54321 -g oinstall -G dba,oper -m -s /bin/bash oracle echo oracle | passwd --stdin oracle mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1 mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01 chmod -R 775 /u01oinstall是必须的主组oraInventory 目录归属于它dba组决定谁能sqlplus / as sysdba这个权限等于本机最高权限加人之前想清楚。目录权限给 775 而不是 777是因为安装器对 world-writable 的 ORACLE_HOME 会给出告警某些版本甚至直接拒绝。环境变量写在 oracle 用户的~/.bash_profile里export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export TMP/tmp export TMPDIR/tmp umask 022ORACLE_SID建议控制在 8 个字符以内大小写敏感后面 dbca 建库时必须和这里一模一样这是最高频的「装完了连不上」原因。NLS_LANG要跟着数据库字符集走库建的是 AL32UTF8客户端就写AMERICAN_AMERICA.AL32UTF8如果这里写成ZHS16GBK而库是 UTF-8中文查询会出问号且只在客户端侧出问题服务端一切正常排查起来很费时间。2.4 图形环境与主机名解析装之前先把这两件事坐实runInstaller 是图形程序没有可用的 X 显示就直接退出。物理机装桌面环境即可虚拟机里装的话先把增强工具装好否则窗口拉不开、按钮点不到只能看到半截界面。# 以 root 执行 hostname # 记下输出比如 db01 grep -q $(hostname) /etc/hosts || echo 127.0.0.1 $(hostname) /etc/hosts ping -c1 $(hostname) /dev/null echo 主机名解析 ok setenforce 0 # 临时关 SELinux配置文件里同步改成 permissive systemctl stop firewalld 2/dev/null || service iptables stop 2/dev/null df -h /tmp /dev/shm # /tmp 至少留 1G/dev/shm 不小于计划的内存目标 free -m # 看内存和 swapswap 一般给到内存的 1~1.5 倍主机名这一条特别值得单独说如果/etc/hosts里没有本机主机名的映射安装能过但 netca 配完监听起不来或者 dbca 建库时报ORA-00119: invalid specification for system parameter LOCAL_LISTENER。原因是监听注册时用主机名去解析地址解析不到就注册失败。这个坑我见过不止一次且报错信息完全不指向根因。/dev/shm需要单独看一眼11gR2 默认启用 AMM自动内存管理SGA 走的是/dev/shm这个目录如果只有默认的一半内存且你打算把 MEMORY_TARGET 设得很大建库到一半就会报ORA-00845后面第 5 章会细说。SELinux 建议装库期间直接 permissiveenforcing 下 oracle 用户访问某些目录会被拦表现是权限明明对但就是写不进去。3. runInstaller 的两条路图形向导与响应文件静默安装地基铺完安装器本身其实是最省事的一段。它有两种走法图形向导适合第一次装、想看清楚每一步在干什么响应文件静默安装适合第二次、第三次或者要写进自动化脚本。两条路的产物完全一样区别只在于参数从哪里来。3.1 两片介质解压到同一目录的硬性要求11gR2 的安装介质是两个 zip必须解压到同一个父目录下合并成一个完整的database目录。分开解压是最常见的翻车原因之一安装器能启动向导也能走完但到链接二进制那一步会报找不到文件因为stage/Components里的内容被切成了两半。su - oracle cd /home/oracle unzip -q linux.x64_11gR2_database_1of2.zip unzip -q linux.x64_11gR2_database_2of2.zip # 两片合起来才是一个完整的 database 目录 ls database/ # 应能看到 install response rpm runInstaller stage welcome.html du -sh database/stage # 体积应该是单片的两倍左右明显偏小说明第二片没合进来unzip不加-d默认解到当前目录两个包都会写成database/同名目录自动合并这正是我们要的效果。如果之前解错过一次别在原目录上覆盖先rm -rf database再重来残留的半套文件比全新的更难排查。解压完顺手确认database/runInstaller有执行权限没有就chmod x。介质放在/home/oracle下就行不要放在 NFS 挂载点上安装器对网络文件系统有额外检查容易节外生枝。3.2 图形向导里真正值得停下来看的六个界面向导一共十几屏大部分点 Next 就过但有六处值得停下来确认其余按默认走。第一处是 Configure Security Updates内网环境直接取消勾选填邮箱会尝试连外网连不上就卡在那儿转圈。第二处是 Installation Option选Install database software only也就是只装软件不建库——这一步是有意为之把装软件和建库拆开出问题时能分清是哪一段的问题而且建库阶段可以反复重来而不必重装软件。第三处是 Grid Options单机选Single instance database installation。第四处是 Product Languages英文加简体中文就够多选只会拉长安装时间。第五处是 Database Edition选 Enterprise EditionOptions 保持默认。第六处是 Installation LocationORACLE_BASE填/u01/app/oracleORACLE_HOME会自动带出/u01/app/oracle/product/11.2.0/dbhome_1和之前环境变量里写的保持一致别在这里临时改路径。再往后是 Create Inventory目录填/u01/app/oraInventory组选oinstallPrivileged OS Groups 里 OSDBA 选dbaOSOPER 选oper。然后是 Prerequisite Checks这一屏如果有红色项点右上角的 Details 看具体缺什么能补就补实在补不了再 Ignore All但要把失败项记下来——第 5 章那些坑一半是从这里埋下的。点 Install 之后是漫长的文件拷贝和链接最后弹出两个脚本要 root 执行。安装器自己不会去跑它们得你手动切到 root 终端。3.3 用 db_install.rsp 走静默安装第二次装就没必要点十几屏了。介质里自带响应文件模板拷出来改关键项即可。cd /home/oracle/database cp response/db_install.rsp /home/oracle/db_install.rsp需要改的项不多下面这些是必须落到实处的oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen,zh_CN ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.DBA_GROUPdba oracle.install.db.OPER_GROUPoper DECLINE_SECURITY_UPDATEStrue SECURITY_UPDATES_VIA_MYORACLESUPPORTfalseoracle.install.optionINSTALL_DB_SWONLY对应图形界面的「只装软件」DECLINE_SECURITY_UPDATEStrue这一行是静默安装的生死开关不设成 true安装器会在安全更新检查那一步直接失败退出日志里只有一句很含糊的错误。cd /home/oracle/database ./runInstaller -silent \ -responseFile /home/oracle/db_install.rsp \ -ignorePrereq \ -waitforcompletion-silent关闭图形界面-responseFile指定参数文件-ignorePrereq跳过前置检查第一次装建议去掉这个参数让检查跑一遍-waitforcompletion让命令前台阻塞直到装完方便直接看输出。静默安装的进度只能靠日志路径在/u01/app/oraInventory/logs/installActions*.log用tail -f跟一遍比盯着终端猜要靠谱。3.4 root.sh 只在最后跑一次别提前也别重复不管走哪条路最后都会要求 root 执行两个脚本顺序不能反# 以 root 执行两个都在软件安装完成之后跑 /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh第一个脚本设置 inventory 目录权限并生成/etc/oraInst.loc第二个脚本会建/etc/oratab、给若干二进制文件设 setuid、把$ORACLE_HOME/bin加进一些系统路径过程中会问一次 local bin 目录默认/usr/local/bin直接回车。跑完检查一下两个文件cat /etc/oraInst.loc # inventory_loc 与 inst_group 要对 cat /etc/oratab # 应有一行 orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Noratab里最后一列是N表示不让 dbstart 自动拉起单机环境保持 N 就行改成 Y 之后重启机器会自动起库忘了这回事的人经常在维护窗口被「库怎么自己起来了」搞懵。root.sh 重复执行会出问题它内部有幂等判断但不完整真跑重了就看日志手工修权限别硬着头皮再跑第三遍。4. 装完软件只是半成品监听、建库与字符集的收尾到这一步$ORACLE_HOME下已经有了一套完整的二进制但没有实例、没有监听、没有任何数据。剩下的三件事——配监听、建库、验字符集——才是决定这套环境能不能用的关键。4.1 netca 生成 listener.ora先确认主机名能被解析监听配置用 netca图形界面一路 Next 也能成但我更习惯直接写文件因为可控。注意执行身份谁跑的 runInstaller就用谁跑 netca 和 dbca。网上不少流程写着在 root 下敲 netca、dbca我实际试下来是行不通的root 身份启动会因为属主校验和日志目录权限直接报错而且生成的配置文件属主会变成 root后续 oracle 用户反而读不了。su - oracle $ORACLE_HOME/bin/netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp静默模式生成的$ORACLE_HOME/network/admin/listener.ora大致是LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST db01)(PORT 1521)) (ADDRESS (PROTOCOL IPC)(KEY EXTPROC1521)) ) ) ADR_BASE_LISTENER /u01/app/oracleHOST这里写的是主机名而不是 IP这就是为什么 2.4 节要先确认/etc/hosts里有映射。写 IP 虽然也能起但换机器、改网段之后监听会莫名其妙失效写主机名让解析交给系统统一管。PORT默认 1521如果这台机器上已经有别的实例在用改成 1522 之后客户端连接串也要跟着改。配完启动并检查lsnrctl start lsnrctl statusstatus输出里要有Service orcl has 1 instance(s)之类的信息软件刚装完还没建库时这里只显示监听本身和PLSExtProc属于正常建库之后实例会自动注册进来。4.2 dbca 建库SID 一致性是硬约束建库用 dbca图形向导足够友好但参数化建库更省事尤其是需要重复搭环境的时候。export ORACLE_SIDorcl dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl \ -sid orcl \ -sysPassword Sys_Pass#01 \ -systemPassword Sys_Pass#01 \ -characterSet AL32UTF8 \ -datafileDestination /u01/app/oracle/oradata \ -redoLogFileSize 100 \ -totalMemory 2048 \ -sampleSchema false \ -emConfiguration NONE-gdbname是数据库全局名-sid是实例名这两个在单机场景下保持一致最省心关键是-sid必须等于环境变量里的ORACLE_SID否则sqlplus / as sysdba会连到一个不存在的实例上报ORA-01034: ORACLE not available。-characterSet AL32UTF8决定库的字符集建完再改代价很大下面单独说。-totalMemory 2048给的是 AMM 的目标值单位 MB会写进memory_target机器内存紧张就往下调但别低于 1G否则 SGA 和 PGA 抢内存库能起来但一压就挂。-emConfiguration NONE跳过企业管理器配置省内存也省十几分钟单机测试环境没必要开。-sampleSchema false不建示例用户避免多出几个默认密码的账号。建库过程的日志在$ORACLE_BASE/cfgtoollogs/dbca/orcl/如果卡在某个百分比不动先去看这个目录下的 trace比盯着终端有用。4.3 UTF-8 到底选哪个AL32UTF8 与 ZHS16GBK 的判断字符集这块值得多花两分钟因为选错了后期基本只能靠导出重建。Oracle 里的UTF8和AL32UTF8不是一回事UTF8是早期的三字节实现AL32UTF8才是标准 UTF-8支持四字节字符比如部分生僻字和 emoji。新库一律选AL32UTF8别选UTF8。-- 建库后核验这条查询返回的必须是 AL32UTF8 select parameter, value from nls_database_parameters where parameter in (NLS_CHARACTERSET,NLS_NCHAR_CHARACTERSET);什么时候选ZHS16GBK只有一种情况上下游系统老业务系统、某些国产中间件明确要求 GBK 编码且改造代价大于新建库。这时候客户端NLS_LANG要跟着写SIMPLIFIED CHINESE_CHINA.ZHS16GBK两边不一致就会出现「服务端查出来正常、客户端显示问号」的经典问题。还有个容易忽略的点NLS_LENGTH_SEMANTICS。默认是BYTE也就是varchar2(10)表示 10 个字节UTF-8 下一个汉字占 3 字节实际只能存 3 个汉字。新库建议设成CHAR避免应用侧按字符数设计表结构时反复踩ORA-12899: value too large for column。4.4 用 sqlplus 与 lsnrctl 做三项冒烟验证建库完成后按顺序做三项验证任何一项不过都别急着交付。export ORACLE_SIDorcl # 第一项本地以 sysdba 身份连进去确认实例状态 sqlplus -s / as sysdba EOF set pages 0 select status from v$instance; select name, open_mode from v$database; select value from nls_database_parameters where parameterNLS_CHARACTERSET; exit EOF期望输出是OPEN、READ WRITE、AL32UTF8三行。第二项走网络连接验证监听和实例注册是否正常sqlplus -s system/Sys_Pass#01//127.0.0.1:1521/orcl EOF select net ok from dual; exit EOF第三项验证中文这是最容易出问题也最容易被跳过的一步sqlplus -s system/Sys_Pass#01//127.0.0.1:1521/orcl EOF create table t_cs_test(n varchar2(20)); insert into t_cs_test values(中文测试); select n, length(n), lengthb(n) from t_cs_test; drop table t_cs_test; exit EOFlength返回 4、lengthb返回 12说明当前会话按 UTF-8 处理一个汉字三字节如果lengthb返回 8说明实际走的是 GBK 或 GB18030和库的字符集对不上问题出在客户端NLS_LANG而不是数据库。5. 五个真实翻车现场安装与建库阶段的排查清单下面这五条是复现这套流程时最常撞上的每一条都按「现象、原因、解决」写能对号入座就不用从头猜。5.1 安装到中途报找不到文件两片介质解压位置不一致现象向导走到 Link binaries 阶段大约 70% 到 80% 之间报错退出日志里出现类似「无法找到 xxx.mk」「No such file or directory」而前面所有步骤都显示正常。原因两个 zip 被解压到了不同目录或者第二片解压时用了-d指定了别的路径导致database/stage/Components只有一半内容。安装器启动和大部分界面都不依赖那半个目录所以直到链接阶段才暴露。解决删掉整个database目录重新解压到同一父目录用du -sh database/stage和第一片单独解压的体量对比确认。已经装了一半的先跑一次$ORACLE_HOME/oui/bin/runInstaller -deinstall清理再重新来不要在原目录上覆盖。5.2 ORA-00845/dev/shm 装不下 MEMORY_TARGET现象dbca 建库到 40% 左右失败日志里是ORA-00845: MEMORY_TARGET not supported on this system但free -m看内存明明够。原因11gR2 的 AMM 用/dev/shm做共享内存载体这个目录的默认大小通常是物理内存的一半而memory_target如果设得接近或超过这个值就分配不出来。解决先看df -h /dev/shm把memory_target下调到它的一半以内或者直接改挂载参数把它放大/etc/fstab里给/dev/shm加size4G后重新挂载。前者更稳妥后者虽然能解决但要注意别把物理内存挤爆。5.3 监听起不来与 ORA-00119主机名没进 hosts现象lsnrctl start卡住或报TNS-12545dbca 建库时报ORA-00119: invalid specification for system parameter LOCAL_LISTENER或者实例起来了但lsnrctl status里看不到服务。原因listener.ora里的HOST写的是主机名而/etc/hosts里没有这个主机名的映射或者映射到了一个已经失效的 IP。解析失败时监听无法绑定地址实例注册也失败。解决hostname拿到真实主机名在/etc/hosts里加一行127.0.0.1 主机名多网卡环境写实际业务 IPping -c1 主机名通了再重启监听。改完记得lsnrctl reload或直接 stop/start光改文件不重载没用。5.4 netca/dbca 权限报错谁装的软件就用谁跑现象在 root 下执行netca或dbca界面能弹出但配置写到一半报「无法写入日志文件」或「权限不足」生成的listener.ora属主是 root之后 oracle 用户启动监听又报读不了配置。原因Oracle 的配置助手会往$ORACLE_BASE/cfgtoollogs和$ORACLE_HOME/network/admin写文件这两个路径属主是 oracleroot 跑会改变文件属主破坏原本的权限模型。解决一律su - oracle之后再执行。已经搞乱的文件用chown -R oracle:oinstall $ORACLE_HOME/network/admin $ORACLE_BASE/cfgtoollogs修回来别用chmod 777糊弄那只是把问题往后推。5.5 静默安装无输出直接失败response file 里漏了关键开关现象./runInstaller -silent -responseFile ...跑了几十秒就退出终端只有一行提示让去看日志日志里也没有明确指向参数。原因db_install.rsp里的DECLINE_SECURITY_UPDATES没设成true安装器在安全更新环节无法完成交互静默模式下直接判定失败。另一个常见原因是ORACLE_HOME和ORACLE_BASE的路径关系不对比如把ORACLE_HOME写成了ORACLE_BASE的父目录。解决把DECLINE_SECURITY_UPDATEStrue和SECURITY_UPDATES_VIA_MYORACLESUPPORTfalse两行补上并确认ORACLE_HOME确实是$ORACLE_BASE/product/11.2.0/dbhome_1这种层级。改完先跑一次不带-ignorePrereq的版本让前置检查把路径问题也一并报出来。6. 装完之后的三件事字符集核验、连接压测与一次冷备份环境能连上不等于能交付。我一般会再做三件事加起来不到二十分钟但能挡掉后面八成「装完就出问题」的返工。第一件是字符集的双向核验前面 4.4 节已经做过单向的补一个反向的用一个明确按 GBK 编码保存的文本文件通过 sqlldr 导入看是否报ORA-01401以此确认服务端不会悄悄按错误编码解析数据。第二件是并发连接的粗压测不是性能测试只是确认监听和进程数撑得住# 以 oracle 用户执行起 50 个并发会话各查一次看失败率 for i in $(seq 1 50); do ( sqlplus -s system/Sys_Pass#01//127.0.0.1:1521/orcl EOF select 1 from dual; exit EOF ) /dev/null 21 || echo conn $i failed done wait echo done跑完没有 failed 输出说明监听、进程数、nofile都还撑得住。这一步看着简陋但它能在交付前把 5.3 和 2.2 里那几个资源上限问题提前暴露比上线后半夜被叫起来强。第三件是建库后的第一份冷备份。11gR2 装完的原始状态是最干净的基线这时候备一份后面怎么折腾都能退回来#!/bin/bash # 冷备脚本仅在无人使用的窗口执行 export ORACLE_SIDorcl export ORACLE_HOME/u01/app/oracle/product/11.2.0/dbhome_1 $ORACLE_HOME/bin/sqlplus -s / as sysdba EOF shutdown immediate exit EOF tar -czf /backup/orcl_base_$(date %Y%m%d).tar.gz \ /u01/app/oracle/oradata \ $ORACLE_HOME/dbs $ORACLE_HOME/bin/sqlplus -s / as sysdba EOF startup exit EOFshutdown immediate保证数据文件一致$ORACLE_HOME/dbs里是参数文件、密码文件和 orapw一起备了才算完整。恢复时反过来停库、解包、覆盖、起库十分钟内能回到干净状态。做完这三件事我会把几个关键值抄在一张纸上贴到机柜ORACLE_SID、字符集、memory_target、监听端口、sys/system密码归属。都是很土的办法但换人接手、或者半年后自己回来改配置时这几个值能省掉大量翻文档的时间。从那以后我每次装库不管多急都会先把/etc/hosts的主机名映射和db_install.rsp里的那个DECLINE_SECURITY_UPDATES强制核对一遍——这两个地方出问题时的报错信息离真正的原因实在太远了。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

移动端WebView虚拟按键适配方案:原生与H5混合实践

移动端WebView虚拟按键适配方案:原生与H5混合实践

1. 问题背景与现状分析 在移动端混合开发中,WebView与原生组件的交互一直是个棘手问题。特别是当设备底部存在虚拟导航栏时,H5页面底部的Tabbar经常会被遮挡,导致用户无法正常操作。这个问题在全面屏设备上尤为突出,因为不同厂商的…

📅 2026/11/4 17:32:35
codex接入中转站API无法生成图片:本地适配层排查与归一化方案

codex接入中转站API无法生成图片:本地适配层排查与归一化方案

最近碰到一个挺典型的事:有朋友把 codex 的接口地址换成了第三方中转服务,聊天、补全、改代码都正常,唯独让他画张图,不是回一句"当前模型不支持图像生成",就是终端里吐半行链接然后卡死。他那套 key 拿去别…

📅 2026/11/4 17:32:35
DeepSeek V4.1 Flash实测:低成本高响应的轻量级模型部署与集成指南

DeepSeek V4.1 Flash实测:低成本高响应的轻量级模型部署与集成指南

刚把 DeepSeek V4.1 Flash 接到工作流里的那一周,我最大的感受是:这个型号把很多我以为“得靠满血版硬顶”的活,悄悄接过去了。标题说它“有点不一般”,不是在吹,而是它在成本、速度、产出质量三条线上同时给出了一些惊…

📅 2026/11/4 17:27:33
MORE NEWS

更多资讯

📰

Vim插件生态全景与高效开发实践指南

1. 编辑器生态中的Vim项目全景 在开发者工具生态中,Vim及其衍生项目始终保持着独特的生命力。作为终端环境下的高效文本编辑器,Vim通过插件体系形成了庞大的工具生态。GitHub作为全球最大的代码托管平台,自然成为Vim相关项目的主要集散地。这…

📰

大模型入门到微调实战:一条少走半年弯路的学习路线

大模型这个词这两年火得有点不讲道理,但真正想系统入门的人,往往卡在第一步:资料太多、路线太乱、术语太密。我见过太多人一上来就啃《深度学习》花书,啃到第三章反向传播就放弃了;也见过有人直接冲去微调大模型&#…

📰

冷热电多微网系统储能配置与双层优化实践

1. 项目背景与核心价值冷热电多微网系统是当前能源互联网领域的前沿研究方向,它通过整合分布式发电、储能设备和多元负荷,实现区域内能源的高效协同利用。而储能电站作为系统中的关键缓冲环节,其配置优化直接影响整个微网系统的经济性和可靠性…

📰

2026年个人网盘评测与选型指南

1. 个人网盘市场现状与需求分析2026年的个人网盘市场已经进入成熟期,各大服务商在存储技术、传输效率和功能整合方面都有了显著提升。作为一名长期使用各类网盘进行工作和生活资料管理的用户,我发现当前用户的核心痛点已经从单纯的"存储空间大小&qu…

📰

性能测试报告撰写指南:核心价值与实战技巧

1. 性能测试报告的核心价值与定位性能测试报告是软件质量保障体系中至关重要的交付物,它不仅是技术团队评估系统能力的依据,更是项目决策的关键参考。在我参与的23个企业级系统测试项目中,一份专业的性能测试报告往往能提前暴露80%以上的线上…

📰

上位机与下位机通信实战:分工、协议帧设计与联调排错

1. 先理清角色分工:上位机与下位机到底谁管什么“上位机”和“下位机”这两个词,在这行里几乎天天被提起。**上位机(Host Computer)**通常指那台带屏幕、有操作系统、能跑图形界面的设备——工控机、笔记本、平板、服务器都算&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬