标签: oracle-call-interface

我可以从两个oci客户端维护一个Oracle会话吗?

是否有可能从一个进程连接到Oracle(通过OCI),然后从另一个进程连接到同一个数据库会话?

在我当前的应用程序中,有两种方法可以访问数据库:同步数据库和异步数据库(通过使用单独的进程,通过套接字进行通信).问题是这两种方法实现了不同的会话.

如果我尝试在一个会话上进行例如更新,那么尝试从另一个会话更新同一个表而不提交,我在OCI调用上挂起.

更糟糕的是,如果从一个会话设置会话变量 - 另一个会话没有看到它(这正是名称所说的......).

c++ oracle oracle-call-interface

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

用于'IN'语句的PHP OCI8绑定(未知数量)参数

对于SQL IN子句,如何在使用PHP OCI8绑定SQL时处理未知数量的参数?

例如,给出以下查询

select * from table1
where id > :id_1
and id in (:id_array_of_unknown_size)
Run Code Online (Sandbox Code Playgroud)

和要绑定的变量数组

$bind_array = array(
    ':id_1' => '1',
    ': id_array_of_unknown_size' => array('7','2','5',),
);
Run Code Online (Sandbox Code Playgroud)

另外需要注意的是,在我的特定情况下,输入array($bind_array)可能包含也可能不包含绑定元素的子数组.它也可以是以下

select * from table1
where id > :id_1
and id !=  :id_2
Run Code Online (Sandbox Code Playgroud)

$bind_array = array(
    ':id_1' => '1',
    ':id_2' => '5',
);
Run Code Online (Sandbox Code Playgroud)

php sql oracle-call-interface

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

OCIErrorGet和OCI_ERROR的多个错误处理

因为OCIErrorGet()它记录了它可能返回多个错误,我用它来提取以下方法OCI_SUCCESS_WITH_INFO,但目前不适用于OCI_ERROR:

void check_error( sword status )
{
    switch( status ) {
    case OCI_SUCCESS:
        break;

    case OCI_SUCCESS_WITH_INFO:
        {
           ub4 recordno = 1;
           while( status != OCI_NO_DATA ) {
              sb4 errcode = 0;
              text errbuf[ 1024 ];
              status = ::OCIErrorGet( m_err, recordno, (text*)NULL, &errcode, errbuf, sizeof( errbuf ), OCI_HTYPE_ERROR );
              if( status == OCI_SUCCESS ) {
                 std::cout << "oracle info: " << (const char*)errbuf << std::endl;
              }
              else {
                 assert( status == OCI_NO_DATA );
              }
              ++recordno; …
Run Code Online (Sandbox Code Playgroud)

c++ oracle oracle-call-interface

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

尝试加载php_oci8.dll时启动时的PHP警告

我正在使用XAMPP并尝试为sql配置Oracle连接.

我取消注释该行extension=php_oci8.dll,最初它最终出现错误(缺少oci.dll),但后来我从Oracle网页下载了instantclient.我尝试使用版本10.2,11.2和12.1,但都没有工作.显然我已经将这些库的路径添加到我的PATHenv变量中.

我在启动Apache时得到的警告是: PHP Warning: PHP Startup: in Unknown on line 0

我尝试连接时的错误是: PHP Fatal error: Call to undefined function oci_connect() in ...

我试过php_oci8.dllphp_oci8_11g.dll.这些文件在我的php/ext目录中(它们包含在xampp中),我的instantclient被添加到PATH,如果我禁用这些模块,则不会显示警告.我试过重启服务和电脑.

你能帮我找到一个如何正确配置它的解决方案吗?我正在使用具有管理权限的Windows 8.1.

BTW.我phpinfo()说OCI8被激活(但功能oci_connect仍然不起作用).

编辑:当我尝试手动运行PHP时,我终于得到错误显示错误:Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_oci8_11g.dll' - %1 is not a valid Win32 application. in Unknown on line 0你能帮我找到哪里可以下载正确的版本?

php oracle oracle-call-interface

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

docker:来自守护进程的错误响应:OCI 运行时创建失败:无法检索 OCI 运行时错误

我的 docker 在最近更新后开始出错。现有容器可以工作,但我无法构建或运行任何映像。

一个简单的

码头工人运行你好世界

给我一个错误:

docker: 来自守护进程的错误响应:OCI 运行时创建失败:无法检索 OCI 运行时错误(打开 /run/containerd/io.containerd.runtime.v1.linux/moby/881b53be5cfe91d19577414c2f4a52dd06804624fe1d2189d 或 nocf3c1d1d2189d 等文件) runc 未成功终止:未知。

我尝试了互联网上关于此问题的所有建议,例如重新启动、建立链接、重新安装.....

我当前的 docker 版本是 18.09.5,Ubuntu 19.04

有没有人有类似的问题并解决了它?

runtime oracle-call-interface docker

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

PHP oci_bind_by_name浮动为数值

我需要将浮点数绑定到OCI语句。

我在做什么:

$price = 0.1
oci_bind_by_name($resource, 'price', $price);
Run Code Online (Sandbox Code Playgroud)

在我的Oracle DB中,“ price”是存储过程的参数,其类型为NUMERIC。

执行我的语句后,出现以下错误:

消息:oci_execute()[function.oci-execute]:ORA-06502:PL / SQL:数字或值错误:字符到数字的转换错误ORA-06512:在第1行

如果$ price是一个整数,则一切正常。在PHP文档http://lv.php.net/manual/zh/function.oci-bind-by-name.php中,我没有找到第五个参数的特殊浮点类型(int $ type = SQLT_CHR)。

找到答案:我只是在操作系统中将小数符号从“,”更改为“”。现在一切正常

php data-binding oracle oracle-call-interface

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

如何让OCI lib与R Oracle一起使用红帽机?

我需要在我的rhel 6.3机器上运行OCI lib,我遇到了一些无法找到的OCI头文件的问题.我安装了(使用yum install)

甲骨文instantclient11.2-基本-11.2.0.3.0-1.x86_64.rpm

因为这个官方页面所有我需要运行OCI.为了测试整个事情,我已经安装了sqplus64,它在我设置后工作export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib.遗憾的是,设置后无法找到头文件LD_LIBRARY_PATH.实际上我并不感到惊讶,因为include这些oracle路径中没有任何目录.

所以问题是:我从哪里获取这些丢失的头文件?他们真的已经在那里,我只能找到它们吗?

顺便说一句:我正在做这整个练习,因为我想在我的R Studio服务器上使用ROracle,这个R包依赖于OCI库.一旦我回到R领域,我的道路就会变得更加崎岖不平.

编辑:这个文档对我有所帮助.但是,我想我现在找到了一些头文件:"/ usr /include/oracle/11.2/client64".但是我必须将哪个变量设置到此位置?

oracle redhat r oracle-call-interface rstudio-server

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

java.lang.UnsatisfiedLinkError:java中没有ocijdbc11.library.path

我试图让JDBC OCI连接的Oracle 11g使用OS验证

我做了一个示例控制台应用程序来测试某些客户端计算机上的连接

我在具有jdk 6的机器上开发了应用程序,并在项目中使用了jar ojdbc6.jar.

我用来连接数据库的代码如下:

OracleDataSource ods = new OracleDataSource();
String tnsName="Prod";
ods.setURL("jdbc:oracle:oci:/@"+tnsName);
Connection conn = ods.getConnection();
Run Code Online (Sandbox Code Playgroud)

我正在尝试从安装了oracle11g的客户端计算机上运行此应用程序,并且在路径上将oracle主目录设置为: C:\ orant\jdk\bin

路径:C:\ orant\bin包含oci.dll,不包含ocijdbc11.dll

客户端安装了jre7并且没有jdk.

当试图在os验证到oracle数据库的客户端机器上运行上面的代码时,我遇到以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc11 in java.
library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3178)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java
:3174)
        at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:233)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:
508)
        at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:133)
        at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtensio
n.java:53)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
        at …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc oracle-call-interface

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

未设置GOPATH环境变量

我正按照这些说明尝试安装Oracle Driver for Go(go-oci8)

我面临的问题是使用$ GOPATH环境变量.当我执行命令时:

sudo go get github.com/mattn/go-oci8

我收到错误:

cannot download, $GOPATH not set. For more details see: go help gopath

但是,我已经正确设置了GOPATH.我的环境看起来像这样:

env | grep GO

GOARCH=amd64
GOROOT=/usr/local/go
GOOS=linux
GOPATH=/home/myuser/go/

ls $GOPATH
bin pkg src

我发现了一个类似的帖子,但解决方案不适用于我的情况.

linux oracle oracle-call-interface go

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

pdo_oci make不起作用

最近我将opensuse 12.3更新为更新的13.1

不幸的是,我无法编译所需的pdo_oci.so.使用本指南,y可以在12.3上编译extnention:

http://forums.opensuse.org/english/other-forums/development/programming-scripting/418966-installing-pdo_oci-php.html

但不幸的是,在实际版本上我很难找到解决方案.目前我正在尝试执行make,但是你得到以下错误:

/home/temp/PDO_OCI-1.0/pdo_oci.c:34:1: error: unknown type name 'function_entry'
 function_entry pdo_oci_functions[] = {
 ^
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: braces around scalar initializer [enabled by default]
  {NULL, NULL, NULL}
  ^
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: initialization makes integer from pointer without a cast [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: excess elements in scalar initializer [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: warning: (near initialization for 'pdo_oci_functions[0]') [enabled by default]
/home/temp/PDO_OCI-1.0/pdo_oci.c:35:2: …
Run Code Online (Sandbox Code Playgroud)

php pdo oracle-call-interface opensuse

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

标签 统计

oracle-call-interface ×10

oracle ×7

php ×4

c++ ×2

data-binding ×1

docker ×1

go ×1

java ×1

jdbc ×1

linux ×1

opensuse ×1

pdo ×1

r ×1

redhat ×1

rstudio-server ×1

runtime ×1

sql ×1