温馨提示×

Ubuntu连Oracle失败咋办

小樊
39
2026-08-14 22:23:01
栏目: 云计算

Ubuntu 连接 Oracle 数据库失败 原因很多,下面按最常见场景给你一个排查清单 + 解决方案,你可以对照着一步步来。


一、先确认 3 个问题

在排查前,先确认:

  1. Oracle 在哪儿?
    • 本地 Ubuntu 上的 Oracle?
    • 远程服务器(公司 / 云)?
  2. 你用什么连?
    • sqlplus
    • 程序(Python / Java / PHP)
    • 图形工具(DBeaver / Navicat)
  3. 报什么错?
    • 能把完整错误信息贴出来最好(比如 ORA-xxxxx

二、网络 & 基础连通性(最常见)

1️⃣ 确认 Oracle 端口是否通

Oracle 默认端口是 1521

telnet IP 1521
# 或
nc -vz IP 1521

❌ 不通 → 说明:

  • 防火墙没放行
  • Oracle 没启动
  • IP/端口写错

✅ 通 → 继续往下


2️⃣ 确认 Oracle 监听是否启动(服务器端)

Oracle 服务器执行:

lsnrctl status

如果没启动:

lsnrctl start

三、Ubuntu 客户端常见问题

3️⃣ 没装 Oracle 客户端(最常见)

Ubuntu 默认没有 Oracle 客户端

方法一:装 Instant Client(最推荐)

sudo apt update
sudo apt install unzip libaio1

下载:

  • https://www.oracle.com/database/technologies/instant-client.html

解压后:

export LD_LIBRARY_PATH=/path/to/instantclient
export PATH=$PATH:/path/to/instantclient

4️⃣ sqlplus 连不上

测试:

sqlplus user/password@//IP:1521/服务名

常见错误:

❌ ORA-12170(连接超时)

  • 防火墙
  • 监听没开
  • IP 错

❌ ORA-12514(服务名不对)

listener does not currently know of service

解决:

select name from v$services;

确认 SERVICE_NAME,不是 SID


四、连接字符串写错(极高概率)

✅ 推荐写法(服务名)

sqlplus user/password@//192.168.1.10:1521/orclpdb

❌ 错误写法

sqlplus user/password@192.168.1.10:1521:orcl

五、字符集 / 编码问题

中文乱码常导致“看起来连不上”

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

六、程序连接失败(Python / Java)

Python(cx_Oracle / oracledb)

import oracledb
oracledb.init_oracle_client(lib_dir="/path/to/instantclient")

conn = oracledb.connect(
    user="user",
    password="pwd",
    host="IP",
    port=1521,
    service_name="orclpdb"
)

常见错误:

  • DPI-1047 → 没装 Instant Client
  • ORA-12154 → tnsnames 配置错

七、快速自检清单 ✅

你可以一条条对照:

  • [ ] 1521 端口能通
  • [ ] Oracle 监听已启动
  • [ ] Instant Client 已装
  • [ ] 使用的是 SERVICE_NAME
  • [ ] 用户名 / 密码正确
  • [ ] 服务器允许远程连接

八、我可以直接帮你定位

你可以直接把下面信息发我,我帮你精确到“哪一行错了”:

  1. Ubuntu 版本
  2. Oracle 版本
  3. 连接方式(sqlplus / Python / 工具)
  4. 完整报错信息(复制粘贴)

比如:

ORA-12541: TNS:no listener

我可以一步一步带你修 ✅

0