繁体   English   中英

PHP & Oracle - oci_connect() ORA-12705: 无法访问 NLS 数据文件

[英]PHP & Oracle - oci_connect() ORA-12705: Cannot access NLS data files

多年来,我们一直在我们的服务器上使用 Oracle,但 IT 部门的某个人昨天在没有明确警告的情况下将其删除,这真的让我们的系统崩溃了!

我已经按照 cwallenpoole 的建议(谢谢)采取了行动,并取得了良好的进展:PHP 现在至少包括 oracle 函数(即 oci_connect),但我现在遇到另一个错误消息:

警告:oci_connect() [function.oci-connect]: ORA-12705: 无法访问 NLS 数据文件或无效环境

我们确保 tnsnames.ora 等文件在正确的位置,但仍然没有乐趣:(

谢谢你

好的。 这是我个人的噩梦。 我真的在半夜醒来......或者我没有,但我已经花了几天时间解决这个问题。

所以,这对我有用:

  1. 你有Oracle Instant Client吗? 如果没有得到它。
  2. 你有 Oracle SDK吗? 如果没有得到它。
  3. 解压即时客户端。
  4. 将SDK解压到子目录下
  5. 添加 ORACLE_HOME 作为导出的命令行变量(*nix 中为 $ORACLE_HOME,win 中为 %ORACLE_HOME%)。 让它指向上述 Instantclient 文件夹的完全限定路径。
  6. 创建 ORACLE_BIN 并让它指向 SDK。
  7. 将 ORACLE_HOME 添加到您的 PATH。
  8. 重启Apache...

所以......这就是我通常做的......而且通常它有效......主要......

我认为实际上我只能说祝你好运和神速。

我可以让 PHP 连接到 Oracle 的唯一方法是使用 Zend 框架。

http://framework.zend.com/

按照此过程为 Oracle 数据库设置 NLS_LANG 环境变量。 为 Oracle 数据库设置 NLS_LANG 环境变量 确定 NLS_LANG 值。 在数据仓库数据库中,运行命令

SELECT * 来自 V$NLS_PARAMETERS

记下 NLS_LANG 值,其格式为 [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]。 例如:American_America.UTF8

对于 Windows:导航到控制面板 > 系统并单击高级选项卡。 单击环境变量。

在系统变量部分中,单击新建。 在变量名称字段中,输入 NLS_LANG。 在变量值字段中,输入在步骤 1 中返回的 NLS_LANG 值。NLS_LANG 值的格式应为 [NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]。 例如:American_America.UTF8。 对于 UNIX,设置变量如下所示: setenv NLS_LANG

例如:setenv NLS_LANG American_America.UTF8。 如果您的数据是 7 位或 8 位 ASCII 并且 Informatica 服务器在 UNIX 上运行,则设置 NLS_LANG _.WE8ISO8859P1 注意:确保按照此过程中的说明正确设置 NLS_LANG 变量,否则您的数据将不会显示正确。

创建变量后重新启动机器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM