在 Ubuntu 上连接 Oracle 数据库,常见有几种场景。下面按使用目的给你一个清晰、实用的总结(从最常见到高级)。
官网(需 Oracle 账号): https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
常用包:
basicsqlplussdk(可选)例如:
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 unzip
转换并安装:
sudo alien -i oracle-instantclient-basic*.rpm
sudo alien -i oracle-instantclient-sqlplus*.rpm
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
写入 .bashrc 永久生效:
echo 'export ORACLE_HOME=/usr/lib/oracle/21/client64' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib' >> ~/.bashrc
echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
sqlplus user/password@//ip:1521/ORCL
✅ 成功示例:
SQL>
String url = "jdbc:oracle:thin:@//host:1521/ORCL";
依赖:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.9.0.0</version>
</dependency>
pip install oracledb
import oracledb
conn = oracledb.connect(
user="user",
password="password",
host="ip",
port=1521,
service_name="ORCL"
)
cursor = conn.cursor()
cursor.execute("SELECT 1 FROM dual")
print(cursor.fetchone())
✅ 不需要 Instant Client(Thin 模式)
⚠️ 仅服务器/学习用途
docker run -d \
--name oracle \
-p 1521:1521 \
-e ORACLE_PASSWORD=oracle \
gvenzl/oracle-xe:21
连接:
sqlplus system/oracle@//localhost:1521/XE
sqlplus: command not foundecho $PATH
which sqlplus
libaio.so.1: cannot open shared objectsudo apt install libaio1
你可以直接告诉我:
我可以给你 一步一步精确到命令 的方案。