#1 Le 05/11/2012, à 14:50
- Nouri2012
OCISessionGet: No such file or directory
Bonjour,
j'utilise
OS: Ubuntu
OCI: 11g
j'ai compilé le code ci dessous et après 126 itération il maffiche l'erreur: No such file or directory
Le problème est au niveau de la fonction OCISessionGet()
Qlq1 à une idée d'où vient le problème!!
Merci d'avance
#include <stdio.h>
#include <string.h>
#include <oci.h>
#include <ocidfn.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
/* Oracleユーザ情報 */
//static const char* dbname = "est";
//static const char* orauser = "USR_CRMP";
//static const char* orapasswd = "SR_CRMP";
//static const char* username = "USR_CRMP";
//static const char* passwd = "USR_CRMP";
static const char* username = "scott";
static const char* passwd = "tiger";
static const char* target_db = "test";
static const char* connMin = "20";
static const char* connMax = "20";
static const char* connInc = "1";
int main(int argc, char* argv[])
{
int i=0;
text errbuf[512];
ub4 buflen;
sb4 errcode;
OCIError* err = (OCIError*)malloc(sizeof(OCIError*));
//memset(err, 0, sizeof(OCIError));
static OCIEnv* envhp; /* OCI環境ハンドル */
static OCIError* errhp; /* エラーハンドル */
static OCISvcCtx** svchp; /* サービスコンテキストハンドル */
OCISPool *spoolhp; //! セッションプール・ハンドル
//printf("sizeof(wchar_t) = %i\n",sizeof(wchar_t));
//printf("sizeof(char) = %i\n",sizeof(char));
OraText *poolName = (OraText*)"orcl"; //! セッショ
sb4 poolNameLen ; //! セッションプー
int connMax = 20; //! コネクション最大数
int connMin = 20; //! コネクション最小数
int connInc = 1; //! コネクションインクリメント幅
sword status = OCI_SUCCESS;
for(i=0; i<127; i++){
/* 環境ハンドルの初期化 */
status = OCIEnvCreate(&envhp, OCI_DEFAULT, NULL, NULL, NULL,
NULL, 0, NULL);
printf("1.0 errno = %s\n", strerror(errno));
printf("status OCIEnvCreat%d\n",status);
/* エラーハンドルの割り当て */
status = OCIHandleAlloc(envhp, (dvoid**)&errhp, OCI_HTYPE_ERROR,
0, NULL);
printf("1.1 errno = %s\n", strerror(errno));
printf("status OCIHandleAlloc%d\n",status);
status = OCIHandleAlloc(envhp, (dvoid **)&spoolhp,
OCI_HTYPE_SPOOL, (size_t) 0, (dvoid **)
0);
printf("1.2 errno = %s\n", strerror(errno));
printf("status OCIHandleAlloc%d\n",status);
// セッションプール生成
status = OCISessionPoolCreate((OCIEnv*)envhp, errhp, spoolhp,
(text **)&poolName, (ub4*)
&poolNameLen,
(OraText *)target_db, (sb4)strlen
((const char *)target_db),
connMin, connMax, connInc,
(text*) username, (ub4) strlen
((char *)username),
(text *) passwd, (ub4) strlen
((char *)passwd),
OCI_SPC_STMTCACHE
);
printf("1.3 errno = %s\n", strerror(errno));
printf("status OCISessionPoolCreate%d\n",status);
status = OCISessionGet((OCIEnv*) envhp, (OCIError*)errhp, (OCISvcCtx**)&svchp, NULL,
(text *) poolName,
(ub4) poolNameLen,
NULL, 0, NULL, 0, NULL,
OCI_SESSGET_SPOOL);
//OCIErrorGet ( err, (ub4) 1, (text *) NULL, &errcode,
// errbuf, (ub4) sizeof(errbuf), (ub4) OCI_HTYPE_ERROR);
// printf("Error - %s\n", errbuf);
printf("1.4 errno = %s\n, errhp = %i\n", strerror(errno), errhp);
printf("status OCISessionGet%d, i = %d \n\n\n",status, i);
usleep(1000);
}
return 0;
}
Hors ligne