快照启动后:Informix 客户端 -23101 / Oracle 即时客户端 -28759
After snapshot boot : Informix Client -23101 / Oracle instant client -28759
为了不浪费您的时间,我将描述我曾经拥有的和现在拥有的。我的应用程序写在 php 上。他们住在带有 nginx + apache 网络服务器的 redhat6 服务器上。我们将数据存储在 MySQL 数据库中,但我们从 Oracle 和 IBM Informix 数据库以及 mssql 中导入了大量数据。对于 Oracle & Informix,我已经安装了客户端 && 编译库 pdo_oci.so & pdo_informix.so 。几个月来,他们按预期工作。
但是一周前,管理员对虚拟服务器进行了快照,并重新加载了它。现在只有 MySQL 和 mssql 连接器可以工作,Oracle 和 IBM 客户端会报错。
甲骨文:-28759
Failed : SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-28759: failure to open file (/usr/local/src/php-5.3.3/ext/pdo_oci/oci_driver.c:579)/opt/project/www/test.php149
IBM Informix:-23101
Failed : SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101./opt/project/www/test.php146
好吧,正如官方文档所说,Informix 错误与 DB_LOACALE & CLIENT_LOCALE...等丢失的环境变量有关
这很奇怪,因为我一直都在使用这个字符串进行连接:
$dbh = new PDO ("informix:host=example.ru; database=some_db; server=db_net; CursorBehavior=0; DB_LOCALE=en_US.57372; CLIENT_LOCALE=en_US.57372;", "db_login", "pass");
我试图为 apache (httpd) 设置这个环境变量,但这个错误仍然存在。现在我在服务器重启后设置了这个变量,但没有成功。可能是我做错了什么或在错误的地方或用户名...
关于 Oracle ,文档说它与文件加载有关:
而且web doc说主要是ssl错误,跟客户端的问题有关,找不到SSL钱包文件。我有 TCPS 安全连接到带有钱包的 Oracle DB,我记得让 Instant 客户端查看正确的位置真的很麻烦。更重要的是,我启用了客户端跟踪,但只有当我直接从终端使用 sqlplus 时它才会写入日志。当我 运行 我的 php 脚本时,我只收到错误而没有日志。
问题:
如何正确启用 Informix 变量,或如何解决这个问题
以不同的方式发出。
如何为 oracle 启用 "net tracing",以
看看他在找什么?
- 如何为将来存储这些变量
reboots/reloads/snapshots...等?
这可能与文件/目录权限有关,而不是环境变量。
oracle 错误似乎表明它无法再 open/read 它需要的文件。
informix -23101 错误也可能是由于驱动程序无法读取语言环境支持所需的 GLS 文件引起的。
apache 用户是否有权访问 Informix Client SDK 目录和文件?
人们。 启用所有可能的跟踪并使用“strace”命令检查程序在哪里失败!!!
感谢 Luís Marques! 我在我的日志中找到了 gls 并试图为它制作 link.. 到真正的 IBM/informix/gls... 比另一个味精问题解决了.../我把软 link 从 /usr/informix 变成了我真正的 /opt/IBM/informix 并且 所有连接都成功唤醒了!
谢谢大佬。你真的帮我解决了这个麻烦。我 post 将此作为答案,但会接受您的回答,感谢您! =)
为了不浪费您的时间,我将描述我曾经拥有的和现在拥有的。我的应用程序写在 php 上。他们住在带有 nginx + apache 网络服务器的 redhat6 服务器上。我们将数据存储在 MySQL 数据库中,但我们从 Oracle 和 IBM Informix 数据库以及 mssql 中导入了大量数据。对于 Oracle & Informix,我已经安装了客户端 && 编译库 pdo_oci.so & pdo_informix.so 。几个月来,他们按预期工作。
但是一周前,管理员对虚拟服务器进行了快照,并重新加载了它。现在只有 MySQL 和 mssql 连接器可以工作,Oracle 和 IBM 客户端会报错。
甲骨文:-28759
Failed : SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-28759: failure to open file (/usr/local/src/php-5.3.3/ext/pdo_oci/oci_driver.c:579)/opt/project/www/test.php149
IBM Informix:-23101
Failed : SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101./opt/project/www/test.php146
好吧,正如官方文档所说,Informix 错误与 DB_LOACALE & CLIENT_LOCALE...等丢失的环境变量有关
这很奇怪,因为我一直都在使用这个字符串进行连接:
$dbh = new PDO ("informix:host=example.ru; database=some_db; server=db_net; CursorBehavior=0; DB_LOCALE=en_US.57372; CLIENT_LOCALE=en_US.57372;", "db_login", "pass");
我试图为 apache (httpd) 设置这个环境变量,但这个错误仍然存在。现在我在服务器重启后设置了这个变量,但没有成功。可能是我做错了什么或在错误的地方或用户名...
关于 Oracle ,文档说它与文件加载有关:
而且web doc说主要是ssl错误,跟客户端的问题有关,找不到SSL钱包文件。我有 TCPS 安全连接到带有钱包的 Oracle DB,我记得让 Instant 客户端查看正确的位置真的很麻烦。更重要的是,我启用了客户端跟踪,但只有当我直接从终端使用 sqlplus 时它才会写入日志。当我 运行 我的 php 脚本时,我只收到错误而没有日志。
问题:
如何正确启用 Informix 变量,或如何解决这个问题 以不同的方式发出。
如何为 oracle 启用 "net tracing",以 看看他在找什么?
- 如何为将来存储这些变量 reboots/reloads/snapshots...等?
这可能与文件/目录权限有关,而不是环境变量。 oracle 错误似乎表明它无法再 open/read 它需要的文件。
informix -23101 错误也可能是由于驱动程序无法读取语言环境支持所需的 GLS 文件引起的。
apache 用户是否有权访问 Informix Client SDK 目录和文件?
人们。 启用所有可能的跟踪并使用“strace”命令检查程序在哪里失败!!!
感谢 Luís Marques! 我在我的日志中找到了 gls 并试图为它制作 link.. 到真正的 IBM/informix/gls... 比另一个味精问题解决了.../我把软 link 从 /usr/informix 变成了我真正的 /opt/IBM/informix 并且 所有连接都成功唤醒了!
谢谢大佬。你真的帮我解决了这个麻烦。我 post 将此作为答案,但会接受您的回答,感谢您! =)