本地连接虚拟机Oracle数据库配置指南
本文首次创作于 2025-02-10,最后更新于 2025-05-23,距离上次更新已经过了 13 天,文章内容可能已经过时。
本地连接虚拟机Oracle数据库配置指南
环境准备
本地主机:Windows 11
虚拟化软件:VMware Workstation 17
虚拟机系统:Windows 11
数据库版本:Oracle 19c
网络配置:NAT模式
虚拟机IP地址:192.168.9.128
连接方式选择
SQL*Plus命令行连接
PL/SQL Developer图形化工具连接
详细配置步骤
一、本地主机配置
1.1 安装Oracle Instant Client
下载适用于Windows的Instant Client基础包和SQL*Plus附加包
解压到本地目录(如
C:\oracle\instantclient_19_10
)
1.2 配置系统环境变量
添加新的系统变量:
变量名:
ORACLE_HOME
变量值:
C:\oracle\instantclient_19_10
修改Path变量,添加:
%ORACLE_HOME%
创建
tnsnames.ora
文件(位于%ORACLE_HOME%\network\admin
):ORCL_VM = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.128)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
二、虚拟机配置
2.1 检查监听器状态
lsnrctl status
若监听器未运行,执行:
lsnrctl start
2.2 配置监听器文件
编辑listener.ora
(通常位于C:\app\<用户名>\product\19.0.0\dbhome_1\network\admin
):
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.128)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
重启监听器:
lsnrctl stop
lsnrctl start
2.3 配置TNS文件
编辑tnsnames.ora
(同目录):
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.128)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
2.4 防火墙配置
开放1521端口:
netsh advfirewall firewall add rule name="Oracle1521" dir=in action=allow protocol=TCP localport=1521
或临时关闭防火墙(测试用):
netsh advfirewall set allprofiles state off
2.5 数据库服务注册
sqlplus / as sysdba
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.9.128)(PORT=1521))' SCOPE=BOTH;
ALTER SYSTEM REGISTER;
exit
验证注册状态:
lsnrctl status
三、连接测试
3.1 使用SQL*Plus连接
sqlplus 用户名/密码@192.168.9.128:1521/orcl
或使用TNS别名:
sqlplus 用户名/密码@ORCL_VM
3.2 使用PL/SQL Developer连接
打开PL/SQL Developer
新建连接:
用户名:您的数据库用户名
密码:对应的密码
数据库:
192.168.9.128:1521/orcl
或ORCL_VM
连接为:Normal
常见问题排查
错误:ORA-12541: TNS:no listener
解决方案:
确认虚拟机监听器已启动
检查
listener.ora
中的HOST是否为虚拟机IP验证防火墙设置
错误:ORA-12170: TNS:Connect timeout occurred
解决方案:
检查网络连通性(ping 192.168.9.128)
确认NAT网络配置正确
验证端口是否真正开放(使用telnet测试)
错误:ORA-01017: invalid username/password
解决方案:
确认用户名/密码正确
检查用户是否被锁定
尝试用sysdba账户登录后重置密码
附录:重要文件位置参考
- 感谢你赐予我前进的力量