小编Chr*_*nes的帖子

libclntsh.so.12.1:运行node-oracledb示例时无法打开共享对象文件错误

我的目标是从Ubuntu连接到VMWare客户机(OpenSuse)上的oracle数据库.

现在我只安装了oracledb驱动程序,并尝试运行给定的示例连接程序.

我所遵循的步骤来自github INSTALL页面.到目前为止我所做的是这些:

1)因为我已经安装了node.js,所以我跳过了步骤3.1.

2)我已成功下载并解压缩了步骤3.2中提到的基本sdk.

3)因为我找不到任何命名的包,libaio但我确实找到了libaio1.所以我安装了libaio1.

4)我LD_LIBRARY_PATH在我的电脑上创建了环境变量和它的内容/opt/oracle/instantclient.

5)如步骤3.3中所述 ; 即使在我的情况下它不是强制性的; 我制作了两个环境变量:OCI_LIB_DIR内容/opt/oracle/instantclientOCI_INC_DIR内容/opt/oracle/instantclient/sdk/include.

6)已安装node-oracledb.

我正在尝试运行示例连接程序.我正在使用的代码是https://github.com/ishanatmuz/oracle-test.当我跑步时,node connect.js我收到此错误.

/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:28
throw err;
          ^
Error: libclntsh.so.12.1: cannot open shared object file: No such file or directory
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require …
Run Code Online (Sandbox Code Playgroud)

oracle node.js node-oracledb

12
推荐指数
2
解决办法
2万
查看次数

将 Oracle Instant 客户端安装到 Python cx_Oracle 的 Docker 容器中

我正在尝试通过我的 docker 容器连接到我公司的 Oracle 数据库,该容器包含我的一些带有 cx_Oracle 包的 python 脚本。构建并运行容器后,出现以下错误:

conn = cx_Oracle.connect("{0}/{1}@{2}".format(configOracle["username"], configOracle["password"],r"ed03:1521/configOracle["servername"]))
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
Run Code Online (Sandbox Code Playgroud)

我有一个 Oracle 配置文件,其中的用户名、密码和服务器名称来自并正确填写。即使从https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html下载了最新的客户端,我似乎也无法让它工作

我的目录结构如下所示:

--TopDirectory
----instantclient
-------instantclient-basic-linux.x64-19.5.0.0.0dbru.zip
-------instantclient-sdk-linux.x64-19.5.0.0.0dbru.zip
----hello_oracle.py
----Dockerfile
----requirements.txt
----configOracle.json
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile:

FROM python:3.7.5

#Oracle Client setup
ENV ORACLE_HOME /opt/oracle/instantclient_19_5
ENV LD_RUN_PATH=$ORACLE_HOME

COPY instantclient/* /tmp/

RUN \
    mkdir -p /opt/oracle && \
    unzip "/tmp/instantclient*.zip" -d /opt/oracle && \ …
Run Code Online (Sandbox Code Playgroud)

python oracle containers docker dockerfile

10
推荐指数
2
解决办法
9143
查看次数

空闲 Oracle 连接给出错误“ORA-03114:未连接到 ORACLE”

我们有一个连接到 Oracle 数据库实例的 Node.js Web 应用程序,问题是在一些不活动之后,数据库的连接变成了只读模式。这意味着 SELECT 操作有效但 INSERT 和 UPDATE 事务遇到此错误:

“错误:ORA-03114:未连接到 ORACLE”

此问题在重新启动应用程序后解决。我们使用最新版本的 knex(0.20.1) 和 node-oracledb(4.1.0) 库连接到数据库。

oracle node.js ora-03114 knex.js node-oracledb

7
推荐指数
1
解决办法
3248
查看次数

在没有 Oracle Instant Client 的情况下将 Node.js 与 Oracle 配对

我正在尝试测试与 Oracle 数据库的连接。我读到 Oracle 发布了 node-oracledb 来促进这一点。但问题是您需要安装 Oracle Instant Client。我想知道是否有可能绕过这个。如果有人能够在没有安装 Oracle Instant Client 的情况下提取项目并在他们的计算机上运行测试,那就太理想了。

这可行吗?先感谢您!问候

javascript oracle node.js

5
推荐指数
1
解决办法
2586
查看次数

与厚模式相比,python-oracledb 瘦模式是否有任何性能影响?

cx_Oracle 在 2022 年 5 月版本中更名为 python-oracledb。它现在有两种模式:薄和厚。厚模式使用Oracle客户端库连接到Oracle,而瘦模式可以直接连接。cx_Oracle 以前总是需要使用 Oracle 客户端库。

使用精简模式而不是粗模式是否会对性能产生影响?

python oracle cx-oracle python-oracledb

5
推荐指数
1
解决办法
3219
查看次数

PHP oci8无法通过pecl安装:“严重错误:oci8_dtrace_gen.h”

我试图将我的fedora 25网络服务器-php连接到Oracle数据库。

为此,我需要pecl安装oci8。

但是我得到这个错误:

/bin/sh /var/tmp/pear-build-roottqYEC6/oci8-2.1.4/libtool --mode=compile cc  -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-roottqYEC6/oci8-2.1.4/include -I/var/tmp/pear-build-roottqYEC6/oci8-2.1.4/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/oracle/12.1/client64  -DHAVE_CONFIG_H  -g -O2   -c /var/tmp/oci8/oci8.c -o oci8.lo
libtool: compile:  cc -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-roottqYEC6/oci8-2.1.4/include -I/var/tmp/pear-build-roottqYEC6/oci8-2.1.4/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/oracle/12.1/client64 -DHAVE_CONFIG_H -g -O2 -c /var/tmp/oci8/oci8.c  -fPIC -DPIC -o .libs/oci8.o
In file included from /var/tmp/oci8/oci8.c:49:0:
/var/tmp/oci8/php_oci8_int.h:46:29: fatal error: oci8_dtrace_gen.h: No such file or directory
 #include "oci8_dtrace_gen.h"
                             ^
compilation terminated.
Makefile:196: recipe for target 'oci8.lo' failed
make: *** …
Run Code Online (Sandbox Code Playgroud)

php lamp pdo oci8 fedora-25

2
推荐指数
2
解决办法
7836
查看次数

Python 在 macOS 上“DPI-1047 无法找到 dlopen(libclntsh.dylib)”

我收到以下错误。

cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "dlopen(libclntsh.dylib, 1): image not found"

我发现的一个解决方法是插入 cx_Oracle.init_oracle_client(lib_dir=path)导致 Oracle 客户端库已初始化错误。

但是我不会init_oracle_client在代码中的任何地方调用。我在 Mac 上使用 Python 3.8.11 和 cx_Oracle 8.2.1。

当我最初运行代码时,我没有安装任何 Oracle 客户端。然后我下载了 instantclient_19_8,但将其与 init_oracle_client 一起使用会导致已初始化错误。我在这里看到了这个 https://cx-oracle.readthedocs.io/en/latest/user_guide/initialization.html

我不确定 cx_Oracle 二进制文件在哪里,当我转到具有当前 anaconda 环境的位置时,我看到一个包含自述文件的 cx_Oracle-doc 文件夹。另外,~中还创建了一个oradiag_my_username文件夹。不确定需要修复什么。

python oracle macos cx-oracle

2
推荐指数
1
解决办法
6530
查看次数

Oracle Instant Client 时区文件位于哪里?

我已按照oracle 站点中的说明在 macOS(Big Sur 版本 11.5.1)上安装了 Oracle 即时客户端版本 19.8.0.0.0 。

我想使用 ORA_TZFILE文件更改时区设置,但该oracore\zoneinfo\目录在哪里?无处可寻。

我需要这样做,因为远程数据库服务器和客户端之间的时区信息不匹配,因此我无法执行如下查询:

AT TIME ZONE 'UTC' AS DATE
Run Code Online (Sandbox Code Playgroud)

远程服务器正在使用 timezlrg_26.dat。我通过执行找到了此信息select * from v$timezone_file。因此我需要更改客户端以也使用 timezlrg_26.dat。

它最终给我错误“ORA-01805:日期/时间操作中可能出现错误”

默认目录如下所示: 在此输入图像描述

database oracle instantclient

2
推荐指数
1
解决办法
2912
查看次数

cx_Oracle 中的 Python 长时间空闲连接获取:DPI-1080:连接已被 ORA-3113 关闭

我正在运行长时间运行的 Python 可执行文件。启动时使用 cx_Oracle 打开 Oracle 连接。空闲连接超过 45-60 分钟后 - 出现此错误。cx_Oracle 需要任何想法或特殊设置吗?

python oracle networking cx-oracle

2
推荐指数
1
解决办法
7070
查看次数

调用node-oracledb的createPool方法

我正在创建一个使用 Node.js 和 Express 的 RESTful API。我的应用程序使用 Oracle 数据库,因此我从 npm 安装了 node-oracledb 模块。我浏览了文档并查看了模块的 github 页面中提供的一些示例;但是,我没有看到任何使用连接池的示例。如果我错了,请纠正我,但对于需要多次调用数据库的应用程序,建议使用连接池而不是使用独立连接。下面是我编写的代码示例:

createPool = function(poolAttrs, fetchPool){
  oracledb.createPool(poolAttrs, function(error, pool){
    if(error){
      console.error(`Could not create pool using specified attributes: `, error.message);
    }
    else{
      console.log(`Pool created successfully using poolAlias: ${poolAttrs.poolAlias}`);
      fetchPool(pool);
    }
  });
};

createConnection = function(poolAlias, connection){
  oracledb.getConnection(poolAlias, function(error, conn){
    if(error){
      console.error(`Could not get connection: `, error.message);
    } else {
      console.log(`New connection obtained: ${conn}`);
      connection(conn);
    }
  });
};

executeQuery = function(queryString, poolAlias){
  console.log(queryString);
  var conn = createConnection(poolAlias, function connection(conn){ …
Run Code Online (Sandbox Code Playgroud)

javascript callback node.js node-oracledb

1
推荐指数
1
解决办法
1万
查看次数

UNIX/Python - 如何在没有互联网和 pip 的情况下使用 cx_Oracle

我的公司(还)不允许我们安装或升级 python3,也不允许我们在其服务器上安装 pip 模块。即使可以,机器也没有连接到互联网。但我们可以执行 python2 二进制文件

目标

cx_Oracle无需使用pip互联网即可使用该模块

暂定解决方法

我想到在我的计算机上安装 cx_Oracle 包,然后将安装的模块文件从我的计算机复制到服务器。

所以服务器 dev 文件夹看起来像这样(只列出有趣的目录和文件,省略__pychache__*.pyc其他无用的*.py文件):

|-- test_cx_oracle_in_local.py
\-- sqlalchemy/
    |-- connectors
    |-- databases
    |-- dialects
    |   |-- firebird
    |   |-- mysql
    |   |-- mssql
    |   |-- oracle
    |   |   |-- base.py
    |   |   |-- cx_oracle.py   <--- This is the interesting file
    |   |   |-- __init__.py
    |   |   \-- zxjdbc.py
    |   |-- postgresql
    |   |-- sqlite
    |   |-- sybase
    |-- engine
    |-- …
Run Code Online (Sandbox Code Playgroud)

python oracle cx-oracle python-import

1
推荐指数
1
解决办法
1675
查看次数