如何通过SQL Developer连接Linux虚拟机上的Oracle数据库?
连接Linux虚拟机Oracle数据库(IP连接失败)操作指引
一、先验证网络连通性
- 本地机器执行
ping 虚拟机IP,确认能ping通。若不通:- 检查虚拟机网络模式(桥接模式确保和本地同网段,NAT模式需配置端口转发)
- 临时关闭Linux防火墙测试:
systemctl stop firewalld;长期使用建议开放1521端口:firewall-cmd --add-port=1521/tcp --permanent firewall-cmd --reload - 检查SELinux状态:
getenforce,若为Enforcing,临时关闭:setenforce 0,后续可配置SELinux规则放行Oracle服务
二、配置Oracle远程访问
1. 调整监听器配置
编辑$ORACLE_HOME/network/admin/listener.ora(如果不存在则新建),确保监听器绑定虚拟机IP或0.0.0.0:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 虚拟机IP)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
重启监听器并验证状态:
lsnrctl stop lsnrctl start lsnrctl status
查看输出的Services Summary,确认目标数据库实例已注册
2. 配置数据库实例注册
用sys用户登录数据库:sqlplus / as sysdba,执行以下SQL:
ALTER SYSTEM SET REMOTE_LISTENER='虚拟机IP:1521' SCOPE=BOTH; ALTER SYSTEM SET LOCAL_LISTENER='虚拟机IP:1521' SCOPE=BOTH; ALTER REGISTER;
3. 授权用户远程连接
确保连接用户拥有远程会话权限:
GRANT CREATE SESSION TO 你的用户名; -- 12c及以上CDB架构,需确保PDB处于打开状态 ALTER PLUGGABLE DATABASE 你的PDB名称 OPEN;
三、SQL Developer连接参数设置
新建连接时按以下配置填写:
- 连接类型:选择Basic
- 主机名:填写虚拟机的实际IP地址(禁止用localhost/127.0.0.1)
- 端口:默认1521,若修改过监听端口则填对应值
- SID/服务名:二选一(注意区分):
- SID:执行
SELECT instance_name FROM v$instance;查询实例名 - 服务名:执行
SELECT name FROM v$database;或从lsnrctl status的Services中获取;PDB的服务名通常为PDB名.域名(如pdb1.orcl)
- SID:执行
- 用户名/密码:填写已授权的数据库用户账号
- 点击测试,成功后保存连接
四、常见错误排查
- ORA-12541: TNS:无监听程序:检查监听器是否启动、防火墙是否放行1521端口、listener.ora配置是否正确
- ORA-12514: TNS:监听程序无法识别请求的服务:确认SID/服务名填写正确,数据库实例已注册到监听器(查看
lsnrctl status输出) - ORA-01017: 用户名/密码无效:核对账号密码,确认用户拥有
CREATE SESSION权限,12c+需确认PDB处于打开状态
内容的提问来源于stack exchange,提问作者Kriss
相关产品推荐
相关产品推荐

