问题标签 [instantclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Oracle Instant Client v12 - 如何在不安装 asp.net 的情况下使用?
目前,我们在服务器 VM 上安装了 Oracle 客户端,但我们希望在 Azure Service Fabric 上使用 Oracle Instant Client(无需安装)。我设法让它在版本 11 上工作,但在 v12 上我仍然遇到错误(远未连接到数据库):
“'Oracle.DataAccess.Client.OracleParameter' 的类型初始化程序引发异常:提供程序与 Oracle 客户端的版本不兼容”
同样:它无需安装 Oracle.DataAccess.dll 4.112.3.0 和 Instant Client 11.2.0.3(均为 x32)即可工作,但仍无法与最新版本通信。
我已经使用了几篇 Instant Client 操作方法文章,但它们都非常旧(~2013 年),带有指向 Oracle 下载的非活动链接......我也不能使用 System.Data.OracleClient 命名空间,因为它缺少我们需要的一些功能(fe XxmlType 或自定义类型)所以我需要参考 Oracle.DataAccess.dll
这是我尝试过的步骤。请指出我做错了什么......
oracle - 致命错误:oci.h:没有这样的文件或目录
当我尝试 go get for oracle library 时 go version go1.8.1 windows/amd64
和
现在当我输入时,pkg-config --cflags --libs oci8
我得到以下结果,这意味着 oci8.pc 工作正常
请建议 oci8.pc 出了什么问题
r - ROracle 未在 MacOS High Sierra 上加载 Instantclient 库
我已经安装了 Oracle Instant Client 12.1.0.2.0,现在正在尝试使用以下命令为 R 安装 ROracle 1.3-1:
Oracle Instant Client 安装在 /usr/local/oracle/instantclient12
不幸的是,我在 ROracle 安装结束时遇到了以下错误,并且很难弄清楚出了什么问题:
无论出于何种原因,无法找到 @rpath/libclntsh.dylib.12.1 并阻止 ROracle 完全安装。我尝试在 ~/lib 和 /usr/lib 中放置指向 libclntsh.dylib.12.1 的链接,但两个链接都不起作用。我还尝试使用环境变量 DYLD_FALLBACK_LIBRARY_PATH 和 DYLD_LIBRARY_PATH 指向包含 libclntsh.dylib.12.1 的目录,但这些都没有正常工作。
我正在使用 MacOS High Sierra (10.13) 和 R 3.4.2。
python - Python cx_Oracle "无法加载 32 位 Oracle 客户端库:"找不到指定的模块""
我下载了 Oracle Instant Client 并在环境变量中指定了路径,如第一个屏幕截图所示。
cx_Oracle 已成功导入,如第二个屏幕截图所示。
我试图使用以下代码连接到 AWS 中托管的 Oracle DB:
日志消息返回:
无法加载 32 位 Oracle 客户端库:“找不到指定的模块”。
我的论点cx_Oracle.connect
或我在环境变量中的路径是否错误?Python、WHL 和 Instant Client 都是 32 位的。
oracle - 无法使用即时客户端 SQL*Plus 进行连接
我正在尝试使用 Oracle 即时客户端 12.2 中的 SQL*Plus 连接到 Oracle,但它一直失败。
我不是 Oracle 专家,但我的理解是我不需要tnsnames.ora
Oracle 客户端 12 中的直接连接。
我怎么了?
php - 如何使用 PHP 7 连接到 Oracle 11?
问题是,我有一个客户端要求它在 Oracle DB 下运行的应用程序。
我已经安装了 Client 11c 以及 Oracle 数据库。
我的 PHP 是使用以下配置构建的:
所以我将即时客户端复制到这个文件夹中,并将其也放入系统路径中。
我仍然得到:
尝试使用 display_startup_errors = on 运行 php -m
我已经尝试下载其他 PHP 二进制文件,并查看了互联网的每一个可能的角落。
谁能帮我解决这个问题?
PS PDO 是必须的。
提前致谢!
python - cx_Oracle.DatabaseError: ORA-12541: TNS: 没有监听器
我想学习如何使用 Python 处理 Oracle 数据库。如果我理解正确,您可以使用 Oracle Instant Client 远程连接到 Oracle 数据库,但我无法连接。我怀疑问题是我不知道 localhost/instance 组合使用什么参数。我相信 localhost 只是我的机器名称,或者它可能是我尝试过的字面上的“localhost”,但我不知道如何也找不到帮助告诉我如何找到数据库实例的服务名称。
在提示符中,我打开 python,导入 cx_Oracle 并使用此示例代码中指定的“Easy Connect String” ,使用“(我的机器名称)/orclpdb”或字面意思是“localhost/orclpdb” DEFAULT_CONNECT_STRING
。
示例代码创建了一个变量MAIN_CONNECT_STRING
,我在命令提示符中使用它来尝试连接到远程数据库:
我找到的答案似乎基于this,或者其他人提到的tnsnames.ora
,或者listener.ora
是我没有的文件。我也尝试使用instantclient-sqlplus-nt-12.2.0.1.0
.
背景:
- Windows 7的
- 我下载
cx_Oracle-6.1-cp27-cp27m-win32.whl
并instantclient-basic-nt-12.2.0.1.0.zip
- 我把它
.whl
放入“C:\Python27\Scripts\” - 我用python
-m pip install cx_Oracle --upgrade
安装cx_Oracle
。 - 我解压了即时客户端 zip 并将子文件夹放在这里“C:\instantclient_12_2”
- 我添加
;C:\instantclient_12_2
到PATH
.
node.js - 'oracledb' Oracle 客户端库错误(错误:NJS-045 和其他错误)
我已使用以下命令将 oracledb 库安装到我的项目文件夹中
'npm i oracledb --s'
它已成功安装,它位于我项目中的“node_modules”文件夹中。在项目文件夹中,我也有“instantclient”文件夹,下载并打开后。
当我尝试运行我的程序时,会出现以下错误:
在对象的要求(内部/module.js:11:18)处。(c:\Users\tlobel\Documents\Install_1\node_modules\oracledb\index.js:1:80) 在 Module._compile (module.js:652:30) 等待调试器断开连接... 错误:NJS- 045:无法加载 Node.js 8.11.1(win32、x64)的 oracledb 附加二进制文件 oracledb.js:68 无法加载 c:\Users\tlobel\Documents\Install_1\node_modules\oracledb\build\Release\oracledb。节点 DPI-1050:Oracle 客户端库必须为 11.2 或更高版本 Node-oracledb 安装说明:https ://oracle.github.io/node-oracledb/INSTALL.html 您的 PATH 中必须有 64 位 Oracle 客户端库环境变量. 如果您在这台计算机上没有 Oracle 数据库,则从 http://www.oracle.com/technetwork/topics/winx64soft-089540.html安装 Instant Client Basic 或 Basic Light 软件包 适用于您的 Oracle 的 Microsoft Visual Studio Redistributable客户端库版本必须可用。
我的PATH如下所示:
PATH=C:\Python27\;C:\Python27\Scripts; C:\Users\usr1\My Documents\Install_1\instantclient;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files \Git\usr\bin;C:\Users\usr1\Downloads\Git-2.16.2-64-bit;C:\Users\usr1\Downloads\VC_redist.x64;C:\Program Files\Microsoft VS Code\bin ;C:\Users\usr1\AppData\Roaming\npm
我的项目位于文件夹中: C:\Users\usr1\My Documents\Install_1
我也下载了 VS redistributable,但我不知道把它放在哪里......有人知道必须解决哪些问题才能使其正常工作吗?
答案非常感谢!
php - 如何在带有 PHP-FPM 和 NGINX 的 Ubuntu 18.04 LTS 中使用 Oracle Instant Client 启用 OCI8 PHP 扩展?
我正在使用https://launchpad.net/~ondrej/+archive/ubuntu/php提供的最新 PHP 包。
当我构建和安装 OCI8 扩展时,一切似乎都井井有条,但尽管在 PHP-FPM 配置中启用了扩展,但它的存在并未反映在phpinfo()
.
以下要点详细说明了我用于配置、构建和安装 OCI8 PHP 扩展的确切过程:
https://gist.github.com/cbj4074/fa761f60b6f8db431539d76ebfba828e
相同的过程和配置在 Ubuntu 16.04 LTS 上运行得非常好,因此在 Ubuntu 18.04 LTS 上似乎存在一些根本差异,无论是使用操作系统还是所讨论的 PHP 包。
作为一些重要的(我怀疑与此问题相关)背景信息,在 Ubuntu 18.04 LTS 上,扩展无法在 CLI 环境中加载,并出现以下错误:
PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/20160303/oci8.so' - libmql1.so:无法打开共享对象文件:第 0 行的未知中没有此类文件或目录
我这样解决了这个问题:
我认为也许添加LD_LIBRARY_PATH
到 PHP-FPM 环境配置可能会解决那里的等效问题:
这确实会导致LD_LIBRARY_PATH
指定的值反映在Environment
(phpinfo()
当通过 PHP-FPM + NGINX 呈现并从浏览器请求时)PHP Variables
和$_SERVER['LD_LIBRARY_PATH']
.
奇怪的是,即使 PHP-FPM 的日志记录设置为debug
,我也看不到任何libmql1.so
使用 CLI 遇到的错误的痕迹。OCI8 扩展只是无法静默加载。display_startup_errors = On
在 PHP-FPM 中也是有效的php.ini
。
我选择查看 OCI8 扩展是否可以在同一台服务器上的 Apache 中工作,并且它确实可以,只要我添加export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2
到/etc/apache2/envvars
; 在其缺席的情况下,Apache 在启动时抱怨:
PHP警告:PHP启动:无法加载动态库'oci8.so'(试过:/usr/lib/php/20170718/oci8.so(libmql1.so:无法打开共享对象文件:没有这样的文件或目录),/ usr/lib/php/20170718/oci8.so.so(/usr/lib/php/20170718/oci8.so.so:无法打开共享对象文件:没有这样的文件或目录))在第0行的未知
在 Ubuntu 16.04 LTS 上,这些业务都不LD_LIBRARY_PATH
是必需的,根据我在此的观察和关于https://stackoverflow.com/a/45242468/1772379的评论,在 Ubuntu 17.10 和 Ubuntu 18.04 LTS 中发生了变化。
有没有其他人在 Ubuntu 18.04 LTS 上试过这个,特别是?
我已经在两个不同的 Vagrant VM 上进行了尝试,即laravel/homestead
box 6.0.0 和ubuntu/bionic64
box v20180509.0.0,两者的行为是相同的。
任何其他想法将不胜感激!
编辑 1:
我在包维护者的 GitHub 跟踪器上询问了这个问题,他认为问题源于未能RPATH
在编译时设置适当的值。
我在回复中解释说我正在设置一个适当的值,但问题仍然关闭。
然而,我确实注意到了一个有趣的细节,那就是 Ubuntu 18.04 上的已编译扩展使用RUNPATH
(而不是RPATH
Ubuntu 16.04 中使用的 )。如果 PHP-FPM 忽略RUNPATH
并且只查找RPATH
,它将解释这种行为。
编辑 2:
这份仍然开放的报告看起来像是引入观察到的行为的绝佳候选者:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859732
(通过评论发现使用 RPATH 但不是 RUNPATH?)
编辑 3:
根据评论者的建议,我ld
在构建扩展之前重新检查了更新配置并解决了问题!我以前试过这个,但在构建尝试之间一定忽略了一些东西:
我仍然不知道为什么LD_LIBRARY_PATH
在这种情况下不能正常工作,但是将 Instant Client 库路径添加到链接器配置似乎是一种更好的方法。
编辑 4:
我在之前的编辑中说过,修改 是ldconfig
一种更好的方法,但我意识到(根据评论者的好建议)这样做会导致不良的库冲突,因为影响是系统范围的。
事后看来,通过将运行时库链接修改限制在执行环境中,通过LD_LIBRARY_PATH
. 因此,我有动力确定为什么这在 Ubuntu 18.04 LTS 上不起作用。
我觉得我已经明确地确定 PHP-FPM 守护程序LD_LIBRARY_PATH
在 Ubuntu 上会忽略(并且至少从 Ubuntu 16.04 LTS 开始;请参阅评论以获取解释)。
ld.so(8)
手册页状态(与搜索运行时库路径的顺序有关):
使用环境变量 LD_LIBRARY_PATH(除非可执行文件在安全执行模式下运行;见下文)。[原文如此] 在这种情况下,它会被忽略。
到目前为止,我想不出任何其他原因会忽略该路径。其中secure-execution mode
,同一份文件说:
首先,安全执行模式似乎没有生效,因为 PHP 可执行文件没有显示此标志(AT_SECURE
is 0
):
我突然想到,子 FPM 池进程可能表现出不同AT_SECURE
的值,但 PHP-FPM 守护程序本身以及任何子进程的输出都是相同的。父级和子级都具有以下值:
其次,鉴于以下情况,这些原因似乎都不适用:
1)没有迹象表明 PHP-FPM 或其子进程具有不同的真实有效的用户或组 ID(感谢https://unix.stackexchange.com/a/202359的此命令):
2) 有问题的二进制文件没有任何功能(以下命令不产生输出):
3) 我已经确保 AppArmor 被禁用(它没有应该影响 PHP-FPM 的策略,无论如何):
LD_LIBRARY_PATH
那么,如果不是出于上述任何原因,为什么 PHP-FPM 会忽略?
编辑 5(解决方案):
一位精明的评论者@vinc17 指出,在运行的系统上systemd
,环境变量(例如 )LD_LIBRARY_PATH
不一定会传播到通过systemd
单元启动的进程。
换句话说,PHP-FPM 不是“忽略” LD_LIBRARY_PATH
,而是它没有被传递给进程。并且尝试LD_LIBRARY_PATH
在 PHP-FPM 配置中进行设置是徒劳的,因为对值做任何有用的事情已经太晚了。
根据这个建议,我想到LD_LIBRARY_PATH
在systemd
上下文中进行设置,即在启动 PHP-FPM 守护程序的单元文件中进行设置,在这种情况下 PHP-FPM 会成功加载 OCI8 扩展。
不用说,我们想避免编辑包维护者的文件(以避免在未来升级期间发生冲突),所以我们改为扩展它:
在这个文件中,我们添加以下内容:
为了使更改生效:
有关解决多个共同安装的 PHP 版本的更完整示例,请参阅我在https://github.com/oerdnj/deb.sury.org/issues/865#issuecomment-395441936上的帖子。
php - oci8、php7 和 Oracle 10.1 兼容性
我必须将系统从 升级php5.6
到php7.2
. 该系统使用oracle 10.1
数据库。
现在我尝试收集所有信息,但仍然对,php
和数据库之间的兼容性感到困惑。oci8
instant client
我读到,使用 php7 我必须至少安装oci8 2.1
,但这不适用于oracle 10.1
.
那是对的吗?
或者是否可以php7
使用 oracle运行10.1
?
请赐教:)