文章目录一、 Windows 下的 Oracle 服务架构1. 服务与进程分类图2. 服务详解与“省内存”建议二、 核心原理连接方式与监听器1. 连接路径流程图三、 重点解析sqlplus 的两种工作模式️ 模式一本地特权连接 (Bequeath Protocol)️ 模式二网络连接 (TCP/IP)四、 总结对照表与核心结论1. 常见工具连接方式对照2. 核心结论 (一句话记忆)一、 Windows 下的 Oracle 服务架构在 Windows 环境中Oracle 的运行依赖于系统服务。你可以把服务看作是控制 Oracle 各个组件进程的“开关”。1. 服务与进程分类图 辅助服务 (按需/建议关闭) 核心服务 (必须启动)启动进程启动进程启动进程OracleServiceORCL数据库实例服务Oracle...TNSListener监听器服务OracleDBConsoleorcl网页控制台 (OEM)Oracle ORCL VSS Writer卷影拷贝备份OracleJobScheduler定时任务调度OracleMTSRecovery分布式事务恢复oracle.exe(数据库本体)tnslsnr.exe(网络门卫)java.exe / oc4j.exe(非常吃内存!)2. 服务详解与“省内存”建议服务名称对应进程作用与比喻学习期建议OracleServiceORCLoracle.exe发动机。加载内存(SGA)启动后台进程。没它数据库就是死的。⚠️必须启动TNSListenertnslsnr.exe前台/门卫。监听 1521 端口负责接待外部连接请求。✅用工具必启OracleDBConsoleoc4j.exe网页管理界面。提供浏览器端的 OEM 管理功能。❌关掉(太占内存)其他服务各种小进程备份(VSS)、定时任务(Job)、分布式事务(MTS)。❌关掉省内存大招学习时将所有 Oracle 服务设为**“手动”**。每次学习只启动OracleServiceORCL和TNSListener即可电脑瞬间流畅二、 核心原理连接方式与监听器很多初学者会困惑“为什么有时候不用启动监听器也能连上数据库”答案在于客户端工具不同走的“通信路径”也不同。1. 连接路径流程图⚙️ 服务端进程 通信路径️ 客户端进程1. 直接通信2. 网络请求2. 网络请求3. 转交请求sqlplus.exe(本地特权模式)PL/SQL Developer(第三方工具)sqlplus.exe(网络模式 orcl)IPC / 共享内存(内部专用通道)TCP/IP 网络协议(端口 1521)tnslsnr.exe(监听器进程)oracle.exe(数据库实例)三、 重点解析sqlplus 的两种工作模式sqlplus是 Oracle 自带的命令行工具它非常特殊因为它同时具备两种工作模式️ 模式一本地特权连接 (Bequeath Protocol)命令sqlplus / as sysdba原理不走网络。利用操作系统的IPC (进程间通信)或共享内存。sqlplus.exe进程直接在操作系统层面找到oracle.exe进程“握手”连接。比喻你是公司老板SYS你有内部通道的钥匙。你直接从老板专用电梯进入办公室完全不需要经过一楼的前台监听器。条件必须在数据库本机操作且当前 Windows 用户属于ORA_DBA组通常是 Administrator。️ 模式二网络连接 (TCP/IP)命令sqlplus system/密码orcl原理走标准网络协议。客户端发送数据包到服务器的1521 端口。必须由监听器进程 (tnslsnr.exe)接收请求验证后再把请求“转交”给数据库实例。比喻你是外部访客。你必须走正门经过**前台监听器**登记前台确认你有预约后才把你领进办公室。如果前台下班了监听器没开你就进不去。四、 总结对照表与核心结论1. 常见工具连接方式对照客户端工具典型命令/行为通信方式是否经过监听器适用场景sqlplus (本地)sqlplus / as sysdbaIPC / 共享内存❌不需要DBA 紧急维护、本机调试sqlplus (网络)sqlplus scott/tigerorclTCP/IP (1521)✅必须测试网络连通性PL/SQL Developer图形界面登录TCP/IP (1521)✅必须日常开发、写 SQLSQL Developer图形界面登录TCP/IP (1521)✅必须官方免费图形工具Java/Python 程序JDBC/ODBC 连接TCP/IP (1521)✅必须应用程序后端连接2. 核心结论 (一句话记忆)服务即进程启动 Windows 服务就是启动对应的.exe进程。监听器是门卫只有走“网络大门”TCP/IP的连接才需要它。本地有后门sqlplus / as sysdba走的是操作系统内部的“后门”IPC所以哪怕你把监听器关了只要OracleServiceORCL活着你就能连上去管理数据库。