在 Ubuntu 上使用 Oracle(无论是 Oracle Database、Oracle Instant Client,还是 Oracle 相关开发库)时,常见报错和解决方法如下。你可以先对号入座,如果还有具体报错信息,也可以贴出来我帮你精确定位。
ORA-12541: TNS:no listener原因:Oracle 监听未启动
解决:
lsnrctl start
或
sudo systemctl start oracle-xe
检查状态:
lsnrctl status
ORA-12162: TNS:net service name is incorrectly specified原因:ORACLE_SID 未设置或错误
解决:
export ORACLE_SID=XE
export ORACLE_HOME=/u01/app/oracle/product/21c/dbhomeXE
export PATH=$ORACLE_HOME/bin:$PATH
libclntsh.so: cannot open shared object file原因:Oracle 客户端库未配置
解决:
sudo apt install libaio1
添加库路径:
echo '/usr/lib/oracle/21/client64/lib' | sudo tee /etc/ld.so.conf.d/oracle.conf
sudo ldconfig
常见错误:
DPI-1047: Cannot locate a 64-bit Oracle Client library
解决:
sudo apt install oracle-instantclient-basic
或手动安装:
export LD_LIBRARY_PATH=/path/to/instantclient
Python 示例:
import cx_Oracle
conn = cx_Oracle.connect("user/pass@localhost/XE")
原因:内存或内核参数不足
解决(添加到 /etc/sysctl.conf):
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax = 4294967295
执行:
sudo sysctl -p
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus / as sysdba
env | grep ORACLE
tail -n 100 $ORACLE_BASE/diag/rdbms/*/trace/alert*.log
请告诉我:
我可以直接帮你写 完整修复命令。