简介:本资源是一份面向数据库运维工程师、系统集成人员及Windows平台Oracle初学者的实战部署指南,聚焦Windows Server 2019环境下Oracle 11g与19c服务端及客户端的全流程安装配置。内容涵盖操作系统基础搭建(含Server 2019标准版桌面体验安装、磁盘分区管理)、Oracle 11.2.0.4服务端静默/图形化安装、19c Client连接配置(含典型连通性故障排查方案),并补充NIC网络聚合配置说明与PL/SQL工具连接实操细节,具备强落地性与排错参考价值。资源为单文件PDF文档,共1个5.13MB的图文详解手册,结构清晰、步骤翔实、截图丰富,便于按章节快速定位关键操作。目前已有1857人学习下载,适合需在新版本Windows服务器上稳定部署多代Oracle数据库的技术人员系统掌握安装规范与兼容性要点。
1. Windows Server 2019 上同时跑 Oracle 11g 和 19c:不是“能装就行”,而是“装完就用、连得稳、启得快”
你有没有遇到过这种场景:某医疗影像系统(PACS)要求 Oracle 11g,而新上的数据分析模块又强制依赖 Oracle 19c 的 JSON 表达式和自治事务特性?硬要二选一,要么改老系统——成本高、风险大;要么全换新库——迁移周期长、验证难。这份资源不是教你怎么点下一步的安装截图集,而是把Windows Server 2019 作为统一底座,让 11g(11.2.0.4)和 19c(19.3.0.0)共存运行、互不干扰、各自可管的完整落地方案。它覆盖了从 OS 层磁盘规划、服务账户权限隔离、监听器端口冲突规避、到客户端(11g/10g/19c Client + PL/SQL Developer)多版本共存连接的真实链路。特别适合需要维护遗留系统又推进技术升级的中小团队——不用买新服务器,不用重装系统,更不用在虚拟机里套虚拟机。所有操作均基于真实部署记录(2021.11.12 版本),参数、路径、注册表键值全部可抄,且已绕开 Windows Server 2019 默认策略对 Oracle 服务启动的典型拦截。如果你正卡在“装上了但连不上”“启了但监听没起来”“PL/SQL 能连 11g 却死活认不出 19c 实例”,那这篇就是为你写的。
2. Windows Server 2019 系统层准备:磁盘、账户、策略三件套必须一次做对
Oracle 在 Windows 上不是“绿色解压即用”,它的稳定性和可维护性,70% 取决于系统层是否按数据库级标准打底。尤其在 Server 2019 这个默认启用 UAC、AppLocker 和严格服务权限的新平台上,跳过这步直接装 Oracle,后面 90% 的问题都源于此。
2.1 磁盘分区与挂载点设计:为什么 C 盘只给 80GB,D/E/F 却必须提前规划?
Oracle 安装包本身不大(11g 约 2.8GB,19c 约 3.5GB),但数据库文件(datafile)、归档日志(archivelog)、闪回区(FRA)、诊断日志(ADR)会随业务增长爆炸式膨胀。Server 2019 安装时若只分一个 C 盘,后续扩容极麻烦,且 Windows 默认将临时文件、页面文件、事件日志全塞进 C 盘,极易触发空间告警导致 Oracle 实例异常终止。
提示:我们采用四盘分离法(非 RAID,纯逻辑卷),这是某高校 PACS 系统连续三年零宕机的物理基础
C::仅操作系统 + Oracle 安装程序(80GB)D::Oracle Base(D:\app\oracle)+ 所有软件主目录(product/11.2.0/dbhome_1,product/19c/dbhome_1)E::数据库文件主存储(E:\oradata\pacs11g,E:\oradata\dw19c)F::归档日志 + 闪回区(F:\archivelog,F:\fast_recovery_area)
执行步骤(全部在“计算机管理 → 存储 → 磁盘管理”中完成):
# 在 PowerShell(管理员)中确认磁盘状态(非必需,但建议) Get-Disk | Where-Object {$_.OperationalStatus -eq "Online"} | Format-Table Number, Size, FriendlyName # 创建 E 盘(简单卷,NTFS,分配单元大小 64KB —— 关键!Oracle 推荐值) # 右键未分配空间 → 新建简单卷 → 指定大小(建议 ≥500GB)→ 分配驱动器号 E: → 格式化(NTFS,64KB 分配单元,勾选“执行快速格式化”)→ 完成 # 同理创建 F 盘(建议 ≥1TB,因归档日志长期保留)为什么是 64KB 分配单元?
Oracle 数据文件以 8KB 块为单位读写,Windows 默认 4KB 分配单元会导致跨簇写入,产生额外 I/O 开销。实测在 500 并发下,64KB 单元比 4KB 提升约 18% 的db file sequential read响应速度。这不是玄学,是 Oracle 官方白皮书《Windows Platform Best Practices》第 4.2 节明确推荐。
2.2 专用服务账户创建:别再用 Administrator 或 LocalSystem 启动 OracleService!
Oracle 服务在 Windows 下必须以具有特定权限的本地用户运行,否则会出现:
ORA-12560: TNS:protocol adapter error(监听器无法绑定端口)ORA-01034: ORACLE not available(实例无法启动,报错指向内存共享段失败)- Windows 事件查看器中大量
The OracleServiceXXXX service failed to start due to the following error: %%1053
正确做法是创建两个独立账户(非域账户,纯本地):
| 账户名 | 密码策略 | 成员组 | 用途说明 |
|---|---|---|---|
ora11g_svc | 永不过期,强密码 | ORA_DBA,Perform Volume Maintenance Tasks | 专用于 Oracle 11g 实例服务 |
ora19c_svc | 永不过期,强密码 | ORA_DBA,Perform Volume Maintenance Tasks | 专用于 Oracle 19c 实例服务 |
注意:
Perform Volume Maintenance Tasks权限是关键!它允许 Oracle 进程绕过 NTFS 卷影复制(VSS)锁,在创建数据文件、重命名控制文件时避免ORA-27040: file create error。Server 2019 默认不赋予该权限给普通用户,必须手动添加。
添加方式(命令行,管理员权限):
# 创建用户(禁用交互式登录) net user ora11g_svc P@ssw0rd11g! /add /expires:never /passwordchg:no net user ora19c_svc P@ssw0rd19c! /add /expires:never /passwordchg:no # 加入本地组(需先创建 ORA_DBA 组,若不存在) net localgroup ORA_DBA ora11g_svc /add net localgroup ORA_DBA ora19c_svc /add net localgroup "Perform Volume Maintenance Tasks" ora11g_svc /add net localgroup "Perform Volume Maintenance Tasks" ora19c_svc /add # 验证(返回 0 表示成功) net user ora11g_svc | findstr "Local Group"2.3 关键组策略调整:关闭 Server 2019 对服务进程的“过度保护”
Server 2019 默认启用两项策略,会直接杀死 Oracle 后台进程:
Computer Configuration → Administrative Templates → System → Services → Launch and activation permissions for DCOM:设为DisabledComputer Configuration → Windows Settings → Security Settings → Local Policies → Security Options → User Account Control: Run all administrators in Admin Approval Mode:设为Disabled
提示:第二项关闭后,需重启服务器生效。这是血泪经验——某公司曾因未关此项,导致 Oracle 19c 的
oraagent.exe进程被 UAC 弹窗阻断,监听器始终无法注册到lsnrctl status中。
修改方式(组策略编辑器gpedit.msc):
- 打开
gpedit.msc - 导航至上述路径,双击策略 → 选择Disabled→ 点击“确定”
- 执行
gpupdate /force刷新策略(但第二项仍需重启)
3. Oracle 11g 与 19c 并行安装:路径隔离、端口错开、监听器分治
两个版本不能装在同一目录,也不能共用同一监听端口(默认 1521)。必须让它们像“两栋独立办公楼”,共享同一块地皮(Windows Server),但各自有门牌号(SID)、入口(端口)、物业(监听器配置)。
3.1 安装路径与环境变量硬隔离:为什么ORACLE_HOME必须绝对唯一?
Oracle 安装程序会向 Windows 注册表写入ORACLE_HOME键值,若两个版本共用同一路径(如都装在D:\app\oracle\product\11.2.0\dbhome_1),后安装的会覆盖前者的注册表项,导致sqlplus / as sysdba无法识别旧实例。
约定路径规范(强制遵守):
| 组件 | 11g 路径 | 19c 路径 | 说明 |
|---|---|---|---|
| Oracle Base | D:\app\oracle | D:\app\oracle | 共享 Base,但 Home 独立 |
| Oracle Home | D:\app\oracle\product\11.2.0\dbhome_1 | D:\app\oracle\product\19c\dbhome_1 | 必须不同,不可简写为dbhome_1/dbhome_2 |
| Inventory | D:\app\oraInventory | D:\app\oraInventory | 共享 Inventory(Oracle 统一管理安装记录) |
安装时关键操作:
- 11g 安装:运行
setup.exe→ “仅安装数据库软件” → 指定ORACLE_HOME = D:\app\oracle\product\11.2.0\dbhome_1 - 19c 安装:运行
setup.bat(非 setup.exe!19c Windows 安装必须用 bat 启动)→ “Set up software only” → 指定ORACLE_HOME = D:\app\oracle\product\19c\dbhome_1
注意:19c 安装程序若双击
setup.exe,会报错The operating system does not meet the minimum requirements。这是 Oracle 的已知 Bug(Doc ID 2525552.1),必须用setup.bat启动,否则安装直接失败。
3.2 SID 与监听端口规划:一个实例一个身份证,一个监听一个门牌号
| 实例名 | SID | 监听端口 | 数据库文件位置 | 用途 |
|---|---|---|---|---|
| pacs11g | PACS11G | 1521 | E:\oradata\pacs11g\ | 医疗 PACS |
| dw19c | DW19C | 1522 | E:\oradata\dw19c\ | 数据仓库 |
为什么 19c 不用 1521?
因为 11g 安装时默认监听 1521,若 19c 也抢这个端口,lsnrctl start会报TNS-12542: TNS:address already in use。端口错开是最简单可靠的方案,无需改防火墙规则(1521/1522 均需放行)。
监听器配置文件listener.ora(位于D:\app\oracle\product\11.2.0\dbhome_1\network\admin\和D:\app\oracle\product\19c\dbhome_1\network\admin\)必须分别配置:
11g 的listener.ora:
LISTENER_PACS11G = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER_PACS11G = D:\app\oracle19c 的listener.ora:
LISTENER_DW19C = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) ) ) ADR_BASE_LISTENER_DW19C = D:\app\oracle逻辑说明:
KEY = EXTPROC1521是 IPC 协议的唯一标识符,必须与端口号一致,否则本地sqlplus / as sysdba会连不上。这是 Oracle IPC 通信的硬约束,不是可选项。
启动监听器(分别进入各自ORACLE_HOME\bin目录执行):
# 启动 11g 监听 D:\app\oracle\product\11.2.0\dbhome_1\bin> lsnrctl start LISTENER_PACS11G # 启动 19c 监听 D:\app\oracle\product\19c\dbhome_1\bin> lsnrctl start LISTENER_DW19C验证是否注册成功:
# 查看 11g 监听注册的实例 D:\app\oracle\product\11.2.0\dbhome_1\bin> lsnrctl status LISTENER_PACS11G # 输出中应含:Service "PACS11G" has 1 instance(s) # 查看 19c 监听注册的实例 D:\app\oracle\product\19c\dbhome_1\bin> lsnrctl status LISTENER_DW19C # 输出中应含:Service "DW19C" has 1 instance(s)3.3 数据库创建与实例初始化:用 DBCA 图形化创建,但必须关掉“自动内存管理”
DBCA(Database Configuration Assistant)是 Oracle 官方推荐的建库工具,但在 Server 2019 上,其默认启用的“自动内存管理(AMM)”会与 Windows 内存管理冲突,导致实例启动后几秒内自动终止(alert.log中报ORA-27102: out of memory)。
正确建库流程(以 11g 为例):
- 以
ora11g_svc用户登录(或使用runas切换) - 运行
D:\app\oracle\product\11.2.0\dbhome_1\bin\dbca.bat - 选择 “Create a Database” → “General Purpose or Transaction Processing”
- SID 输入
PACS11G,全局数据库名pacs11g.example.com(可任意,但需唯一) - 关键步骤:在 “Memory” 页面 → 取消勾选 “Use Automatic Memory Management (AMM)” → 手动设置:
- Total Memory:
2048 MB(根据物理内存 1/4 分配,16GB 内存机器建议值) - SGA Target:
1536 MB - PGA Aggregate Target:
512 MB
- Total Memory:
- 在 “Character Sets” 页面 → 选择 “Use Unicode (AL32UTF8)”
- 在 “Connection Mode” 页面 → 选择 “Dedicated Server Mode”(非共享服务器,简化排错)
19c 建库同理,但注意:
- 19c DBCA 默认启用“Unified Auditing”,若不需要审计,可在 “Security Options” 中取消勾选,减少
AUD$表空间压力 - 19c 的字符集强烈建议用
AL32UTF8,避免与 11g 客户端交互时出现乱码(11g 默认也是 AL32UTF8,兼容性好)
建库完成后,检查实例状态:
-- 用 sqlplus 连接 11g D:\app\oracle\product\11.2.0\dbhome_1\bin> sqlplus /nolog SQL> connect / as sysdba SQL> select instance_name, status from v$instance; -- 应返回:PACS11G OPEN -- 用 sqlplus 连接 19c(需先 set ORACLE_HOME 和 PATH) set ORACLE_HOME=D:\app\oracle\product\19c\dbhome_1 set PATH=%ORACLE_HOME%\bin;%PATH% D:\app\oracle\product\19c\dbhome_1\bin> sqlplus /nolog SQL> connect / as sysdba SQL> select instance_name, status from v$instance; -- 应返回:DW19C OPEN4. 多版本客户端共存与连接故障排查:11g Client、10g Client、19c Client 如何不打架?
装完服务端只是开始,客户端才是用户天天打交道的地方。PL/SQL Developer、Toad、甚至 .NET 应用,都依赖 Oracle Client。但 Windows 只有一个PATH,多个 Client 的oci.dll会互相覆盖,导致“能连 11g 却连不上 19c”。
4.1 客户端安装顺序与路径规范:谁先装谁当“默认”,但必须用 TNSNAMES 显式指定
安装顺序铁律:先装低版本,后装高版本
- 先装 Oracle 10g Client(
D:\app\oracle\product\10.2.0\client_1) - 再装 Oracle 11g Client(
D:\app\oracle\product\11.2.0\client_1) - 最后装 Oracle 19c Client(
D:\app\oracle\product\19c\client_1)
原因:高版本 Client 的PATH注册会覆盖低版本,但高版本 Client向下兼容低版本数据库(19c Client 可连 11g/10g),而低版本 Client无法连接高版本数据库(11g Client 连 19c 报ORA-12514: TNS:listener does not currently know of service requested in connect descriptor)。
客户端tnsnames.ora配置(统一放在D:\app\oracle\product\19c\client_1\network\admin\):
PACS11G = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PACS11G) ) ) DW19C = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DW19C) ) )逻辑说明:
SERVICE_NAME必须与v$database.name一致(非 SID)。v$database.name是数据库全局名,v$instance.instance_name是实例名。11g 默认二者相同,19c 建库时若未指定,也默认相同。用SERVICE_NAME而非SID,是 Oracle 10g 以后的推荐方式,支持 RAC 和服务名路由。
4.2 PL/SQL Developer 连接配置:不靠环境变量,靠显式 OCI DLL 指定
PL/SQL Developer 默认读取系统PATH中第一个oci.dll,极易连错库。正确做法是:每个连接配置绑定专属 OCI DLL。
配置步骤:
- 打开 PL/SQL Developer → Tools → Preferences → Oracle → Connection
- 在 “Oracle Home” 栏留空(不填)
- 在 “OCI Library” 栏手动指定:
- 连 11g:
D:\app\oracle\product\11.2.0\client_1\bin\oci.dll - 连 19c:
D:\app\oracle\product\19c\client_1\bin\oci.dll
- 连 11g:
- 保存后,新建连接时,“Database” 下拉框会自动列出
tnsnames.ora中定义的服务名(PACS11G/DW19C)
参数说明:
OCI Library路径必须精确到oci.dll文件,不能只写到bin目录。这是 PL/SQL Developer 的硬编码逻辑,写错路径会报Unable to load library oci.dll。
4.3 常见连接问题排查:现象、原因、解决三步闭环
现象 1:PL/SQL Developer 显示“Connected to Oracle...”但执行SELECT * FROM DUAL卡住,数分钟后报ORA-12170: TNS:Connect timeout occurred
- 原因:Windows 防火墙阻止了 1522 端口(19c 监听端口),或
HOST = localhost解析失败(Server 2019 的hosts文件可能被篡改) - 解决:
# 检查端口监听状态 netstat -ano | findstr :1522 # 若无输出,说明监听器未启动或绑定失败 # 临时关闭防火墙测试(生产环境请加规则) netsh advfirewall set allprofiles state off # 检查 hosts 解析 ping localhost # 应返回 127.0.0.1,若返回 IPv6 地址(::1),则在 hosts 中加一行:127.0.0.1 localhost
现象 2:sqlplus username/password@DW19C报ORA-12514: TNS:listener does not currently know of service requested
- 原因:19c 实例未注册到监听器,常见于实例启动后未执行
alter system register,或监听器配置的HOST与v$parameter.local_listener不一致 - 解决:
-- 以 sys 登录 19c 实例 sqlplus / as sysdba SQL> show parameter local_listener; -- 若返回空或错误地址,则手动注册 SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))'; SQL> alter system register; -- 强制向监听器注册
现象 3:.NET 应用用 ODP.NET 连接 19c 报ORA-01017: invalid username/password,但用 sqlplus 能连
- 原因:ODP.NET 默认启用“密码区分大小写”,而 11g/19c 默认密码不区分大小写,但若数据库启用了
SEC_CASE_SENSITIVE_LOGON=TRUE(19c 默认开启),而应用传的密码未按大小写原样传递 - 解决:
在连接字符串中显式关闭:"User Id=username;Password=password;Data Source=DW19C;Pooling=true;Enlist=true;Unicode=true;CaseInsensitiveLogon=false;"
或在数据库侧临时关闭(不推荐生产):ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=BOTH;
现象 4:安装完 19c Client 后,原有 11g 应用突然连不上,报ORA-12638: Credential retrieval failed
- 原因:19c Client 默认启用
SQLNET.AUTHENTICATION_SERVICES=(NTS),强制走 Windows 集成认证,而老应用用的是用户名密码认证 - 解决:编辑
D:\app\oracle\product\19c\client_1\network\admin\sqlnet.ora,注释或删除该行:# SQLNET.AUTHENTICATION_SERVICES=(NTS)
重启应用即可。
5. NIC 网络聚合配置与 Oracle 高可用衔接:单网卡变双活,不只是带宽翻倍
摘要里提到的“NIC 网络聚合配置”,不是为了跑满带宽,而是为 Oracle RAC 或 Data Guard 做物理层冗余铺垫。Server 2019 原生支持 LBFO(Load Balancing/Failover),无需第三方驱动。
5.1 创建 LBFO 聚合组:两块千兆网卡绑定为一个逻辑接口
假设服务器有Ethernet和Ethernet 2两块网卡,IP 规划:
- 聚合组 IP:
192.168.10.100/24(对外服务 IP) - 11g 监听绑定此 IP:
HOST = 192.168.10.100 - 19c 监听绑定此 IP:
HOST = 192.168.10.100
创建步骤(PowerShell 管理员):
# 查看可用网卡 Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Format-Table Name, LinkSpeed, Status # 创建聚合组(LACP 模式,需交换机支持;若交换机不支持,用 Switch Independent 模式) New-NetLbfoTeam -Name "OracleTeam" -TeamMembers "Ethernet","Ethernet 2" -TeamingMode LACP -LoadBalancingAlgorithm IPAddresses # 为聚合组配置 IP New-NetIPAddress -IPAddress 192.168.10.100 -PrefixLength 24 -InterfaceAlias "OracleTeam" # 禁用原物理网卡的 IP(避免路由冲突) Disable-NetIPAddress -InterfaceAlias "Ethernet" -Confirm:$false Disable-NetIPAddress -InterfaceAlias "Ethernet 2" -Confirm:$false逻辑说明:
LoadBalancingAlgorithm IPAddresses是关键,它让流量按目标 IP 哈希分发,确保同一个数据库连接(如192.168.10.100:1521)始终走同一块物理网卡,避免 TCP 乱序。若用Dynamic算法,短连接会抖动,tnsping延迟忽高忽低。
5.2 将聚合 IP 绑定到 Oracle 监听器:让高可用真正落地
修改listener.ora(两个版本都要改):
# 11g listener.ora LISTENER_PACS11G = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.100)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) # 19c listener.ora LISTENER_DW19C = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.100)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) ) )然后重启监听器:
lsnrctl stop LISTENER_PACS11G lsnrctl start LISTENER_PACS11G lsnrctl stop LISTENER_DW19C lsnrctl start LISTENER_DW19C验证绑定:
# 查看监听器实际绑定的 IP netstat -ano | findstr :1521 # 应显示:TCP 192.168.10.100:1521 0.0.0.0:0 LISTENING <pid>5.3 故障模拟与自愈验证:拔一根网线,业务是否无感?
这是检验 NIC 聚合是否真有效的唯一方法:
- 用另一台机器持续
tnsping PACS11G(每秒一次) - 拔掉
Ethernet网线(物理断开) - 观察
tnsping输出:- 正常情况:最多丢 1~2 个包,之后全部通(<100ms)
- 失败情况:持续超时 30 秒以上,或
tnsping返回TNS-12541: TNS:no listener
提示:若失败,请检查交换机端口是否启用 LACP,或 Server 2019 聚合组状态:
Get-NetLbfoTeam -Name "OracleTeam" | Format-List *
关键字段TeamingMode必须为LACP,LoadBalancingAlgorithm必须为IPAddresses,TeamNic状态必须为Up。
6. 生产环境必做的五项加固与验证:从“能跑”到“敢上生产”的最后一公里
装完、连上、聚合好,不等于能上生产。我经手的三个类似项目,有两次翻车都在最后一步——不是技术不会,而是漏了这些“不起眼”的检查项。以下五条,是我现在每次部署 Oracle on Windows Server 的强制 checklist,少一条都不上线。
6.1 验证 Oracle 服务启动类型与恢复策略:别让一次蓝屏毁掉所有
Windows 服务默认“手动启动”,Oracle 实例必须设为“自动(延迟启动)”,且配置服务失败后的自动恢复。
操作步骤(services.msc):
- 找到服务
OracleServicePACS11G和OracleServiceDW19C - 右键 → 属性 → “常规” 页:启动类型 =自动(延迟启动)
- “恢复” 页:
- 第一次失败:重新启动服务
- 第二次失败:重新启动服务
- 后续失败:重新启动服务
- 重置失败计数:1 天
- 如果服务没有响应:重新启动服务
为什么是“延迟启动”?因为 Oracle 服务依赖 Windows Event Log、DCOM 等基础服务,Server 2019 启动时若 Oracle 先于这些服务启动,会报
Error 1053。延迟启动确保依赖服务就绪。
6.2 检查 Oracle 告警日志轮转与磁盘空间监控:alert.log不是摆设
alert.log是 Oracle 的黑匣子,但默认不轮转,几个月后可达 GB 级,占满 F 盘导致归档失败。
启用 ADR(Automatic Diagnostic Repository)轮转:
编辑D:\app\oracle\product\11.2.0\dbhome_1\database\initPACS11G.ora(或 SPFILE 中):
-- 添加以下参数(重启实例生效) diagnostic_dest='D:\app\oracle' -- ADR 自动轮转,无需人工干预验证:
SQL> show parameter diagnostic_dest; -- 应返回 D:\app\oracle SQL> host dir D:\app\oracle\diag\rdbms\pacs11g\PACS11G\trace\alert_*.log -- 应看到多个按日期命名的 alert 日志6.3 测试跨版本客户端连接:用最简命令验证最小可行链路
不要只信 PL/SQL Developer,用原生命令验证:
# 测试 11g Client 连 11g 实例(应成功) D:\app\oracle\product\11.2.0\client_1\bin> sqlplus system/oracle@PACS11G # 测试 19c Client 连 19c 实例(应成功) D:\app\oracle\product\19c\client_1\bin> sqlplus system/oracle@DW19C # 测试 19c Client 连 11g 实例(向下兼容,应成功) D:\app\oracle\product\19c\client_1\bin> sqlplus system/oracle@PACS11G # 测试 11g Client 连 19c 实例(应失败,报 ORA-12514,证明隔离有效) D:\app\oracle\product\11.2.0\client_1\bin> sqlplus system/oracle@DW19C6.4 验证监听器动态注册与服务名解析:lsnrctl services是金标准
lsnrctl status只告诉你监听器起来了,lsnrctl services才告诉你实例是否真注册成功、服务名是否可解析。
# 对 11g 监听器执行 D:\app\oracle\product\11.2.0\dbhome_1\bin> lsnrctl services LISTENER_PACS11G # 输出中必须含: # Service "PACS11G" has 1 instance(s). # Instance "PACS11G", status READY, has 1 handler(s) for this service... # 对 19c 监听器执行 D:\app\oracle\product\19c\dbhome_1\bin> lsnrctl services LISTENER_DW19C # 同理,必须含 DW19C 的 READY 实例若状态是BLOCKED或UNKNOWN,说明实例未注册,需执行alter system register。
6.5 模拟网络中断与服务重启:真正的高可用,是故障时你不用在场
这是最后一道门槛。我现在的习惯是:部署完成后,自己动手拔网线、杀监听进程、重启服务器,全程不碰键盘,只
本文还有配套的精品资源,点击获取