阿里云ECS部署Oracle 19c RAC实战指南:AFD+私网直连+静默安装
简介本资源是一份面向DBA、云平台运维工程师及Oracle高可用架构实践者的实战手册聚焦阿里云ECS环境下CentOS 7.6系统部署Oracle 19c双节点RAC集群的全流程——从硬件选型、存储与网络规划到Grid Infrastructure安装、ASM磁盘组配置、数据库实例创建再到性能优化与日常维护。手册覆盖OCR/DATA/FRA三类ASM磁盘组的容量与冗余设计如OCR需3×30GB NORMAL冗余、Public/Private双网隔离、SCAN与HAIP配置要点、透明大页禁用等关键细节并包含chrony时间同步、swap分区设置、DNS/hosts解析等操作系统级准备规范。资源为单个PDF文件共1个大小6.56MB内容结构完整、图文结合、步骤翔实含真实ECS参数8核Xeon、16GB内存、3TB SSD共享存储与IP规划示例。目前已有1524人学习下载是落地云上Oracle RAC高可用方案不可多得的一站式参考指南。1. 为什么在阿里云ECS上部署Oracle 19c RAC不是“照着文档点下一步”就能成功的你手头有一台阿里云ECS比如ecs.g7.4xlarge系统是CentOS Linux 7.6目标是搭一套生产可用的Oracle 19c RAC双节点集群——但别急着下载安装包。真实场景里83%的失败不是出在runInstaller卡住而是发生在第0步环境准备没对齐云平台的底层约束。阿里云ECS没有物理共享存储不支持裸设备直通udev规则在云盘上根本不起作用CentOS 7.6默认内核3.10.0-957对oracleasm驱动兼容性差而RAC依赖的cvu校验工具会直接报PRVF-9802: Failed to scan devices更隐蔽的是阿里云VPC网络下eth0是弹性网卡private interconnect若用bond0或teamd绑定心跳包延迟抖动超20ms就会触发cssd反复重启。这不是本地VMware里装个RAC的复刻这是把一个为物理机SAN设计的高可用架构硬塞进云原生基础设施的缝隙里。本手册不讲“Oracle RAC原理”只聚焦在阿里云ECS这个确定性环境中让两个CentOS 7.6节点真正跑起来、稳住、能维护——所有命令、参数、检查点都来自我在线上三套生产集群含金融核心账务库的血泪验证跳过玄学调优直给可抄作业的配置。2. 环境初始化绕开阿里云ECS的三大硬件幻觉阿里云ECS的“虚拟化”不是透明的。RAC对存储、网络、内核的假设在云上全要重写。这里不做理论推演只列必须执行的初始化动作每一步都对应一个真实翻车现场。2.1 存储层用ASM Filter Driver替代ASMLib禁用udev规则阿里云不提供/dev/oracleasm设备管理器oracleasm服务在CentOS 7.6上已废弃systemctl start oracleasm会报Unit oracleasm.service not found。强行用fdisk分区mkfs.ext4再挂载给ASM用不行——ASM要求裸设备或符合AFD规范的块设备且需规避云盘多路径导致的设备名漂移如/dev/vdb重启后变/dev/vdc。正确做法启用ASM Filter DriverAFDAFD是Oracle 12.1官方推荐的云环境ASM设备过滤层它通过内核模块拦截I/O请求自动识别并锁定云盘设备无需udev规则# 1. 确认内核版本兼容CentOS 7.6 3.10.0-957及以上 uname -r # 输出应为 3.10.0-957.el7.x86_64 或更高 # 2. 安装AFD内核模块需oracle-grid软件包非单独下载 # 假设grid安装介质解压在 /stage/grid cd /stage/grid ./runInstaller -silent -ignorePrereq -waitForCompletion \ -responseFile /stage/grid/response/gridsetup.rsp \ ORACLE_HOME/u01/app/19.0.0/grid \ INVENTORY_LOCATION/u01/app/oraInventory \ oracle.install.optionCRS_CONFIG \ ORACLE_BASE/u01/app/oracle \ oracle.install.asm.OSDBAasmdba \ oracle.install.asm.OSOPERasmoper \ oracle.install.asm.OSASMasmadmin \ oracle.install.crs.config.scanTypeLOCAL \ oracle.install.crs.config.gpnp.scanNamescan-rac \ oracle.install.crs.config.gpnp.scanPort1521 \ oracle.install.crs.config.clusterNamerac-cluster \ oracle.install.crs.config.gpnp.configureGNSfalse \ oracle.install.crs.config.autoConfigureClustertrue \ oracle.install.crs.config.nodeAddfalse \ oracle.install.crs.config.useIPMIfalse \ oracle.install.asm.configureAFDtrue \ oracle.install.asm.storageOptionASMSP \ oracle.install.asm.diskGroup.nameDATA \ oracle.install.asm.diskGroup.redundancyEXTERNAL \ oracle.install.asm.diskGroup.AUSize4 \ oracle.install.asm.diskGroup.disks/dev/vdb,/dev/vdc \ oracle.install.asm.diskGroup.diskDiscoveryString/dev/vd*关键参数说明oracle.install.asm.configureAFDtrue强制启用AFD非默认值oracle.install.asm.diskGroup.disks指定云盘设备名/dev/vdb等必须是未格式化、未挂载的裸块设备oracle.install.asm.diskGroup.diskDiscoveryString/dev/vd*AFD扫描范围避免因设备名变化漏盘redundancyEXTERNAL云盘本身有三副本ASM不做冗余省IO、降延迟安装后验证AFD状态# 检查AFD模块是否加载 lsmod | grep afd # 应输出类似oracleafd 123456 0 - Live 0x0000000000000000 (O) # 查看AFD管理的磁盘 /u01/app/19.0.0/grid/bin/asmcmd afd_lsdsk # 输出示例-------------------------------------------------------------------------------- # Label Filtering Path # # DATA1 ENABLED /dev/vdb # DATA2 ENABLED /dev/vdc2.2 网络层用ip link绑定私网禁用NetworkManager干扰RAC私网private interconnect要求低延迟、高吞吐、零丢包。阿里云ECS的eth0是弹性网卡受宿主机调度影响大若用bond0mode1 active-backup做私网ifconfig bond0显示的MAC地址会随主备切换变化导致cssd心跳超时。正确方案是用独立网卡如eth1作为私网通过ip link静态绑定彻底绕过NetworkManager。# 1. 确认ECS已分配第二块弹性网卡ENI并绑定到同一VPC交换机 # 在阿里云控制台操作ECS实例 - 网络与安全 - 弹性网卡 - 创建并绑定 # 2. 禁用NetworkManager对eth1的管理防止其覆盖配置 echo NM_CONTROLLEDno /etc/sysconfig/network-scripts/ifcfg-eth1 # 3. 配置eth1为私网假设规划IPnode1192.168.100.10, node2192.168.100.11 cat /etc/sysconfig/network-scripts/ifcfg-eth1 EOF DEVICEeth1 BOOTPROTOstatic ONBOOTyes IPADDR192.168.100.10 NETMASK255.255.255.0 NM_CONTROLLEDno PEERDNSno EOF # 4. 重启网络不重启NetworkManager systemctl restart network # 5. 关键用ip link设置私网MTU为9000jumbo frame降低小包开销 ip link set eth1 mtu 9000 # 永久生效追加到ifcfg-eth1 echo MTU9000 /etc/sysconfig/network-scripts/ifcfg-eth1为什么不用bondbond模式1/4在云上无意义无物理链路聚合bond的ARP监控在VPC内不可靠易误判链路downip link直管更轻量cssd心跳包实测延迟稳定在0.3~0.8msvs bond的1.2~5ms抖动2.3 内核与系统参数CentOS 7.6专属补丁CentOS 7.6的kernel-3.10.0-957存在两个RAC致命缺陷semmsl参数默认值250低于Oracle 19c要求≥32768net.core.somaxconn默认128导致listener连接队列溢出必须修改/etc/sysctl.conf并永久生效# 追加以下参数注意不要删除原有内容用追加 cat /etc/sysctl.conf EOF # Oracle 19c RAC required kernel params fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967295 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 net.core.somaxconn 65535 # Aliyun ECS specific fix: disable transparent_hugepage vm.transparent_hugepage never EOF # 加载新参数 sysctl -p # 验证sem值必须显示250 32000 100 128 ipcs -l | grep semaphores # 输出应为max number of arrays 4096, max semaphores per array 250, ...vm.transparent_hugepagenever是阿里云ECS必加项CentOS 7.6默认启用THP但RAC的oracle进程内存分配模式与THP冲突会导致oraagent.bin频繁OOM被kill此参数必须写入/etc/sysctl.conf仅sysctl -w临时设置无效重启后恢复3. Grid Infrastructure安装跳过CVU的“假阳性”校验runInstaller前的cvuCluster Verification Utility校验是RAC部署最耗时的环节。在阿里云ECS上cvu会因云环境特性报一堆“警告”但其中只有3个是真问题其余可安全忽略。盲目按CVU提示改配置反而破坏云平台稳定性。3.1 过滤CVU真实错误只关注这3个PRVF代码运行CVU前先手动预检# 1. 下载CVU脚本grid安装包自带 /u01/app/19.0.0/grid/cv/admin/cvu_config # 编辑此文件注释掉以下两行避免CVU检测NTP阿里云ECS用chrony且已同步 # ntpchecktrue # ntpserverchecktrue # 2. 手动执行CVU只关注PRVF-开头的ERROR非WARNING /u01/app/19.0.0/grid/cv/cvutl/cvusys -n node1,node2 -f /tmp/cvu.log必须修复的3个PRVF错误其他WARNING可忽略PRVF代码现象原因解决PRVF-9802Failed to scan devicesAFD未启用或磁盘未被AFD识别执行/u01/app/19.0.0/grid/bin/asmcmd afd_lsdsk确认ENABLED状态若为空检查/dev/vd*权限chown grid:asmadmin /dev/vd*PRVF-9203Node connectivity failed on private interfaceeth1未配置或MTU不一致ping -s 8972 192.168.100.11发jumbo包若丢包则检查两端ip link show eth1 | grep mtu是否均为9000PRVF-9436Time synchronization failedchrony未运行或偏移1ssystemctl status chronyd若inactive则systemctl enable --now chronydchronyc tracking显示Offset应500msCVU WARNING可忽略清单常见但无害PRVF-9652: DNS response time is greater than 15000 ms→ 阿里云DNS解析慢不影响RAC通信PRVF-9707: Package cvuqdisk not installed→cvuqdisk是物理机OCR投票盘工具云上用AFD无需此包PRVF-9222: NTP daemon not running→ 已用chronyd替代CVU未识别3.2 静默安装Grid用响应文件绕过图形界面陷阱阿里云ECS无GUIrunInstaller默认启动OUI图形界面会失败。必须用响应文件response file静默安装并显式关闭cvu自动校验避免卡在假错误# 1. 复制模板响应文件grid安装包内 cp /stage/grid/response/gridsetup.rsp /tmp/grid_rsp.rsp # 2. 修改关键参数用sed批量替换 sed -i s/^oracle.install.option.*$/oracle.install.optionCRS_CONFIG/ /tmp/grid_rsp.rsp sed -i s/^ORACLE_BASE.*$/ORACLE_BASE\/u01\/app\/oracle/ /tmp/grid_rsp.rsp sed -i s/^INVENTORY_LOCATION.*$/INVENTORY_LOCATION\/u01\/app\/oraInventory/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.OSDBA.*$/oracle.install.asm.OSDBAasmdba/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.OSOPER.*$/oracle.install.asm.OSOPERasmoper/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.OSASM.*$/oracle.install.asm.OSASMasmadmin/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.scanType.*$/oracle.install.crs.config.scanTypeLOCAL/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.gpnp.scanName.*$/oracle.install.crs.config.gpnp.scanNamescan-rac/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.gpnp.scanPort.*$/oracle.install.crs.config.gpnp.scanPort1521/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.clusterName.*$/oracle.install.crs.config.clusterNamerac-cluster/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.gpnp.configureGNSfalse$/oracle.install.crs.config.gpnp.configureGNSfalse/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.crs.config.autoConfigureClustertrue$/oracle.install.crs.config.autoConfigureClustertrue/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.configureAFDtrue$/oracle.install.asm.configureAFDtrue/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.storageOption.*$/oracle.install.asm.storageOptionASMSP/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.diskGroup.name.*$/oracle.install.asm.diskGroup.nameDATA/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.diskGroup.redundancy.*$/oracle.install.asm.diskGroup.redundancyEXTERNAL/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.diskGroup.AUSize.*$/oracle.install.asm.diskGroup.AUSize4/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.diskGroup.disks.*$/oracle.install.asm.diskGroup.disks\/dev\/vdb,\/dev\/vdc/ /tmp/grid_rsp.rsp sed -i s/^oracle.install.asm.diskGroup.diskDiscoveryString.*$/oracle.install.asm.diskGroup.diskDiscoveryString\/dev\/vd\*/ /tmp/grid_rsp.rsp # 3. 执行静默安装关键-ignorePrereq 忽略CVU-waitForCompletion 等待完成 cd /stage/grid ./runInstaller -silent -ignorePrereq -waitForCompletion \ -responseFile /tmp/grid_rsp.rsp \ -ignoreSysPrereqs # 4. 安装后执行root脚本两节点均需 /u01/app/oraInventory/orainstRoot.sh /u01/app/19.0.0/grid/root.sh-ignorePrereq不是偷懒是必要操作CVU在云上误报率超60%-ignorePrereq跳过其自动触发我们已手动验证了3个真错误-ignoreSysPrereqs跳过yum install类检查云上已预装所有依赖若root.sh报CRS-2672: Attempting to start ora.cssd后卡住立即检查/u01/app/19.0.0/grid/log/rac1/cssd/ocssd.log90%是私网不通见3.1表4. Oracle Database安装与RAC配置用srvctl管理拒绝sqlplus硬编码Grid安装成功后crsctl check cluster应显示CRS-4537: Cluster Ready Services is online。此时安装Oracle Database软件只是“填空”真正的RAC灵魂在srvctl命令和init.ora参数。切记不要用dbca图形向导它会生成单实例模板RAC需手动配置。4.1 静默安装Database软件只装二进制不建库# 1. 复制DB响应文件模板 cp /stage/database/response/db_install.rsp /tmp/db_rsp.rsp # 2. 修改关键参数注意ORACLE_HOME与Grid分离 sed -i s/^oracle.install.option.*$/oracle.install.optionINSTALL_DB_SWONLY/ /tmp/db_rsp.rsp sed -i s/^ORACLE_HOSTNAME.*$/ORACLE_HOSTNAMEnode1/ /tmp/db_rsp.rsp sed -i s/^UNIX_GROUP_NAME.*$/UNIX_GROUP_NAMEoinstall/ /tmp/db_rsp.rsp sed -i s/^INVENTORY_LOCATION.*$/INVENTORY_LOCATION\/u01\/app\/oraInventory/ /tmp/db_rsp.rsp sed -i s/^SELECTED_LANGUAGES.*$/SELECTED_LANGUAGESen,zh_CN/ /tmp/db_rsp.rsp sed -i s/^ORACLE_HOME.*$/ORACLE_HOME\/u01\/app\/oracle\/product\/19.0.0\/dbhome_1/ /tmp/db_rsp.rsp sed -i s/^ORACLE_BASE.*$/ORACLE_BASE\/u01\/app\/oracle/ /tmp/db_rsp.rsp sed -i s/^oracle.install.db.InstallEdition.*$/oracle.install.db.InstallEditionEE/ /tmp/db_rsp.rsp sed -i s/^oracle.install.db.isCustomInstall.*$/oracle.install.db.isCustomInstalltrue/ /tmp/db_rsp.rsp sed -i s/^oracle.install.db.customComponents.*$/oracle.install.db.customComponentsoracle.rdbms.partitioning:19.0.0.0.0,oracle.rdbms.advanced_security:19.0.0.0.0,oracle.rdbms.dv:19.0.0.0.0/ /tmp/db_rsp.rsp # 3. 静默安装两节点均执行 cd /stage/database ./runInstaller -silent -ignorePrereq -waitForCompletion \ -responseFile /tmp/db_rsp.rsp \ -ignoreSysPrereqs # 4. 运行root脚本 /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.0.0/dbhome_1/root.sh4.2 用DBCA命令行建RAC数据库指定ASM磁盘组与实例名dbca图形界面会忽略RAC特有参数必须用命令行模式并显式指定-nodelist和-storageType ASM# 1. 设置环境变量以grid用户执行 export ORACLE_HOME/u01/app/19.0.0/grid export PATH$ORACLE_HOME/bin:$PATH export ORACLE_SIDASM1 # 先连ASM实例 # 2. 确认ASM磁盘组已mount sqlplus / as sysasm EOF SELECT name, state, type FROM v$asm_diskgroup; EXIT; EOF # 输出应有DATA MOUNTED EXTERNAL # 3. 用dbca创建RAC数据库关键参数-nodelist, -storageType, -datafileDestination dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname racdb \ -sid racdb \ -responseFile /tmp/dbca.rsp \ -characterSet AL32UTF8 \ -sysPassword Oracle123# \ -systemPassword Oracle123# \ -dbsnmpPassword Oracle123# \ -sysmanPassword Oracle123# \ -emConfiguration NONE \ -nodelist node1,node2 \ -storageType ASM \ -diskGroupName DATA \ -datafileDestination DATA \ -recoveryAreaDestination DATA \ -recoveryAreaSize 10240 \ -totalMemory 4096 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement true \ -redoLogFileSize 500 \ -sampleSchema false \ -oratabLocation /etc/oratab \ -ignorePreReqs # 4. 验证数据库实例状态 srvctl status database -d racdb # 输出应为Instance racdb1 is running on node node1 # Instance racdb2 is running on node node2-nodelist node1,node2是RAC建库的核心开关若遗漏此参数dbca会建单实例库后续无法转RAC-storageType ASM强制使用ASM避免误选文件系统-datafileDestination DATA指定ASM磁盘组而非/u01/oradata等路径4.3 srvctl深度管理比sqlplus更懂RAC的生命周期RAC不是两个独立实例而是一个协同体。sqlplus / as sysdba只能管单实例srvctl才是真·RAC控制器# 查看所有资源含监听、ASM、DB、VIP srvctl status asm -n node1 srvctl status listener srvctl status database -d racdb # 启停单个实例不影响另一节点 srvctl stop instance -d racdb -i racdb1 srvctl start instance -d racdb -i racdb1 # 启停整个数据库两节点同时操作 srvctl stop database -d racdb srvctl start database -d racdb # 添加/删除服务应用连接负载均衡关键 srvctl add service -d racdb -s racapp -r racdb1,racdb2 -P BASIC -e SELECT -m BASIC -z 180 -w 5 srvctl start service -d racdb -s racapp # 应用连接URLjdbc:oracle:thin:(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOSTscan-rac)(PORT1521))(CONNECT_DATA(SERVICE_NAMEracapp))) # 检查服务状态确认负载均衡生效 srvctl status service -d racdb -s racapp # 输出应含racapp is running on nodes: node1 node2-P BASIC参数决定故障转移行为BASIC客户端连接断开后自动重连到存活节点需JDBC 12.2NONE不重连由应用处理不推荐PRECONNECT预建立连接池但增加启动时间5. 日常维护与避坑那些让DBA凌晨三点爬起来的“经典翻车”RAC部署完成只是开始。在阿里云ECS上运维RAC有5个高频、高危、文档不提的坑每个都导致过生产事故。这里不讲理论只列现象、根因、一招解决。5.1 现象crsctl check crs显示CRS-4638: Oracle High Availability Services is online但crsctl stat res -t中ora.DATA.dg状态为OFFLINE原因AFD磁盘组未自动注册到CRS。Grid安装时若-responseFile中oracle.install.asm.diskGroup.name拼写错误如写成data而非DATA或/dev/vdb权限被root意外修改AFD无法加载磁盘但CRS服务本身仍能启动。解决# 1. 检查AFD磁盘状态 /u01/app/19.0.0/grid/bin/asmcmd afd_lsdsk # 2. 若显示DISABLED重新扫描并启用 /u01/app/19.0.0/grid/bin/asmcmd afd_scan /dev/vd* /u01/app/19.0.0/grid/bin/asmcmd afd_filter -e /dev/vdb /u01/app/19.0.0/grid/bin/asmcmd afd_filter -e /dev/vdc # 3. 手动启动磁盘组无需重启CRS sqlplus / as sysasm EOF ALTER DISKGROUP DATA MOUNT; EXIT; EOF # 4. 注册到CRS永久生效 srvctl add diskgroup -g DATA -d /dev/vdb /dev/vdc srvctl start diskgroup -g DATA5.2 现象select * from gv$instance只返回一个节点gv$session中inst_id恒为1原因第二个节点的oracle进程未正确加入集群。常见于/etc/oratab中racdb2:/u01/app/oracle/product/19.0.0/dbhome_1:N末尾的N表示不自动启动或grid用户的ORACLE_HOME环境变量未指向/u01/app/19.0.0/grid。解决# 1. 检查node2的/etc/oratab确保racdb2行末为:Y sed -i s/:N$/:Y/ /etc/oratab # 2. 检查node2的grid用户环境.bash_profile中ORACLE_HOME必须是grid路径 su - grid -c echo \$ORACLE_HOME # 应输出/u01/app/19.0.0/grid # 3. 重启node2的CRS强制重载配置 crsctl stop crs crsctl start crs5.3 现象srvctl status database -d racdb显示Instance racdb1 is running on node node1但ps -ef | grep pmon查不到ora_pmon_racdb1进程原因pmon进程被OOM Killer杀死。CentOS 7.6内核OOM机制在内存紧张时优先杀oracle进程日志在/var/log/messages中可见Out of memory: Kill process 12345 (ora_pmon_racdb1) score 850...。解决# 1. 检查OOM记录 dmesg -T | grep -i killed process # 2. 降低Oracle内存压力永久 echo vm.swappiness 1 /etc/sysctl.conf sysctl -p # 3. 为oracle用户设置内存限制防止单实例吃光内存 echo oracle soft memlock 4194304 /etc/security/limits.conf echo oracle hard memlock 4194304 /etc/security/limits.conf # 4194304 4GB单位KB根据实际内存调整总内存*0.7 # 4. 重启oracle用户会话使limits生效 pkill -u oracle5.4 现象tnsping scan-rac正常但应用连接报ORA-12514: TNS:listener does not currently know of service requested且lsnrctl status显示Service racapp has 1 instance(s)但Instance racdb1状态为UNKNOWN原因racapp服务未在实例启动时自动注册。local_listener参数未正确指向本节点的VIP或remote_listener未指向SCAN。解决# 1. 登录racdb1实例检查监听参数 sqlplus / as sysdba EOF SHOW PARAMETER local_listener SHOW PARAMETER remote_listener EXIT; EOF # 2. 若local_listener为空或错误修正node1执行 sqlplus / as sysdba EOF ALTER SYSTEM SET local_listener(ADDRESS(PROTOCOLTCP)(HOSTnode1-vip)(PORT1521)) SCOPEBOTH; ALTER SYSTEM SET remote_listenerscan-rac:1521 SCOPEBOTH; ALTER SYSTEM REGISTER; -- 立即注册服务 EXIT; EOF # 3. node2同理local_listener指向node2-vip5.5 现象crsctl delete resource ora.racdb.db后crsctl stat res -t仍显示ora.racdb.db为INTERMEDIATE状态无法删除原因CRS资源依赖关系未清理。ora.racdb.db依赖ora.LISTENER.lsnr和ora.DATA.dg若先删DB资源CRS卡在等待依赖释放。解决必须按顺序执行# 1. 先停所有依赖资源 srvctl stop database -d racdb srvctl stop listener srvctl stop diskgroup -g DATA # 2. 再删资源按依赖逆序 crsctl delete resource ora.racdb.db -f crsctl delete resource ora.LISTENER.lsnr -f crsctl delete resource ora.DATA.dg -f # 3. 清理OCR中残留万不得已时 # 注意此操作危险仅当上述无效时用 /u01/app/19.0.0/grid/bin/ocrconfig -showbackup # 找到最近备份用ocrconfig -restore还原6. 生产级验证与性能基线用真实SQL压测拒绝“能连就行”部署完成不等于可用。RAC的价值在于高可用与扩展性必须用生产级验证方法证明它真的“扛得住”。我在线上用三套标准验证流程每套都对应一个业务场景。6.1 高可用验证模拟节点宕机测RPO0与RTO30秒目标验证单节点故障时应用无感知切换数据零丢失。步骤# 1. 在node1启动持续插入模拟业务写入 sqlplus / as sysdba EOF CREATE TABLE t_test AS SELECT level id, data_||level val FROM dual CONNECT BY level 1000; BEGIN FOR i IN 1..10000 LOOP INSERT INTO t_test VALUES (i10000, data_||(i10000)); COMMIT; DBMS_LOCK.SLEEP(0.1); END LOOP; END; / EOF # 2. 在应用端如Java程序持续查询 # URL: jdbc:oracle:thin:(DESCRIPTION(ADDRESS(PROTOCOLTCP)(HOSTscan-rac)(PORT1521))(CONNECT_DATA(SERVICE_NAMEracapp))) # 查询SQL: SELECT COUNT(*) FROM t_test; # 3. 在node1执行强制宕机模拟硬件故障 echo 1 /proc/sys/kernel/sysrq echo c /proc/sysrq-trigger # 4. 观察应用日志应在30秒内自动重连到node2查询结果持续增长无报错 # 5. 登录node2检查SELECT COUNT(*) FROM t_test; 应与宕机前一致RPO0关键指标RTO恢复时间30秒从节点宕机到应用重连成功RPO恢复点目标0无数据丢失若RTO60秒检查sqlnet.ora中SQLNET.EXPIRE_TIME2启用死连接检测6.2 负载均衡验证用AWR报告确认跨实例负载分摊目标验证racapp服务将SQL请求均匀分发到两节点。步骤# 1. 在两节点同时开启AWR快照间隔10分钟 sqlplus / as sysdba EOF EXEC dbms_workload_repository.create_snapshot(); EXIT; EOF p a hrefhttps://download.csdn.net/download/weixin_40855926/65457799 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p

相关新闻

ASP.NET C#大型ERP源码实战解析:库存并发、审批流与部署避坑

ASP.NET C#大型ERP源码实战解析:库存并发、审批流与部署避坑

简介:这是一套基于ASP.NET与C#开发的大型综合管理系统源码,面向中高级.NET开发者及企业级后台系统学习者,适用于ERP、OA、CRM等通用管理平台的二次开发与架构参考。资源包大小为52.88MB,虽未提供具体文件总数与类型明细&#xff0…

2026/9/23 16:57:00 阅读更多 →
Java大作业双人联机森林冰火人源码拆解:Swing+Socket实现

Java大作业双人联机森林冰火人源码拆解:Swing+Socket实现

简介:这份资源是面向高校计算机相关专业学生的Java课程设计参考项目,主题为双人联机小游戏森林冰火人,适合作为期末大作业、课程设计或毕业设计的完整实现方案,也适合刚接触Java游戏开发、希望理解联机逻辑与图形界面编程的初学者…

2026/9/23 16:57:00 阅读更多 →
坦克检测数据集1520张VOC+YOLO双格式:从数据校验到YOLOv8训练全流程

坦克检测数据集1520张VOC+YOLO双格式:从数据校验到YOLOv8训练全流程

简介:这份资源面向目标检测初学者与需要快速验证模型的研究者,提供一套可直接用于YOLO训练的坦克检测数据集,解决单一类别目标检测任务中样本获取与标注成本高的问题。压缩包共2000个文件,以1521个VOC格式xml标注文件和479个txt文…

2026/9/23 16:56:59 阅读更多 →

最新新闻

Springboot集成Tesseract OCR:从图片到字段的落地实践

Springboot集成Tesseract OCR:从图片到字段的落地实践

简介:一份面向Spring Boot开发者的OCR图片文字识别实现方案,聚焦如何整合Tesseract开源识别引擎完成图片文本自动提取,适合有Java基础、需要在文档扫描、证照识别等场景落地识别功能的读者参考。资源以PDF格式打包,共1个文件&…

2026/9/23 21:05:49 阅读更多 →
PaddleSpeech ASR 识别解码模块 paddlespeech.s2t.decoders.recog 源码深度解析

PaddleSpeech ASR 识别解码模块 paddlespeech.s2t.decoders.recog 源码深度解析

PaddleSpeech ASR 识别解码模块 paddlespeech.s2t.decoders.recog 源码深度解析 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Veri…

2026/9/23 21:05:49 阅读更多 →
观赏虾突然死亡原因分析与水质管理指南

观赏虾突然死亡原因分析与水质管理指南

1. 养虾新手的第一道坎:突然死亡事件分析那天早上掀开鱼缸盖子的场景至今难忘——昨晚还活蹦乱跳的观赏虾,今早突然横七竖八地躺在缸底。这种突如其来的死亡事件,几乎每个养虾人都会经历。不同于鱼类养殖,虾类对水质变化更为敏感&…

2026/9/23 21:05:49 阅读更多 →
papi酱最火的视频新手避坑指南与技术方案对比

papi酱最火的视频新手避坑指南与技术方案对比

papi酱最火的视频新手避坑指南与技术方案对比 看到满屏红色的 StackTrace,报错信息像天书一样滚过屏幕,是不是瞬间头大?别慌,这几乎是每个接触后端或全栈开发新手的必经之路。很多时候,你以为自己在看代码,其实是在看一场关于“papi…

2026/9/23 21:04:49 阅读更多 →
netstat 网络排查与安全分析速查指南(jaywcjlove/reference)

netstat 网络排查与安全分析速查指南(jaywcjlove/reference)

文档知识库教程开发工具 【免费下载链接】reference 为开发人员分享快速参考备忘清单(速查表) 项目地址: https://gitcode.com/jaywcjlove/reference 点击查看 免费下载 本指南以开源速查仓库 jaywcjlove/reference 中 docs/netstat.md 为骨架,系统梳理…

2026/9/23 21:04:49 阅读更多 →
PaddleSpeech DeepSpeech2 卷积下采样模块 `paddlespeech.s2t.models.ds2.conv` 源码级解析

PaddleSpeech DeepSpeech2 卷积下采样模块 `paddlespeech.s2t.models.ds2.conv` 源码级解析

人工智能语音音频 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword…

2026/9/23 21:04:49 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →