标签: oracle-call-interface

libaio.so.1:无法打开共享对象文件

我有一个简单的测试程序,当我运行时,我得到:

./hello: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我这样链接:

$(CC) $(CCFLAGS) -o hello hello.o -L../ocilib-3.9.3/src/.libs -L../instantclient_11_2 -locilib
Run Code Online (Sandbox Code Playgroud)

我的LD_LIBRARY_PATH包含:

LD_LIBRARY_PATH=../ocilib-3.9.3/src/.libs:../instantclient_11_2:/usr/lib
Run Code Online (Sandbox Code Playgroud)

/ usr/lib看起来像这样:

Linux$ ls -l /usr/lib/libaio*
lrwxrwxrwx  1 root root   15 Nov  5  2008 /usr/lib/libaio.so.1 -> libaio.so.1.0.1
-rwxr-xr-x  1 root root 2632 Sep 16  2005 /usr/lib/libaio.so.1.0.0
-rwxr-xr-x  1 root root 2628 Sep 16  2005 /usr/lib/libaio.so.1.0.1
Run Code Online (Sandbox Code Playgroud)

输出ldd你好:

libocilib.so.3 => ../ocilib-3.9.3/src/.libs/libocilib.so.3 (0x0000002a95558000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003811200000)
libclntsh.so.11.1 => ../instantclient_11_2/libclntsh.so.11.1 (0x0000002a956c4000)
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
libnnz11.so …
Run Code Online (Sandbox Code Playgroud)

linux oracle oracle-call-interface

38
推荐指数
3
解决办法
10万
查看次数

如何找出上次更新Oracle表的时间

我可以找出在Oracle数据库中的表上执行最后一次INSERT,UPDATE或DELETE语句的时间,如果是,如何执行?

一点背景:Oracle版本为10g.我有一个定期运行的批处理应用程序,从单个Oracle表中读取数据并将其写入文件.如果自上次作业运行以来数据没有发生变化,我想跳过此步骤.

该应用程序是用C++编写的,并通过OCI与Oracle通信.它使用"普通"用户登录Oracle,因此我无法使用任何特殊的管理员资源.

编辑:好的,"Special Admin Stuff"并不是一个很好的描述.我的意思是:除了从表中选择和调用存储过程之外,我什么也做不了.如果想在2010年之前完成任务,那么改变数据库本身的任何内容(比如添加触发器)都是不可思议的选择.

oracle oracle-call-interface

24
推荐指数
7
解决办法
21万
查看次数

Rails NoMethodError:BigDecimal:Class 的未定义新方法

我的应用程序在:

ruby-2.6.4 Rails 4.2.8 activerecord-4.2.8

我升级Rails应用程序,以ruby-2.6.4 当运行在开发rake任务,进行测试,我对收到错误BigDecimal().../vendor/bundle/ruby/2.6.0/gems/ruby-oci8/...

ArgumentError: invalid value for BigDecimal(): "0.E+00"
/sha/git/sha_human_resources/shared/bundle/ruby/2.6.0/gems/ruby-oci8-2.1.8/lib/oci8/bindtype.rb:35:in `BigDecimal'
...
.../vendor/bundle/ruby/2.6.0/gems/ruby-oci8-2.1.8/lib/oci8/bindtype.rb:216: warning: constant ::Fixnum is deprecated
.../vendor/bundle/ruby/2.6.0/gems/ruby-oci8-2.1.8/lib/oci8/bindtype.rb:219: warning: constant ::Bignum is deprecated
.../vendor/bundle/ruby/2.6.0/gems/ruby-oci8-2.1.8/lib/oci8/compat.rb:73: warning: constant ::Fixnum is deprecated
Run Code Online (Sandbox Code Playgroud)

我找到了几个关于更新bigdecimaloci8gems 的线程,所以尝试了几个版本,发现这些有帮助git diff Gemfile::

-gem 'ruby-oci8', '~> 2.1.5'
+gem 'ruby-oci8', '~> 2.2.8'
Run Code Online (Sandbox Code Playgroud)

并添加了一个 bigdecimal gem:

+gem "bigdecimal", ">= 2.0.0"
Run Code Online (Sandbox Code Playgroud)

现在,当我运行 rake 任务时,出现此错误:

rake aborted!
NoMethodError: undefined method `new' for BigDecimal:Class
.../vendor/bundle/ruby/2.6.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object/duplicable.rb:111:in `<class:BigDecimal>'
.../vendor/bundle/ruby/2.6.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object/duplicable.rb:106:in `<top (required)>'
.../vendor/bundle/ruby/2.6.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object.rb:3:in …
Run Code Online (Sandbox Code Playgroud)

oracle-call-interface bigdecimal ruby-on-rails-4

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

Oracle瘦驱动程序与OCI驱动程序.优点和缺点?

当您开发一个与oracle DB对话的Java应用程序时,有两个选项吗?一个是oracle瘦驱动程序,另一个是需要自己安装的OCI驱动程序(如果我误解,请更正).

现在,有什么利弊?很明显,薄型驱动器在安装方面听起来要好得多,但是OCI可以做什么,薄的却不行?

开发环境是Tomcat6 + Spring 3.0 + JPA(Hibernate)+ apache-DBCP

java oracle persistence oracle-call-interface

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

在Oracle下10分钟内插入1000万个查询?

我正在处理文件加载程序.

此程序的目的是获取输入文件,对其数据进行一些转换,然后将数据上载到Oracle数据库中.

我面临的问题是我需要优化在Oracle上插入非常大的输入数据.

我正在将数据上传到表中,比方说ABC.

我在我的C++程序中使用Oracle提供的OCI库.具体来说,我使用OCI连接池进行多线程并加载到ORACLE.(http://docs.oracle.com/cd/B28359_01/appdev.111/b28395/oci09adv.htm)

以下是用于创建表ABC的DDL语句 -

CREATE TABLE ABC(
   seq_no         NUMBER NOT NULL,
   ssm_id         VARCHAR2(9)  NOT NULL,
   invocation_id  VARCHAR2(100)  NOT NULL,
   analytic_id    VARCHAR2(100) NOT NULL,
   analytic_value NUMBER NOT NULL,
   override       VARCHAR2(1)  DEFAULT  'N'   NOT NULL,
   update_source  VARCHAR2(255) NOT NULL,
   last_chg_user  CHAR(10)  DEFAULT  USER NOT NULL,
   last_chg_date  TIMESTAMP(3) DEFAULT  SYSTIMESTAMP NOT NULL
);

CREATE UNIQUE INDEX ABC_indx ON ABC(seq_no, ssm_id, invocation_id, analytic_id);
/
CREATE SEQUENCE ABC_seq;
/

CREATE OR REPLACE TRIGGER ABC_insert
BEFORE INSERT ON ABC
FOR EACH …
Run Code Online (Sandbox Code Playgroud)

sql database oracle oracle-call-interface bulk-load

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

Oracle OCI,绑定变量和ID IN(1,2,3)之类的查询

简洁版:

我正在寻找以下Java技术的C++ OCI改编,其中代码能够将数组数组(数组大小可以变化)绑定到非PL/SQL SELECT语句中,然后在WHERE ID IN (...)样式检查中使用结果数组.

http://rafudb.blogspot.com/2011/10/variable-inlist.html

原始问题:

我们有一个C++应用程序通过OCI与Oracle通信.我们正在尝试修复通过连接文本生成SQL查询的旧代码; 相反,我们希望尽可能多地使用绑定变量.我们提出了一个特殊的案例,即我们没有一个好的解决方案.

SELECT * FROM MyTable WHERE ID IN (1, 4, 10, 30, 93)
Run Code Online (Sandbox Code Playgroud)

其中(1, 4, 10, 30, 93)一部分来自一个vector<int>或数据的其他一些灵活大小容器.如果我们知道它总是五个值,我们可以这样做:

SELECT * FROM MyTable WHERE ID IN (:1, :2, :3, :4, :5)
Run Code Online (Sandbox Code Playgroud)

但它可能是一个条目,或十个,甚至可能是零.显然,如果我们将查询构建为字符串,我们可以根据需要添加尽可能多的数字,但目标是尽可能避免这种情况并坚持只绑定变量.

有没有一个很好的方法来实现这一目标?例如,在OCI中,我可以绑定一个数组然后从中进行子选择吗?

SELECT * FROM MyTable WHERE ID IN (SELECT * FROM :1)
Run Code Online (Sandbox Code Playgroud)

:1OCI阵列在哪里?(可能语法不同.)有没有人有这方面的经验?示例代码将是天赐之物,因为我倾向于编写原始OCI.谢谢 :)

编辑:我想比在PL/SQL过程解析的字符串中绑定更好,如果可能的话.我相信在很多情况下我们会吹掉4000个字符的限制,而且我觉得这只是交易一种我很舒服的字符串操作,另一种我不是(我不能)调试很容易).如果可能的话,我想将一个值数组(或某种形式的数据集)绑定到一个标准SQL语句中.

编辑2:一些调查发现以下链接似乎正在做我想要的,但在Java:http: //rafudb.blogspot.com/2011/10/variable-inlist.html有谁知道如何适应这个处理C++ OCI?

c++ sql oracle oracle-call-interface bind-variables

11
推荐指数
1
解决办法
7604
查看次数

Oracle,PDO_OCI与OCI8

我工作的公司目前使用一些基本功能来抽象OCI库作为数据库连接的手段.我们正在考虑切换到PHP的PDO对象,但从一些快速搜索来看,看起来Oracle驱动程序比其他PDO驱动程序稍微不成熟.对于在生产环境中使用PDO/oci8的人,我将不胜感激.

谢谢!

php oracle pdo oracle-call-interface

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

针对预期的Oracle异常禁止PHP警告

我有一个PHP函数调用PL/SQL包,它可以抛出许多已知的异常(即用户异常),我可以在PHP中捕获并执行操作.问题是,尽管在PHP中捕获异常,但我在PHP日志文件中收到一条警告,其中包含来自PL/SQL异常的堆栈跟踪:

PHP Warning:  oci_execute(): ORA-20001: Something isn't valid
ORA-234565: at "MY.PACKAGE", line 234
ORA-923485: at "MY.PACKAGE", line 123
Run Code Online (Sandbox Code Playgroud)

我怎样才能抑制这些OCI警告?我不想压制所有警告,因为它们对其他问题有帮助,但是当我的PL/SQL出现预期错误时,我不希望它填满我的日志文件.

php oracle plsql oracle-call-interface suppress-warnings

10
推荐指数
1
解决办法
3357
查看次数

适用于SIGSEGV/SIGABRT和朋友的Oracle Pro*C/OCI安装处理程序 - 为什么以及如何禁用?

当使用Pro*C(Oracle for C-Code的嵌入式SQL预处理器)或OCI时,我注意到connect/init例程安装了一些信号处理程序.

这意味着在之前

EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbspec ;
Run Code Online (Sandbox Code Playgroud)

或者a

OCIEnvNlsCreate()
Run Code Online (Sandbox Code Playgroud)

我可以验证,例如这些信号有以下处理程序:

No              NAME                Pointer   SA_SIGINFO   SIG_DFL   SIG_IGN
?????????????????????????????????????????????????????????????????????????????
 1            SIGHUP                  (nil)        false      true     false
 2            SIGINT                  (nil)        false      true     false
 3           SIGQUIT                  (nil)        false      true     false
 4            SIGILL                  (nil)        false      true     false
 5           SIGTRAP                  (nil)        false      true     false
 6           SIGABRT                  (nil)        false      true     false
 7            SIGBUS                  (nil)        false      true     false
 8            SIGFPE                  (nil)        false      true     false
 9           SIGKILL                  (nil)        false      true     false
10           SIGUSR1 …
Run Code Online (Sandbox Code Playgroud)

c oracle signals oracle-call-interface oracle-pro-c

10
推荐指数
1
解决办法
2431
查看次数

当我尝试在yii框架中执行查询时,重置了连接

当我尝试连接到我的数据库时,一切正常,但是当我尝试使用query()命令执行SQL语句时,我收到此错误:

连接被重置

页面时重置了与服务器的连接

页面无法加载.

$sql = <<<SQL
SELECT
1
FROM
dual
SQL;
$oci=Yii::app()->db;
$command = $oci->createCommand($sql);
$dataReader = $command->query();
Run Code Online (Sandbox Code Playgroud)

我正在尝试在index.php页面中执行此操作,如果我对最后一行进行注释,则页面加载成功.

我测试了连接,echo isset(Yii::app()->db);我得到了1.

我正在oci8Pdo.OciDbConnection上课.

编辑:

print_r($ command)结果:

CDbCommand Object ( [params] => Array ( ) [_connection:private] => OciDbConnection Object 
( [pdoClass] => Oci8PDO [connectionString] => oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=********)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=********)));
[username] => ***** [password] => ******* [schemaCachingDuration] => 0
[schemaCachingExclude] => Array ( ) [schemaCacheID] => cache
[queryCachingDuration] => 0 [queryCachingDependency] => [queryCachingCount] => 0 
[queryCacheID] => cache …
Run Code Online (Sandbox Code Playgroud)

php oracle oracle-call-interface yii

9
推荐指数
1
解决办法
863
查看次数