问题标签 [oracle-call-interface]
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.
php - OCI8 脚本给出一个空白页
好的,我正在尝试将 OCI8 与 PHP 5.3.x 和 Oracle 10g 以及最新的 Apache 2.2.x 一起使用!我做了所有写在 Oracle 和 PHP 地下手册中的东西来设置它。但是当运行这个脚本时,我得到的只是一个没有错误/警告的空白页!我已经设置 PHP 来显示错误,但仍然没有运气!我还为 10g 安装了 Oracle 即时客户端!有人可以帮帮我吗 !再次感谢 !
我试图查看连接是否有效的脚本是,
c - 无法针对 OCILIB 进行编译
我在 3.9.0 版上针对 ocilib (libocilib.a) 编译一些代码时遇到问题:
$ ls
libocilib.a ocilib.h test.c$ gcc -o 测试 -L。-locilib test.c
/tmp/cc4071VP.o:在函数“main”中:
test.c:(.text+0x27):未定义对 OCI_Initialize
test.c:(.text+0x64) 的引用:未定义对 OCI_ConnectionCreate
测试的引用。 c:(.text+0x9d): 未定义引用 OCI_StatementCreate
test.c:(.text+0xaf): 未定义引用 OCI_ExecuteStmt
test.c:(.text+0xb8): 未定义引用 OCI_GetResultset
test.c:(.text +0xcc):对 OCI_GetString 的未定义引用
test.c:(.text+0xdd):对 OCI_FetchNext 的未定义引用
test.c:(.text+0xe6):对 OCI_Cleanup 的未定义引用
collect2:ld 返回 1 个退出状态
行。在这种情况下:
$ 字符串 libocilib.a | grep OCI_Initialize
OCI_Initialize
OCI_Initialize
OCI_Initialize
OCI_Initialize
该人(文斯)自己在另一页上回答了这个问题的解决方案,但它对我不起作用。
当我尝试针对 .so 进行编译时,它的工作原理是:
$ ls
libocilib.so* libocilib.so.3* libocilib.so.3.9.0* ocilib.h test.c$ gcc -o 测试 -L。-locilib test.c
$
程序也按预期运行(当然是在修改 LD_LIBRARY_PATH 之后!)。
前面提到的解决方案包括一些定义-DOCI_IMPORT_LINKAGE
,-DOCI_CHARSET_ANSI
我已经尝试过这两个(尽管在线文档说 DOCI_IMPORT_LINKAGE 仅在编译库本身时使用。我认为这与实际 oracle 库的链接有关而不是它ocilib 也试过了。
说到这,如果它有助于回答这个问题,我编译了库以进行运行时链接,并将--with-oracle-import=runtime
标志传递到 ./configure。
还有一点需要注意的是,在 Windows 32 位上也会发生类似的事情。Windows 64 没有问题。我可以链接并运行针对我自己编译的 libocilib.lib 的程序就好了。
希望我提供了足够的线索......有人知道我做错了什么吗?
提前感谢帮助。
php - 来自 PHP 的完整 Oracle 备份
我使用 Oracle 后端维护一个 PHP 驱动的 Web 应用程序。该应用程序与许多第三方应用程序交互,因此信息通过 XML 文件、Microsoft Access 数据库和 HTML 表单的组合进行管理。目前有 80 个表,其中包含许多 BLOB 和相当多的外键关系。所有程序都在一份(当然)没人读过的文件中仔细解释过。客户对他的数据感到不安,因此给了他一个可以进行一些改进的估计(例如在某些操作中添加预览和确认)。
遗憾的是,客户误解了其中一个规范(部分导出将在 12 个工时内完成),他期待一个完整的备份和恢复功能,允许他通过 Web 浏览器保存和恢复完整的数据库,而无需 DBA 干预.
在与客户进行另一次争论之前,我想知道我是否有任何选项可以及时实际实现此功能,考虑到它不需要任何改进(例如,无需选择要恢复)。
生产服务器是一个运行 PHP/5.2.9 的 Windows Server 2003 机器。Oracle 服务器是一个运行“Oracle9i Release 9.2.0.1.0 - 64bit Production”的远程机器。
(请注意,我不是 DBA,所以可能有一些我不知道的知名解决方案。)
windows - Perl 脚本引发 oci.dll 错误,DBD
我有连接到 Oracle 数据库的 perl 脚本,打开一个文本文件并从数据库表中的文件加载数据,该脚本在我的开发机器(windows xp 32 位)上完美运行,但是当我将脚本加载到生产服务器(windows 2003 64 位)并从命令行运行它,它会打开一个 perl.exe - 无法找到组件窗口,消息说
此应用程序无法启动,因为 OCI.dll 未找到。重新安装应用程序可能会解决此问题。
命令行输出为:
install_driver(Oracle) 失败:无法为模块 DBD::Oracle 加载“C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll”:load_file:%1 不是 C:/Perl64 上的有效 Win32 应用程序/lib/DynaLoader.pm 第 191 行。在 (eval 14) 第 3 行编译失败在 (eval 14) 第 3 行的要求中。可能需要的共享库或 dll 没有安装在 c:\warranty\warrantyImport.pl 行的预期位置15
我已经重新安装了 oracle 客户端,我尝试卸载活动 perl 和 oracle 客户端,然后在 perl 之前安装 oracle 客户端,因为听说这可能会导致问题。
我认为这可能是权限,所以我编写了一个简单的 perl 脚本来打开 oci.dll 并在无法打开时引发错误,它能够正确打开它。
我确保 C:\oracle\product\10.2.0\client_1\bin 在 PATH 环境变量中。
我可以使用 SQLPlus 连接到数据库
我已将 OCI.dll 添加到与 perl 脚本相同的目录中。
我现在终于没有想法了....任何人都可以提出任何建议,我正在努力让它发挥作用。
详情 服务器正在运行 ActivePerl 5.14.1 Build 1401(64 位) Oracle 数据库是 10g Oracle 客户端是 10.2.0
php - oci_bind_by_name 和 to_date PHP/OCI/Oracle
我有以下内容:
这给出了以下错误:
但是,如果我只是不绑定并将其直接$REGISTERED_TIMESTAMP
插入- 它可以完美运行。to_date
$query
这是怎么回事?!这快把我逼疯了!
php - PHP oci select 在 Windows Apache 上返回四舍五入的浮点数
查询 Oracle 数据库时遇到一个奇怪的问题。我在完全相同的逻辑上得到不同的结果,但在两个不同的 Windows Apache 设置上,据我所知,它们实际上是相同的版本和配置。
问题是当我从表中选择 3 列( Number(10),Number(10),Number(10,4) )时,相同的查询在一台机器上为第 3 列返回正确的小数,而在另一台机器上它会删除小数,我只得到数字的整个部分。
我不知道什么设置控制 Oracle 如何返回 Number(10,4) 数据类型,我看不出两台机器上的 Oracle 客户端、Apache 和 PHP 设置有任何差异。
这可能是什么原因?
提前谢谢,
伊利亚
php - OCI_PARSE 使用别名表
我遇到了 PHP 的 Oracle 解析器的问题。如果我使用表的别名发送所有请求,则会收到不一致的数据类型错误。有谁知道如何处理星号?
这很烦人,因为我不想输入字段名称。星号在不使用表别名时有效,因此它应该可以工作。Oracle 不介意,所以它在 php 解析器中。
例如:
这si.*
是导致问题的原因。
有任何想法吗?
php - 试图从数据库错误中获取数据
这是脚本。我在第 29 行遇到错误,即..
(也比较这个问题PHP 错误:警告:ociparse() 期望参数 2 是字符串)
php - 调试仅在 PHP/OCI 中出现的 Oracle 错误
我有一个查询,旨在计算总小时数,并根据为 Oracle 数据库编写的这些小时数的组成分配一个值。
查询在 Navicat 和 Toad 中运行良好,但在使用 OCI/PHP 运行查询时出现以下错误:
ORA-00972: 标识符太长
我了解该消息的含义,但我拥有的所有标识符均不超过 30 个字符。以防万一,我给表名起了别名,这没有什么区别。
我的代码如下:
我做错了什么,是否有任何方法/工具可用于将来进一步诊断此类问题?
编辑: 根据评论,我尝试删除较大的字段并简化查询以尝试缩小问题范围。以下查询也提供了相同的错误,其中最大的字段名称被删除。
c - Oracle OCI - 以其他用户身份运行时出现 ORA-12705 失败
我有一个使用 OCI 与数据库通信的 C 应用程序。我使用的是即时客户端方法,因此服务器上没有独立的 Oracle 安装 - 只是应用程序链接的几个库。
通常,应用程序以用户 dai 身份运行,一切正常。但是,如果应用程序作为另一个用户(在组 dai 中)运行,它将无法运行,报告:
所以我可以想象这是一个权限错误,但我不确定它试图访问哪些文件。Oracle 库的权限是
您可以猜到主要的 OCI 库是静态链接的,但是有一个动态链接的库(不知道为什么,但是 AIX Instantclient 包附带了这些文件......)。从两个用户来看,我的 LIBPATH 看起来都不错:
我还需要检查哪些其他权限?
编辑:我刚刚尝试运行truss
(AIX 相当于 Linux strace
)看看发生了什么。以 dai 用户身份运行时,我看不到它读取任何意外文件。Truss 似乎在跟踪 set-uid 程序时遇到问题 - C 应用程序的权限设置如下:
所以我做了chmod a-s
并再次尝试,它现在可以工作了!
所以程序在没有 s-bit 的情况下运行正常,但只要我把它放回去,它就会再次中断。我无法使用 s-bit 集运行 truss,这使得很难找出为什么会这样。如果没有设置 s 位,该程序在其他情况下无法运行,因此这不是一个可行的解决方案,但希望是指向问题所在位置的指针。