PG连接Oracle报错解决
你好,我是本际云服务器推荐网的小编小本本。有时在postgresql中通过dblink查询oracle表时会报错,具体报错信息为:“error connecting to Oracle: OCIEnvCreate failed to create environment handle”。这个问题需要通过strace才能发现。

解决方法
首先执行PG_BACKEND_PID()函数,可以查询当前会话的服务器进程PID,然后通过strace另开启一个会话追踪该PID。
通过追踪发现,PG连接Oracle报错是因为它需要读取文件。具体来说是需要读取”/app/instantclient/rdbms/mesg/ocius.msb”文件,但是该Oracle客户端根本没有该目录。
解决方法如下:
- 通过yum安装完整版的Oracle客户端
- 加载新的Oracle客户端环境变量,主要是ORACLE_HOME和LD_LIBRARY_PATH。具体命令为:export ORACLE_HOME=/opt/oracle/product/18c/dbhome_1和export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:$POSTGRES_HOME/lib:$POSTGRES_HOME/lib/postgresql:$POSTGRES_HOME/plugin:$ORACLE_HOME/lib”
- 重启Postgresql数据库,通过pg_ctl stop -D /app/xxx/data和pg_ctl start -D /app/xxx/data命令实现
- 使用正确的环境变量,再次安装oracle_fdw。具体命令为:su – postgres、unzip oracle_fdw-2.2.1.zip、cd oracle_fdw-2.2.1、make、make install、psql和CREATE EXTENSION oracle_fdw
通过上述步骤操作完成之后,再次查询就能够使用dblink访问Oracle数据库。
插件作者指出,该问题主要是Oracle配置问题,可能原因包括Oracle环境变量、安装混乱、版本兼容性和文件系统权限等。参考了oracle_fdw作者的github相关文章,我们成功解决了PG连接Oracle报错的问题。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5845.html
