在 Ubuntu 上连接 Oracle 数据库,常见有几种方式,下面按最常用场景给你说明(从简单到完整)。
Oracle 官方提供 Instant Client,轻量、好用。
去 Oracle 官网下载(选 Linux x86-64): https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
常用包:
basic 或 basiclitesqlplusdevel(可选)示例:
oracle-instantclient-basic-21.11.0.0.0-1.x86_64.rpm
oracle-instantclient-sqlplus-21.11.0.0.0-1.x86_64.rpm
sudo apt update
sudo apt install alien libaio1
转换并安装:
sudo alien -i oracle-instantclient-basic-*.rpm
sudo alien -i oracle-instantclient-sqlplus-*.rpm
编辑 ~/.bashrc 或 ~/.zshrc:
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
生效:
source ~/.bashrc
sqlplus 用户名/密码@//IP:端口/服务名
示例:
sqlplus system/oracle@//192.168.1.100:1521/ORCLPDB1
创建目录:
mkdir -p $ORACLE_HOME/network/admin
编辑:
vi $ORACLE_HOME/network/admin/tnsnames.ora
示例:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = ORCLPDB1)
)
)
连接:
sqlplus 用户名/密码@ORCL
sudo apt install libaio1
pip install oracledb
import oracledb
conn = oracledb.connect(
user="system",
password="oracle",
host="192.168.1.100",
port=1521,
service_name="ORCLPDB1"
)
cursor = conn.cursor()
cursor.execute("SELECT sysdate FROM dual")
print(cursor.fetchone())
conn.close()
✅ 不需要 Instant Client(oracledb 5+ 支持 Thin 模式)
sudo snap install dbeaver-ce
✅ 自动下载 Oracle JDBC 驱动
telnet IP 1521
listener does not currently know of service requested
✅ 检查 SERVICE_NAME,不是 SID
sudo apt install libaio1
我可以直接给你一条可复制的执行方案。