保姆级教程:在Windows Server用Oracle 19c建库并搞定远程访问(含sqlnet.ora/listener.ora配置详解)

隔壁倒霉孩子

Windows Server下Oracle 19c全流程部署与远程连接实战指南

在Windows Server环境中部署Oracle 19c数据库,对于许多刚接触企业级数据库管理的IT人员来说,往往充满挑战。不同于简单的应用安装,Oracle数据库的配置涉及操作系统优化、网络参数调整、安全策略设置等多个层面。本文将从一个实战角度出发,不仅告诉你每个步骤的操作方法,更会深入解析背后的技术原理,让你真正掌握从零开始搭建可远程访问的Oracle 19c数据库系统的完整技能。

1. 环境准备与安装规划

在开始安装Oracle 19c之前,合理的准备工作能避免后续80%的常见问题。首先需要确认你的Windows Server版本是否兼容Oracle 19c。官方文档明确支持Windows Server 2012 R2、2016和2019版本。对于生产环境,建议使用Windows Server 2019 Standard Edition或Datacenter Edition。

硬件资源评估是另一个关键点:

资源类型 最低要求 推荐配置 说明
内存 4GB 16GB+ 对于测试环境4GB勉强可用,生产环境建议16GB起
存储空间 10GB 100GB+ 系统盘需要至少10GB,数据文件建议单独挂载高速磁盘
CPU核心 2核 8核+ Oracle对多核优化良好,核心数越多性能越好

提示:如果服务器内存小于8GB,安装时建议关闭所有非必要服务,避免因内存不足导致安装失败。

下载Oracle 19c安装包时,注意选择正确的版本。Windows平台通常下载"WINDOWS.X64_193000_db_home.zip"文件。安装前还需要确保系统已安装最新补丁,并完成以下准备工作:

  1. 禁用UAC(用户账户控制):Oracle安装程序需要管理员权限,UAC可能导致安装失败
  2. 关闭Windows防火墙:或在安装完成后手动配置防火墙规则
  3. 创建专用Oracle用户:虽然可以使用Administrator,但最佳实践是创建专用账户
powershell复制# 创建Oracle专用用户的PowerShell命令
New-LocalUser -Name "OracleAdmin" -Description "Oracle Database Administrator" -NoPassword
Add-LocalGroupMember -Group "Administrators" -Member "OracleAdmin"

2. 图形化安装关键选项解析

以管理员身份运行setup.exe后,Oracle安装向导将引导完成整个安装过程。许多初学者习惯一路点击"下一步",这往往为后续使用埋下隐患。下面重点解析几个关键配置页面:

数据库配置类型选择尤为关键。对于学习和小型应用环境,选择"桌面类"安装更为简单;而对于生产环境或需要高可用性的场景,"服务器类"安装提供更多高级选项。本文以"服务器类"安装为例进行说明。

系统类选择页面,确保选中"单实例数据库安装",除非你需要配置Oracle RAC集群。

安装选项页面中,典型安装已经能满足大多数需求,但有几个参数需要特别注意:

  • Oracle基目录:建议不要使用默认的C盘路径,改为D:\Oracle等非系统盘
  • 数据库版本:选择"企业版"以获得完整功能
  • 字符集:对于中文环境,选择AL32UTF8而非ZHS16GBK,以获得更好的国际化支持
  • 全局数据库名:格式应为<数据库名>.<域名>,如orcl.example.com

创建管理账户时,强烈建议使用复杂密码并妥善保管。Oracle 19c默认会创建SYS、SYSTEM等管理账户,这些账户的密码应该符合企业密码策略要求。

安装过程中常见的几个问题及解决方案:

  • ORA-00845: MEMORY_TARGET not supported:通常是因为未启用大页面支持
  • ORA-27102: out of memory:系统内存不足,需要关闭其他应用或增加内存
  • ORA-12560: TNS:protocol adapter error:Oracle服务未正确启动
sql复制-- 安装完成后验证数据库状态的SQL命令
SELECT status, database_status FROM v$instance;

3. 创建符合19c规范的数据库用户

Oracle 12c开始引入了多租户架构(Multitenant Architecture),19c延续了这一设计。在这种架构下,数据库用户分为两类:

  1. 公共用户(Common User):用户名以C##或c##开头,可以跨所有PDB
  2. 本地用户(Local User):仅存在于特定PDB中

创建公共用户的正确语法如下:

sql复制-- 创建公共用户示例
CREATE USER c##app_user IDENTIFIED BY "ComplexP@ssw0rd2023"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

赋予权限时,19c有一些特殊要求。例如,CONNECT角色在CDB和PDB中的权限不同:

权限/角色 CDB级别 PDB级别
CONNECT 仅连接权限 包含更多基础权限
RESOURCE 不可用 提供基本对象创建权限
DBA 完全控制CDB 仅控制单个PDB

注意:19c中密码必须满足复杂度要求,简单密码如"123456"会导致ORA-28000错误。

创建用户后,还需要配置适当的权限才能进行远程访问:

sql复制-- 授予远程连接所需的最小权限
GRANT CREATE SESSION TO c##app_user;
GRANT SELECT ANY DICTIONARY TO c##app_user;
ALTER USER c##app_user SET CONTAINER_DATA=ALL FOR XS$NULL CONTAINER=CDB$ROOT;

4. 网络配置深度解析与远程连接实现

Oracle网络配置的核心文件位于$ORACLE_HOME/network/admin目录下,其中最重要的两个文件是sqlnet.ora和listener.ora。正确配置这些文件是实现远程连接的关键。

sqlnet.ora文件控制客户端和服务器端的网络行为。对于Oracle 19c,必须设置以下参数以避免常见的ORA-28040错误:

code复制# sqlnet.ora关键配置
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11
SQLNET.AUTHENTICATION_SERVICES=(NTS,TCPS)
SQLNET.ENCRYPTION_SERVER=requested
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)

这些参数的含义是:

  • ALLOWED_LOGON_VERSION:指定允许的认证协议版本
  • AUTHENTICATION_SERVICES:指定允许的认证方式
  • ENCRYPTION_SERVER:指定是否强制加密通信

listener.ora文件配置监听器服务,典型的配置如下:

code复制# listener.ora示例配置
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server01)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.example.com)
      (ORACLE_HOME = D:\Oracle\product\19.0.0\dbhome_1)
      (SID_NAME = ORCL)
    )
  )

修改配置后,需要重启监听服务使更改生效:

cmd复制:: Windows下重启监听服务的命令
lsnrctl stop
lsnrctl start

对于远程连接工具如Navicat,连接字符串应使用以下格式:

code复制主机:服务器IP地址
端口:1521
服务名:ORCL.example.com
用户名:c##app_user
密码:ComplexP@ssw0rd2023

5. 常见问题排查与性能优化

即使按照上述步骤操作,在实际环境中仍可能遇到各种问题。下面列出几个典型问题及其解决方案:

问题1:ORA-12514: TNS监听程序无法识别连接描述符中请求服务

解决方案:

  1. 确认listener.ora中的SID_NAME与数据库实际SID一致
  2. 检查监听服务是否正常运行
  3. 确认连接字符串中的服务名正确

问题2:监听服务启动后自动停止

这通常是由于端口冲突或注册表设置不当导致。解决方法包括:

  1. 修改TCP/IP等待时间:

    reg复制Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
    "TcpTimedWaitDelay"=dword:0000001e
    "MaxUserPort"=dword:00008000
    
  2. 检查1521端口是否被其他程序占用:

    powershell复制netstat -ano | findstr 1521
    

问题3:远程连接速度慢

可以尝试以下优化措施:

  • 调整sqlnet.ora参数:

    code复制SQLNET.OUTBOUND_CONNECT_TIMEOUT=30
    SQLNET.RECV_TIMEOUT=60
    SQLNET.SEND_TIMEOUT=60
    
  • 在服务器端启用直接内存访问:

    sql复制ALTER SYSTEM SET memory_target=4G SCOPE=SPFILE;
    ALTER SYSTEM SET sga_target=3G SCOPE=SPFILE;
    ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;
    

对于生产环境,还应该考虑以下性能优化措施:

  1. 将数据文件、重做日志和控制文件分散到不同物理磁盘
  2. 配置自动扩展的表空间避免空间不足
  3. 定期收集统计信息优化查询性能
  4. 设置适当的归档模式和保护策略
sql复制-- 检查数据库性能状态的常用查询
SELECT * FROM v$sysmetric WHERE metric_name IN ('Database CPU Time Ratio', 
                                               'Database Wait Time Ratio',
                                               'SQL Service Response Time');

6. 安全加固与日常维护建议

Oracle数据库作为企业核心数据存储,安全性不容忽视。以下是几个关键的安全配置建议:

  1. 密码策略强化

    sql复制-- 设置密码复杂度验证函数
    ALTER PROFILE DEFAULT LIMIT
      FAILED_LOGIN_ATTEMPTS 5
      PASSWORD_LIFE_TIME 90
      PASSWORD_REUSE_TIME 365
      PASSWORD_REUSE_MAX 10
      PASSWORD_LOCK_TIME 1
      PASSWORD_GRACE_TIME 7;
    
  2. 审计关键操作

    sql复制-- 启用标准审计
    AUDIT CREATE SESSION BY ACCESS;
    AUDIT ALTER DATABASE;
    AUDIT ALTER SYSTEM;
    AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, UPDATE TABLE;
    
  3. 网络通信加密

    code复制# sqlnet.ora加密配置
    SQLNET.ENCRYPTION_SERVER=required
    SQLNET.ENCRYPTION_TYPES_SERVER=(AES256)
    SQLNET.CRYPTO_CHECKSUM_SERVER=required
    

日常维护方面,建议建立以下例行检查清单:

  • 每日检查:

    • 数据库可用性状态
    • 表空间使用情况
    • 备份执行状态
  • 每周检查:

    • 性能指标趋势
    • 安全日志审计
    • 统计信息收集
  • 每月检查:

    • 数据库补丁情况
    • 容量规划评估
    • 灾难恢复测试
sql复制-- 常用的维护检查SQL
SELECT tablespace_name, round(used_space/1024/1024,2) "已用空间(MB)", 
       round(tablespace_size/1024/1024,2) "总空间(MB)",
       round(used_percent,2) "使用率(%)" 
FROM dba_tablespace_usage_metrics;

SELECT * FROM (SELECT sql_id, executions, elapsed_time/executions/1000 "ms_per_exec"
               FROM v$sqlarea WHERE executions > 0 ORDER BY 3 DESC) 
WHERE rownum <= 10;

通过以上全面的配置和维护策略,你的Oracle 19c数据库将能够在Windows Server环境中稳定运行,同时支持安全的远程访问。记住,每个生产环境都有其特殊性,这些建议应该根据实际业务需求进行调整和完善。

内容推荐

【2】Visual Studio组件缺失引发的Cmake编译报错排查指南
本文详细解析了Visual Studio组件缺失导致的Cmake编译报错问题,提供了从检查安装状态到完整修复方案的逐步指南。通过Visual Studio Installer添加缺失组件、检查注册表信息等方法,帮助开发者快速解决'Generator Visual Studio 15 2017 could not find any instance of Visual Studio'等常见错误,确保C++项目顺利编译。
新能源电站风机侧加装微型纵向加密,这3个坑我帮你踩过了
本文分享了新能源电站风机侧加装微型纵向加密装置的实战避坑经验,涵盖数据流暴增、网络拓扑改造和运维体系变革三大核心问题。通过具体案例和解决方案,帮助工程师避免常见陷阱,提升部署效率和系统稳定性,特别适合新能源行业技术人员参考。
Design Compiler MCMM实战:多工艺角与多工作模式的高效优化策略
本文深入解析Design Compiler MCMM技术在多工艺角与多工作模式下的高效优化策略。通过实战案例和配置指南,详细介绍了MCMM的核心概念、库文件准备、场景命名最佳实践以及compile_ultra的关键参数应用,帮助工程师提升芯片设计效率与性能。
别再只会用mean了!用Matlab的filter函数实现滑动平均,5分钟搞定数据平滑与降噪
本文详细介绍了如何使用Matlab的filter函数实现高效滑动平均,快速完成数据平滑与降噪。相比传统mean函数,filter函数能更好地保留时序特征,支持实时处理和大数据应用。文章包含核心原理、参数优化技巧及传感器数据、金融分析等实战案例,帮助读者5分钟内掌握这一实用技能。
【Java 8 新特性】深入解析 Predicate:从基础应用到实战组合
本文深入解析Java 8中的Predicate接口,从基础应用到实战组合技巧全面覆盖。通过电商订单处理、用户权限校验等真实案例,展示如何利用Predicate的test()、and()、or()等方法简化条件判断,提升代码可读性和维护性。特别适合需要处理复杂业务逻辑的Java开发者学习参考。
Linux系统加固实战:巧用chattr +i锁定关键配置文件
本文详细介绍了如何在Linux系统中使用chattr +i命令锁定关键配置文件,如/etc/passwd和/etc/shadow,以防止未经授权的修改和删除。通过实战案例和高级技巧,帮助系统管理员提升文件保护能力,有效防御潜在的安全威胁。
从零构建C++ matio库:Windows下依赖管理与项目集成实战
本文详细介绍了在Windows环境下从零构建C++ matio库的全过程,包括zlib和HDF5依赖管理、CMake配置、Visual Studio编译及项目集成实战。通过分步教程解决第三方库配置难题,帮助开发者高效处理MATLAB .mat文件,提升C++项目开发效率。
ADIS16470实战:从寄存器配置到数据融合,打造高精度惯性测量单元(IMU)应用
本文详细解析ADIS16470工业级IMU传感器的实战应用,从SPI硬件连接、寄存器配置到数据融合算法实现。通过Burst模式快速读取六轴数据,利用32位寄存器模式提升测量精度,并结合卡尔曼滤波优化角度估计。提供完整的例程代码和校准方法,帮助开发者打造高精度惯性测量单元应用。
综测仪IQxel详解与802.11ac产品测试实战
本文详细介绍了综测仪IQxel在802.11ac产品测试中的应用与实战技巧。作为支持160MHz带宽的高性能测试设备,IQxel在信号生成(VSG)和信号分析(VSA)方面表现出色,特别适合研发调试和生产测试。文章还对比了IQxel与IQview的差异,并提供了网页控制界面操作指南、关键测试项目配置及生产测试优化建议,帮助工程师高效完成WLAN设备测试。
ROS2编译新利器:colcon从入门到实战
本文详细介绍了ROS2中的高效编译工具colcon,从基础安装到实战应用全面解析。通过对比传统catkin_make,展示colcon在编译速度、增量编译等方面的优势,并提供工作空间搭建、选择性编译、异常处理等实用技巧,帮助开发者快速掌握ROS2项目编译优化方法。
用STM32F103调试天线调谐器:手把手教你搞定MIPI RFFE协议(附完整代码)
本文详细介绍了基于STM32F103平台的MIPI RFFE协议驱动开发与天线调谐器控制的全过程。从协议解析、硬件设计到软件实现,提供了完整的代码示例和调试技巧,特别针对电平转换、时序调试等关键问题给出解决方案,帮助工程师快速掌握射频前端控制技术。
避开这5个坑!资金预测建模中的常见误区(基于蚂蚁竞赛数据)
本文基于蚂蚁竞赛数据,深入剖析资金流入流出预测建模中的5个常见误区,包括时间序列周期性误判、节假日处理不当、特征工程过犹不及、模型评估片面性以及忽略业务逻辑。通过实战案例和代码示例,提供有效的避坑指南和优化策略,帮助提升预测模型的准确性和稳定性。
工业现场实战:西门子PLC+PROFINET如何搞定多品牌变频器通讯?以博能A1为例的集成方案解析
本文详细解析了西门子PLC通过PROFINET协议与多品牌变频器(以博能A1为例)实现稳定通讯的实战方案。从设备兼容性评估、GSD文件处理到报文配置和程序架构设计,提供了一套可复用的工业自动化集成解决方案,有效提升项目交付效率和可靠性。
复古电子DIY:用74LS47+51单片机打造怀旧数字时钟(含完整代码)
本文详细介绍了如何利用74LS47 BCD-7段译码器芯片与STC89C52单片机打造复古数字时钟,包含完整的硬件连接方案、低功耗优化策略及代码实现。通过硬件译码与软件控制的结合,实现稳定且具有怀旧风格的时钟显示,适合电子爱好者和创客实践。
Airbnb北京短租房价格分布全解析:200-300元区间为何最受欢迎?
本文深入解析了Airbnb北京短租房市场中200-300元价格区间最受欢迎的原因。从心理账户平衡、时间成本换算到供需两端的精妙博弈,揭示了这一价格带的黄金法则。数据表明,该区间的房源在品质、区位和运营细节上实现了最优配置,满足商务客群、年轻游客和过渡期租客的核心需求,成为市场中的甜蜜点。
海康威视Web3.0插件安装避坑指南:从下载到预览的完整流程(Win10实测)
本文详细介绍了海康威视Web3.0插件在Windows 10环境下的安装与调试全流程,涵盖环境准备、插件获取、分步安装、浏览器兼容性设置及摄像头预览等关键步骤。通过实战指南帮助用户避开常见问题,实现高效部署与调试,特别适合需要快速上手海康威视摄像头的用户。
C/C++运算性能优化:从硬件原理到代码实践
本文深入探讨C/C++运算性能优化的核心原理与实践技巧,从硬件层面的ALU设计到现代CPU的优化黑科技,详细解析加减乘除等基础运算的速度差异。通过实际案例展示移位运算、乘除法优化策略,以及编译器与嵌入式系统的特殊考量,帮助开发者提升代码运算效率。
Centos7下人大金仓Kingbase ES V7数据库安装与配置全攻略
本文详细介绍了在CentOS7系统下安装与配置人大金仓Kingbase ES V7数据库的全过程,包括环境准备、用户创建、安装步骤、数据库初始化、服务管理及常见问题解决方案。特别针对国产数据库Kingbase ES V7的安装特点,提供了实用的性能优化建议和高可用方案,帮助用户快速部署和运维。
Windows服务器上从零搭建ASA方舟飞升计划1.5服务器:手把手教你用SteamCMD和ASM面板
本文详细介绍了在Windows服务器上从零搭建ASA方舟飞升计划1.5服务器的专业指南,涵盖SteamCMD命令行工具的高效部署与ASM面板的智能化管理。通过环境准备、基础配置、SteamCMD部署、ASM面板高级管理技巧及高级运维与故障排除等内容,帮助玩家快速搭建稳定、高效的多人游戏服务器。
Solaris 11.4 安装后没有桌面?手把手教你用IPS本地仓库安装GNOME桌面环境
本文详细介绍了在Solaris 11.4最小化安装后如何通过搭建本地IPS仓库来安装GNOME桌面环境。从准备仓库材料到构建ISO镜像,再到配置系统使用本地仓库并安装GNOME桌面,一步步指导用户完成操作。特别适合网络不稳定或需要离线安装的环境,帮助用户快速获得完整的图形界面体验。
已经到底了哦
精选内容
热门内容
最新内容
Win10下Halcon21与海康MVS客户端抢相机?一个设置解决USB驱动冲突
本文详细解析了Win10系统下Halcon21与海康MVS客户端因USB驱动冲突导致相机无法识别的问题,并提供了有效的解决方案。通过驱动恢复与锁定、Halcon采集接口配置等步骤,实现双软件协同工作,特别适用于海康工业相机的用户。文章还包含进阶排查与性能调优建议,帮助工业视觉开发工程师提升工作效率。
NVMe Reset 全解析:从子系统到队列的精准复位策略
本文深入解析NVMe Reset机制,从子系统级、控制器级到队列级的精准复位策略,帮助系统工程师在面对NVMe固态硬盘故障时做出最优选择。通过实际案例和详细操作步骤,展示如何在不同故障场景下实施分层复位,确保数据安全与系统稳定性。
[嵌入式Linux]RTL8111/RTL8168网卡驱动实战:从内核配置到性能调优
本文详细介绍了在嵌入式Linux系统中配置和优化RTL8111/RTL8168网卡驱动的全过程,包括内核驱动编译、固件加载、PCIe供电设计及网络性能调优。通过实战案例和技巧分享,帮助开发者解决常见问题并提升网卡性能,特别适合嵌入式设备开发者参考。
蓝桥杯网络安全CTF实战:从情报收集到逆向分析的完整解题思路
本文详细解析了蓝桥杯网络安全CTF竞赛的实战技巧,涵盖从情报收集到逆向分析的完整解题思路。通过实战案例和工具推荐,帮助参赛者掌握Web漏洞、密码破解、逆向工程等核心技能,提升竞赛表现和实战能力。文章特别强调了情报收集在CTF比赛中的关键作用,并提供了高效的备赛建议。
RTL8211驱动移植实战:从u-boot配置到内核联调
本文详细介绍了RTL8211千兆以太网PHY芯片的驱动移植实战,涵盖从u-boot配置到Linux内核联调的全过程。通过具体案例解析时钟配置、引脚复用等关键问题,提供设备树配置要点和调试技巧,帮助开发者高效解决PHY驱动移植中的典型问题。
STM32F407高级定时器隐藏玩法:一个通道当“裁判”,搞定两路互补PWM的相位同步
本文深入探讨了STM32F407高级定时器的隐藏功能,通过将定时器通道配置为内部触发源,实现两路互补PWM信号的亚微秒级相位同步控制。文章详细介绍了硬件同步的核心优势、配置方法及动态相位调整技巧,特别适用于电力电子和通信系统中对时间精度要求极高的场景。
PlatformIO项目中高效管理外部库的VSCode实践指南
本文详细介绍了在VSCode中高效管理PlatformIO项目外部库的实践指南。通过解析标准项目目录结构、三种外部库引入方式以及platformio.ini的进阶配置技巧,帮助开发者解决常见问题并优化工作流程,提升开发效率。
用Python+DEApy搞定CCR模型:手把手教你评估学校效率(附代码)
本文详细介绍了如何使用Python和DEApy库实现CCR模型,从数据准备到效率评估的全流程指南。通过实际案例演示,帮助读者掌握数据包络分析(DEA)在教育评估等领域的应用,提升决策单元效率分析的准确性和实用性。
从EMQX到云端:MQTT数据如何通过规则引擎精准入库?
本文详细解析了如何利用EMQX规则引擎将MQTT数据精准存储到云端数据库。通过智能家居场景示例,展示了从设备消息格式设计、SQL规则编写到Webhook对接云端API的完整流程,并提供了MySQL和InfluxDB的实战代码示例,帮助开发者高效实现物联网数据入库。
别再死记定义了!用‘家庭角色’和‘公司流程’的比喻秒懂群论(含阿贝尔群)
本文通过家庭聚餐和公司流程的生动比喻,深入浅出地解释了群论的四大公理和阿贝尔群的核心概念。从厨房操作的封闭性到项目交接的单位元与逆元,再到交通规则的交换律,这些生活场景让抽象的数学理论变得直观易懂,帮助读者快速掌握群论精髓。