linux 上面安装了install client,根据网上的配置,也做了配置,但是写的例子城西,第一个OCI函数OCIEnvCreate直接运行崩溃。
install client安装了zip版的basic sdk sqlplus
install client 安装目录:
[root@app-node-V-G instantclient_11_2]# pwd
/usr/local/oracle/instantclient_11_2
运行的库(lib sqlplus直接在当前目录,include在sdk目录,tns文件在netwrok/admin目录):
[root@app-node-V-G instantclient_11_2]# ls
adrci glogin.sql libnnz11.so libocijdbc11.so NETWORK sdk xstreams.jar
BASIC_README libclntsh.so libocci.so.11.1 libsqlplusic.so ojdbc5.jar sqlplus
genezi libclntsh.so.11.1 libociei.so libsqlplus.so ojdbc6.jar SQLPLUS_README库文件已经配置到/etc/ld.so.conf文件中,测试例子编译连接都没有问题配置的oracle_home等变量,在/etc/profile中,环境变量已经生效
export ORACLE_SID=primdb
export ORACLE_HOME=/usr/local/oracle/instantclient_11_2
export TNS_ADMIN=$ORACLE_HOME/NETWORK/ADMIN
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export SQLPATH=$ORACLE_HOME
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$ORACLE_HOME调用的例子程序:
OCIEnvCreate(&m_pEnv, OCI_DEFAULT, NULL, NULL, NULL, NULL, 0, NULL);
直接调用这一句报段错误。
66 OCIEnvCreate(&m_pEnv, OCI_THREADED|OCI_EVENTS|OCI_OBJECT|OCI_NCHAR_LITERAL_REPLACE_ON, NULL, NULL, NULL, NULL, 0, NULL);
(gdb) Program received signal SIGSEGV, Segmentation fault.
0x00007ffff791f0b3 in kpedbgevpec () from /usr/local/oracle/instantclient_11_2/libclntsh.so.11.1怀疑是install client的配置可能还有问题。从网上找的配置,基本都尝试了,还是报这个错误,不知道怎么解决了。
oracleociOCIEnvCreate 崩溃
install client安装了zip版的basic sdk sqlplus
install client 安装目录:
[root@app-node-V-G instantclient_11_2]# pwd
/usr/local/oracle/instantclient_11_2
运行的库(lib sqlplus直接在当前目录,include在sdk目录,tns文件在netwrok/admin目录):
[root@app-node-V-G instantclient_11_2]# ls
adrci glogin.sql libnnz11.so libocijdbc11.so NETWORK sdk xstreams.jar
BASIC_README libclntsh.so libocci.so.11.1 libsqlplusic.so ojdbc5.jar sqlplus
genezi libclntsh.so.11.1 libociei.so libsqlplus.so ojdbc6.jar SQLPLUS_README库文件已经配置到/etc/ld.so.conf文件中,测试例子编译连接都没有问题配置的oracle_home等变量,在/etc/profile中,环境变量已经生效
export ORACLE_SID=primdb
export ORACLE_HOME=/usr/local/oracle/instantclient_11_2
export TNS_ADMIN=$ORACLE_HOME/NETWORK/ADMIN
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export SQLPATH=$ORACLE_HOME
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$ORACLE_HOME调用的例子程序:
OCIEnvCreate(&m_pEnv, OCI_DEFAULT, NULL, NULL, NULL, NULL, 0, NULL);
直接调用这一句报段错误。
66 OCIEnvCreate(&m_pEnv, OCI_THREADED|OCI_EVENTS|OCI_OBJECT|OCI_NCHAR_LITERAL_REPLACE_ON, NULL, NULL, NULL, NULL, 0, NULL);
(gdb) Program received signal SIGSEGV, Segmentation fault.
0x00007ffff791f0b3 in kpedbgevpec () from /usr/local/oracle/instantclient_11_2/libclntsh.so.11.1怀疑是install client的配置可能还有问题。从网上找的配置,基本都尝试了,还是报这个错误,不知道怎么解决了。
oracleociOCIEnvCreate 崩溃
解决方案 »
- 触发器实现插入数据前检查con_sex
- 有经验的推荐几本oracle经典书籍,谢谢
- Oracle DBA数据库物理设计问题
- Oracle培训:主要是sql优化方面的,请问杭州附近有哪些培训课程?
- RMAN change命令求答
- 在WIN2000 SERVER下如何实现ORACLE的自动备份
- 请各位高手帮我改改这个很奇怪的SQL语句,在线等
- 请问一下,Oracle9i 第一次登录到Oracle Management Server的初始密码和用户名是什么
- 在sql server2000数据库pzzy表中我有一个id的自增长字段,转成Oracle时,ID应设置为何类型?
- oracle查询分页显示
- win7 64系统安装 oracle11g-64位版本报错什么原因?怎么解决?
- 求助-PLSQL DEV工具左侧工具栏不能显示oracle的对象
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <oci.h>using namespace std;int main(int argc ,char** argv)
{
string m_strIp = "10.10.71.80";
string m_strUser="test";
string m_strPwd="test";
string m_strDbName="test";
int m_nPort=1521;
int m_nConnNum =2 ;
int m_nMaxConnNum = 10;
string m_strSID;
OCIEnv *m_pEnv;
OCIError *m_pErr;
OCIServer *m_pSrv;
OCICPool *m_pCPool;
OCIAuthInfo *m_pAuthInfo;
unsigned char* m_CPoolName;
sb4 m_CPoolNameLen;
sword r;
//初始化环境
r = OCIEnvCreate(&m_pEnv, OCI_THREADED|OCI_EVENTS|OCI_OBJECT|OCI_NCHAR_LITERAL_REPLACE_ON, NULL, NULL, NULL, NULL, 0, NULL);
printf("%d \n",r);
// 产生一个指定环境的错误句柄
r = OCIHandleAlloc((dvoid *)m_pEnv, (dvoid **)&m_pErr, OCI_HTYPE_ERROR, (size_t)0, (dvoid **)0);
printf("%d \n",r);
// 产生一个指定环境的服务句柄
r = OCIHandleAlloc((dvoid *)m_pEnv, (dvoid **)&m_pSrv, OCI_HTYPE_SERVER, (size_t)0, (dvoid **)0);
printf("%d \n",r);
//产生一个连接池句柄
r = OCIHandleAlloc((dvoid *)m_pEnv, (dvoid **)&m_pCPool, OCI_HTYPE_CPOOL, (size_t)0, (dvoid **)0);
printf("%d \n",r);
m_CPoolNameLen = 2048;
m_CPoolName = (unsigned char*)malloc(m_CPoolNameLen);
memset(m_CPoolName,0,m_CPoolNameLen);
if(OCI_SUCCESS != OCIConnectionPoolCreate(m_pEnv,m_pErr,m_pCPool,(unsigned char**)&m_CPoolName,&m_CPoolNameLen,
(unsigned char *)m_strSID.c_str(),m_strSID.length(),m_nConnNum,m_nMaxConnNum,1
,(unsigned char*)m_strUser.c_str(),m_strUser.length(),(unsigned char*)m_strPwd.c_str(),m_strPwd.length(),
OCI_CPOOL_REINITIALIZE))
{
sb4 errCode = 0;
OraText errDesp[1024]= {0};
OCIErrorGet((dvoid *)m_pErr, (ub4) 1, (text *) NULL, &errCode,
errDesp, (ub4) sizeof(errDesp), OCI_HTYPE_ERROR);
//WriteLog("COracleConnPool-InitOracleCPool", errCode<<":"<<errDesp);
//ReleaseAllConn();
return -1;
}
OCIHandleAlloc((dvoid*)m_pEnv,(dvoid**)&m_pAuthInfo,OCI_HTYPE_AUTHINFO,0,NULL);
OCIAttrSet((dvoid*)m_pAuthInfo,OCI_HTYPE_AUTHINFO,(char*)m_strUser.c_str(),m_strUser.length(),OCI_ATTR_USERNAME,m_pErr);
OCIAttrSet((dvoid*)m_pAuthInfo,OCI_HTYPE_AUTHINFO,(char*)m_strPwd.c_str(),m_strPwd.length(),OCI_ATTR_PASSWORD,m_pErr);
return 0;
}