在AnySQL.net中搜索标签(Tags) 'OCI' 的结果:

切换到OCIThread多线程编程环境

    多线程的事困扰我好久了, 最初用fork遇到了进程间数据共享的问题, 改成vfork则主进程要等子进程结束后才继续. 后成改成用POSIX的线程(pthread)来写, 结果跑了一天, 我的OCI程序挂起了, 原因是遇到了一个Bug. 今天在网上搜索后发OCIThread, 就是Oracle包装了一层之后的多线程编程环境了. 将程序改了一下, 希望周一来时它没有挂住.     OCIThread要求在其他的OCIThread调用之前先执行如下调用: OCIThreadProcessInit();     然后以OCI_THREADED方式创建OCIEnv对象, 并执行OCIThread初始化: OCIThreadInit(seshp,errhp);     接下来就可以创建OCI线程了, 使用下面的调用: OCIThreadCreate(seshp, errhp, mycall, (dvoid *)param, NULL,NULL);     当被调用的函数执行完后, 线程就自动退出了. 当然在断开连接之前得结束OCIThread, 执行如下调用: OCIThreadTerm(seshp,errhp);  ...

在ociuldr的SQL中使用绑定变量

    在以前的ociuldr中不能使用绑定变量, 现在作了一些改进, 允许传入最多20个绑定变量(我想也够用了吧), 所有的变量类型都被当作VARCHAR2类型. 这样的改进不知道是否有必要, 还不得而知. SQL> select * from tab; TNAME                          TABTYPE         CLUSTERID ------------------------------ -------------- ---------- AULEXT                         TABLE A_SEQ_SYN                      SYNONYM A_V                            VIEW OBJD_LIST                      TABLE T                              TABLE TRANSACTION_CACHE_IOT_0        TABLE T_HASH                         TABLE T_LOB                          TABLE T_LONG                         TABLE T_LONGRAW                      TABLE T_TRUNC2                       TABLE T_TRUNC4                       TABLE 12 rows selected. C:MYDUL>ociuldr user=anysql/anysql@test...

我的DBDiff程序, 可以比较或同步表结构.

    首先在数据库中建两个用户: DBDIFF1和DBDIFF2. 并在DBDIFF1上运行下面的角本: -- run under user dbdiff1 CREATE TABLE T_DBDIFF1 ( COL1 NUMBER(10), COL2 NUMBER(20)); CREATE TABLE T_DBDIFF2 ( COL1 NUMBER(10) ); CREATE TABLE T_DBDIFF3 ( COL1 NUMBER(10) );     在DBDIFF2用户下运行以下角本: -- run under user dbdiff2...

fatal: ... wrong ELF class: ELFCLASS64

    今天有人在用Solaris上的ociuldr时遇到这个问题, 引起这个问题的原因是, ociuldr是编译成32Bit的程序的, 因此需要使用32Bit的Oracle客户端库, 在8i中, $ORACLE_HOME/lib是32Bit的库文件所在目录, $ORACLE_HOME/lib64是64Bit的库所在的目录, 而9i以后, $ORACLE_HOME/lib32是32Bit的库文件, $ORACLE_HOME/lib是64Bit的库文件, 一般在Oracle 9i及以上版本的服务器端, 默认的库文件查找位置(Linux/Unix: LD_LIBRARY_PATH变量, AIX: LIBPATH变量)是指向64Bit的客户端的, 这时运行ociuldr就报了这个错误.     我一般是将可行文件命名成ociuldr.bin, 然后建一个ociuldr的Shell角本, 如下所示: #!/bin/sh if [ "A${ORACLE_HOME}A" = "AA" ]; then    echo "ORACLE_HOME environment variable not setted."   ...

我使用的OCI编译环境, 基于Visual C++ 6.0

    以前常用Java来写工具, 后来觉得Java要还一个JRE, 有些不爽的地方, 也存在性能问题. 由于在Java程序上积累了一些经验, 转到C来写一些小工具也不是难事, 他们两者语法基本相同. 况且写工具时编译代码只占用了很小的时间, 大部分时间在想应当具有什么功能?     我写OCI的环境很小, 基本的编译环境是从VC6中拷出一些最基本的文件, 加上OCI的头文件和库文件构成的, 压缩后不到4M, 你可以下载并解压到C盘, 但不支持C++了.     接下来需要设置两个环境变量, 指定默认的头文件(.H)的位置和默认的库文件(.LIB)的位置, 如下所示: INCLUDE=c:\vc6\include LIB=c:\vc6\lib     接下来将Bin目录加到PATH变量中, 你就可以用下面的语法来编译OCI程序了. 如下所示: cl /ML ociuldr.c oci.lib     这样就编译成了我网站上提供的ociuldr工具了, Microsoft不会来追究我非法传播VC6吧?...

解决Linux/Unix下OCI程序动态库版本的问题.

    这段时间做了好几个基础OCI的程序,在Windows上编译后,不需要重新编译, 就可以适应8i/9i/10g的客户端,但在Linux/Unix上,编译好后到不同的版本的客户端去运行时, 总会提示找不到动态库libclntsh.., 这时可以用以下办法去解决:     第一步,修改genclntsh文件,这个文件在Oracle的bin目录下 # # Library names and locations CLNT_NAM=clntsh                      # (short) library name CLNT_VER=9.0                   ...

根据标记(Tags)来查找:

分类 | Categories

本站基于MT-3.36免费版, 和Fenng设计的模板.
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql