作者:哀公家园_678 | 来源:互联网 | 2017-11-14 00:27
在debian上调试OCI的时候接连出现了几个问题,google,baidu了半天,加上查阅了N多乱七八糟的资料,终于算是解决了。
1.首先是debian下环境变量的设置问题,在/etc/profile 以及,~/.bash_profile下设置,重新登录后都不起作用,在~/.bashrc文件里设置,set查看$ORACLE_HOME,$ORACLE_SID变量都已设置,但是不起作用,很是郁闷。无奈下,保留/etc/profile的设置,误打误撞的清空~/.bashrc的内容,就加了一行 source /etc/profile,重新登陆,哈哈哈 可以用了。
2.oci例子程序的编译问题,其实OCI编程所需的所有头文件都在rdbms目录下,我设置的C_INCLUDE_PATH路径便是$ORACLE_HOME/rdbms/demo:$ORACLE_HOME/rdbms/public,然后 gcc -o demo -I$C_INCLUDE_PATH -L$ORACLE_HOME/lib -lclntsn xxxx.c ,编译通过。
3.执行。如果不把$ORACLE_HOME/lib下的共享库copy到/usr/lib下,或者跟运行的OCI程序在同一目录总,那么这个程序就会报N多方法找不到的错误;如果ORACLE_HOME未设置则会报“Error while trying to retrieve text for error ORA-01019”。
4.链接远端服务器。如果没有正确配置$ORACLE_HOME/network/admin/tnsnames.ora,则连接不到远程的服务器。
根据这几天的调试,发现既然需要oracle的多个库和配置文件以及驱动的支持,那么oci程序必须在起码安装了oracle的客户端的机器上才能正确执行,具体结果明天找台无客户端的机器测试一下。