OOPEN Hangs in OCI C program
Hi All,
I encounter a problem with "oopen" OCI function. The program hangs while executing the function. Prior to this the program calls "orlon" function to connect to the Oracle 9i database and it goes through fine. The C program is executed in AIX box and connects to a Oracle9i database. The same code works in a Windows machine against both Oracle 9i & 8i databases. I am not able to understand why is this happening.
This is urgent and need to be resolved as soon as possible.Any help would be greatly appreciated.
Thanks,
Satya S.
Did U solve this ..?? Else code snippet please
Similar Messages
-
Kgefec:fatal error0; OCI-21503:program terminated by fatal error; OCI-04030
Hi expert,
I've hit the following errors when I tried to start my application using the corbaloc call:- Would appreciate your expertise adv and helps, please~!
dlys_storage_prep_srvr -ename INT -pname DLYS_PREP_SRVR -ORBInitRef NameService=corbaloc:iiop:uxkulaix01:19001/NameService -ORBInitRef ImplRepoService=corbaloc:iiop:uxkulaix01:19002/ImplRepoService -ORBInitRef LoadManager=corbaloc:iiop:uxkulaix01:19007/LoadManager -ORBUseIMR 1 -instance DLYS_PREP_SRVR_2 -phaseID 1 -jobID 2109 -requestID 0 -scheduleUser SYSTEM
kgefec: fatal error 0
kgefec: fatal error 0
kgefec: fatal error 0
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 512 bytes (Alloc statemen,pref col alloc)
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 224 bytes (Alloc statemen,pref col alloc)
kgefec: fatal error 0
kgefec: fatal error 0
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 272 bytes (Alloc statemen,pref col alloc)
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 176 bytes (Alloc statemen,pref col alloc)
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 392 bytes (Alloc statemen,pref col alloc)
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 272 bytes (Alloc statemen,pref col alloc)
kgefec: fatal error 0
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 176 bytes (Alloc statemen,pref col alloc)
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 392 bytes (Alloc statemen,pref col alloc)
----- Call Stack Trace -----
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 512 bytes (Alloc statemen,pref col alloc)
----- Call Stack Trace -----
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 224 bytes (Alloc statemen,pref col alloc)
calling call entry argument values in hex
----- Call Stack Trace -----
location type point (? means dubious value)
calling call entry argument values in hex
calling call entry argument values in hex
location type point (? means dubious value)
location type point (? means dubious value)
----- Call Stack Trace -----
kgefec: fatal error 0
----- Call Stack Trace -----
calling call entry argument values in hex
calling call entry argument values in hex
location type point (? means dubious value)
location type point (? means dubious value)
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 536 bytes (Alloc statemen,pref col alloc)
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 656 bytes (Alloc statemen,pref col alloc)
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 536 bytes (Alloc statemen,pref col alloc)
----- Call Stack Trace -----
Errors in file :
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 656 bytes (Alloc statemen,pref col alloc)
calling call entry argument values in hex
location type point (? means dubious value)
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
kgefec: fatal error 0
OCI-21503: program terminated by fatal error
OCI-04030: out of process memory when trying to allocate 296 bytes (Alloc statemen,pref col alloc)
SQL> SQL> select * from v$pgastat;
NAME VALUE UNIT
aggregate PGA target parameter 314572800 bytes
aggregate PGA auto target 243984384 bytes
global memory bound 62914560 bytes
total PGA inuse 43478016 bytes
total PGA allocated 85145600 bytes
maximum PGA allocated 85963776 bytes
total freeable PGA memory 15204352 bytes
process count 50
max processes count 51
PGA memory freed back to OS 10616832 bytes
total PGA used for auto workareas 0 bytes
NAME VALUE UNIT
maximum PGA used for auto workareas 155648 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 0 bytes
over allocation count 0
bytes processed 30577664 bytes
extra bytes read/written 0 bytes
cache hit percentage 100 percent
recompute count (total) 516
19 rows selected.
# Instance Identification
instance_name=ICTINT
# Database Identification
db_domain=""
db_name=ICTINT
# Cache and I/O
db_block_size=8192
db_cache_advice=ON
db_keep_cache_size=0
#db_file_multiblock_read_count=32
#db_writer_processes=4
db_files=200
disk_asynch_io=FALSE
filesystemio_options=NONE
# Optimizer Settings
optimizer_index_caching=50
optimizer_index_cost_adj=50
optimizer_mode=FIRST_ROWS_1000
query_rewrite_enabled=TRUE
star_transformation_enabled=FALSE
# Cursors and Library Cache
open_cursors=1500
cursor_sharing=FORCE
cursor_space_for_time=TRUE
# Diagnostics and Statistics
background_dump_dest=/emcoracle/admin/ICTINT/bdump
core_dump_dest=/emcoracle/admin/ICTINT/cdump
user_dump_dest=/emcoracle/admin/ICTINT/udump
timed_statistics=TRUE
# File Configuration
control_files=("/oradata/ICTINT/data/control/control_01.ctl",
"/oradata/ICTINT/index/control/control_02.ctl")
# Job Queues
job_queue_processes=10
# Miscellaneous
aq_tm_processes=1
compatible=10.2.0
log_checkpoints_to_alert=TRUE
recyclebin=OFF
# Pools
#java_pool_size=0
#large_pool_size=16777216
#shared_pool_size=524288000
sga_max_size=2G
sga_target=2G
# Processes and Sessions
processes=250
# Redo Log and Recovery
fast_start_mttr_target=300
# Security and Auditing
remote_login_passwordfile=EXCLUSIVE
audit_file_dest=/emcoracle/admin/ICTINT/audit
#audit_trail=true
# Sort, Hash Joins, Bitmap Indexes
pga_aggregate_target=100M
workarea_size_policy=AUTO
# System Managed Undo and Rollback Segments
undo_management=AUTO
undo_retention=900
undo_tablespace=UNDOTBS1
# Archiving
#log_archive_start=TRUE
#log_archive_dest_1='location=${ARCHIVELOG}'
log_archive_format=ICT_%d_ARC_%t_%s_%r.arcThat error means that Oracle is not allowed to allocate the memory by the operating system.
This is not a bug of Oracle; the problem must be somewhere else.
- How much memory has the process allocated when it produces this error?
- Did you set the per-process memory limits of the operating system high enough?
- Did you start the Java Virtual Machine with a sufficient maximal stack size?
If the problem only occurs after a longer runtime, you might also consider the
possibility that your code has a memory leak.
Yours,
Laurenz Albe -
Where can i download OCI Demonstration Programs for C?
hi,evryone,i'v installed the 10g Release 1 client completely,but i not found the OCI Demonstration Programs in $ORACLE_HOME/rdbms/demo Anybody know
where can i download OCI Demonstration Programs for C?Thanks a lot!The demo programs are on the companion cd.
-
OCI - Sample program works on Windows but gives error in Solaris ??
Hi,
I am new to OCI. I was trying the following sample program:
#include<iostream>
#include<conio.h>
#include<firstheader.h>
//#include<stdafx.h>
#include<string.h>
using namespace std;
class OCIClass
public:
OCIClass()
int p_bvi;
char p_sli[20];
int rc;
char errbuf[100];
int errcode;
const char *s;
printf("Hello\n");
string sql;
string sql2="select substr(ename,1,3) from emp where job='ANALYST'";
cout<<sql2;
//char sql[512];
int flag=0;
sql += "SELECT * from emp where job='";
if (flag==0)
sql += "MANAGER";
else
sql += "ANALYST";
sql += "'";
cout<<sql + "\n";
s=sql.c_str();
char* cstr = new char[sql.size()+1];
strcpy (cstr, sql.c_str());
char* cstr2 = new char[sql2.size()+1];
strcpy (cstr2, sql2.c_str());
sql=" ";
/* Initialize evironment */
rc=OCIEnvCreate((OCIEnv **)&p_env,(ub4)OCI_DEFAULT ,(void *)0, (void * (*)(void *, size_t))0,
(void * (*)(void *, void *, size_t))0,(void (*)(void *, void *))0,(size_t)0, (void **)0);
/* Initialize handles */
rc = OCIHandleAlloc( (dvoid *) p_env, (dvoid **) &p_err, OCI_HTYPE_ERROR,
(size_t) 0, (dvoid **) 0);
printf("Error handle allocated\n");
rc = OCIHandleAlloc( (dvoid *) p_env, (dvoid **) &p_svc, OCI_HTYPE_SVCCTX,
(size_t) 0, (dvoid **) 0);
printf("service handle allocated\n");
printf("Value of RC before Logon\n %d", rc);
/* Connect to database server */
rc = OCILogon(p_env, p_err, &p_svc, (OraText *)"scott", 5,(OraText *) "welcome", 7,(OraText *) "", 0);
printf("Value of RC after Logon\n %d", rc);
if (rc != 0) {
OCIErrorGet((dvoid *)p_err, (ub4) 1, (text *) NULL, &errcode, (OraText *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR);
printf("Error - %s\n",errbuf);
printf("error");
//exit(8);
getch();
printf("Connect successful\n");
/* Allocate and prepare SQL statement */
rc = OCIHandleAlloc( (dvoid *) p_env, (dvoid **) &p_sql,
OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0);
rc = OCIStmtPrepare(p_sql, p_err, (OraText*) cstr,
(ub4) 37, (ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT);
/* Bind the values for the bind variables
p_bvi = 10; /* Use DEPTNO=10
rc = OCIBindByName(p_sql, &p_bnd, p_err, (text *) ":x",
-1, (dvoid *) &p_bvi, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);*/
/* Define the select list items */
rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 1, (dvoid *) &p_sli,
(sword) 20, SQLT_STR, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, OCI_DEFAULT);
/* Execute the SQL statment */
rc = OCIStmtExecute(p_svc, p_sql, p_err, (ub4) 1, (ub4) 0,
(CONST OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_DEFAULT);
while (rc != OCI_NO_DATA) { /* Fetch the remaining data */
printf("%s\n",p_sli);
rc = OCIStmtFetch(p_sql, p_err, 1, 0, 0);
printf("After fetch\n");
rc = OCILogoff(p_svc, p_err); /* Disconnect */
rc = OCIHandleFree((dvoid *) p_sql, OCI_HTYPE_STMT); /* Free handles */
rc = OCIHandleFree((dvoid *) p_svc, OCI_HTYPE_SVCCTX);
rc = OCIHandleFree((dvoid *) p_err, OCI_HTYPE_ERROR);
void main()
OCIClass c1;
getch();
The above program works on my Windows desktop. If I try this in Solaris, OCILogon fails and gives an error. If I check the value of rc, I find that it is -2. I can connect to the database using SQLPlus, but not through the program. Not sure how to debug this...
Any pointers ?
Thanks in advance,
mrkDid you make the required port entry in the /etc/services file? You will need to add the gateway service port there. Then try to run your program.
T00th -
Dreamweaver hangs when other CS programs are running,
If I run Dreamweaver (4 or 5.5) on its own (with no other CS programs running) it works fine; but the minute I run another CS program (InDesign for example) Dreamweaver eventually hangs and is shown as not responding in Activity Monitor.
I'm running 10.7.4, but I gave up trying to solve the issue so I uninstalled ALL my creative suite applications and re-installed. Problem solved.
-
Hanging when switching between programs?
Is there a soluton to programs hanging when switching between one program to another?
Safe Mode deletes some system caches that may help..
Startup your Mac in Safe Mode
A Safe Mode boot takes longer than a normal boot so be patient.
Once you are in Safe Mode, click Restart from the Apple () menu then try switching between applications. -
Problem about running oci demo program!
I execute a demo program under $oracle_home/rdbms/demo,get errors:
[oracle@lnx71 demo]$ ./cdemodsa
./cdemodsa: error while loading shared libraries: libclntsh.so.9.0: cannot open
[oracle@lnx71 demo]$
The environment is : gcc 2.95.3 ; kernel 2.40-8.
Can somebody tell me why?
Thanks a lot!It sounds like your environment has not been setup properly. You might want to make sure that libclntsh.so.9.0 is in LD_LIBRARY_PATH. Other settings that need to be checked are mentioned in the demo makefile.
Hope that helps. -
Passing information from an OCI C program back to jdev
Hi,
I need to write a C program to do some microarray analysis with data inside the Oracle database. (Actually someone else will write the program...) The analysis results will probably end up in a file somewhere. I can call the C program using the extproc feature of Oracle, but the C code will have to send back some information to me, such as the filename. I am contemplating how to get this return information.
For instance, the C program could update the database with the return information and I could retrieve it from the database. Is there a better way to communicate between jdev and an external procedure?
Thanks.
SusanI have been able to accomplish this to an extent. Now I am following Muench "Using View Objects to Select Stored Function Results" to try and call the function and return a value from jdev. When I create the view object based on the extproc c language function call (which works perfectly from sqlplus command line), the test query is valid is fine... but when I run a test client against the application module, I get the ORA-28575 error.
Any ideas? This is supposed to be a network related issue so is there a problem coming through a jdbc:thin connection?
Thanks.
Susan -
Powershell Hang when using Run Program (2012 R2)
I've seen a couple posts about this in the past but nothing recent. I am calling a powershell and passing through some variables to run program activity in orchestrator. The program runs (in this case the DB is created) and the script finishes, however the
activity does not. I've tried two solutions:
http://blog.coretech.dk/jgs/sco-2012-running-powershell-scripts-via-run-program-activity/
and
http://www.sc-orchestrator.eu/index.php/scoblog/67-running-powershell-with-the-run-program-activity-from-orchestrator
Neither of which seem to do the trick. Here is my command
Note: The script runs fine when called on the machine locally. For sake of cleanliness I've removed my <Nul 2>&1 attempts.I have found in these situations that having a non-stop error seems to get it from freezing (along with <Nul 2>&1). I use 'Get-Content "C:\Farce.txt"' as my last line.
-
Hi,
I have a jar file which seems to work with version 1.3.0-01 but not with higher versions. It is a demo program provided by Natural Micro Systems a leading telecommunications solutions provider. It is a conference demo program and the NMS(Natural Micro Systems) guys say that it will work for higher versions also, but it just hangs up.
The program consists of 3 dlls which are used by JNI to access NMS API's.
It also consists of 3 jar files which act as interface for NMS API's.
If any one can help me please help me and let me know if any additional information is required.
This demo program is very useful for our testing purposes so we badly need it.
Thanks,
Ranjith.Hi,
I have a jar file which seems to work with version 1.3.0-01 but not with higher versions. It is a demo program provided by Natural Micro Systems a leading telecommunications solutions provider. It is a conference demo program and the NMS(Natural Micro Systems) guys say that it will work for higher versions also, but it just hangs up.
The program consists of 3 dlls which are used by JNI to access NMS API's.
It also consists of 3 jar files which act as interface for NMS API's.
If any one can help me please help me and let me know if any additional information is required.
This demo program is very useful for our testing purposes so we badly need it.
Thanks,
Ranjith. -
How to compile Reports sample OCI program in Sun solaris ?
TO All:
Here is reports OCI sample program.
#include <stdio.h>
long ret,rwcrun(),rwcsql();
main()
char options[132];
long len;
strcpy(options,"userid=ps51/ps51 report=emp batch=yes paramform=no destype=file desname=l.ps");
printf("/options are: %s",options);
len=strlen(options);
ret=rw2run(options);
printf("/n Value of return code is %d",ret);
exit();
Pls guide me , how to compile this program in Sun Solaris platform .
1. Which library file I need to include.
2. How to create make (.mk) file.
If I compile this program using below command.
$>cc ociprg.c r30dll.o
then "rw2run" not found error.
Also I need to use RW2RRB oci function, for this which library I need to use.
Thanks in Advance
Siva
null<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by R.Siva Kumar [[email protected]]:
TO All:
Here is reports OCI sample program.
<HR></BLOCKQUOTE>
null -
Using GCC on SunSolaris2.8 to compile and link sample OCI programs
Hi,
Does anyone have sample make file (or modified version of demo_rdbms.mk) or command to compile and link OCI demo programs using gcc?? I am trying to compile and link cdemo81.c from rdbms/demo directory.
gcc related files are under /usr/local/bin and /usr/local/lib, /us/local/lib/gcc-lib/sparc-sun-solaris2.8/3.1
ThanksHi,
I finally got cdemo81.c to compile and link on Solaris 8 using Oracle 8.1.7.3. I got some help from one other person who had posted similar question on this forum. Following is the makefile that I am currently using to compile my oci code. Please note that you need to have $(ORACLE_HOME) and LD_LIBRARTY_PATH set before you try to compile using gcc.
************** Makefile Starts here ***********************************
CPP=g++
CC=gcc
LD=ld
CCFLAGS= -g
CPPFLAGS=-g3 -Wall
INCDIR=-I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/plsql/public -I$(ORACLE_HOME)/network/public
LIBNAME=liboralib
SOEXT=.so
DLLINK=-shared -ldl
###SOFLAGS=-shared -Wl,-expect_unresolved -Wl,-soname,$(LIBNAME)$(SOEXT) $(LIBPATH)
SOFLAGS=-shared -Wl
LDFLAGS=-shared -expect_unresolved * -soname
LIBPATH=-L$(ORACLE_HOME)/lib/ -L$(ORACLE_HOME)/rdbms/lib/ -R$(ORACLE_HOME)/lib/ -R$(ORACLE_HOME)/rdbms/lib/
ORALIBS= -lnbeq8 -lnhost8 -lnus8 -lnldap8 -lldapclnt8 -lnsslb8 -lnoname8 -lntcp8 \
-lntcps8 -lnsslb8 -lntcp8 -lntns8 -ln8 -lnl8 -lnro8 -lnbeq8 -lnhost8 -lnus8 \
-lnldap8 -lldapclnt8 -lnsslb8 -lnoname8 -lntcp8 -lntcps8 -lnsslb8 \
-lntcp8 -lntns8 -ln8 -lnl8 -lclient8 -lvsn8 -lcommon8 -lgeneric8 \
-lmm -lnls8 -lcore8 -lnls8 -lcore8 -lnls8 -lnbeq8 -lnhost8 -lnus8 -lnldap8 \
-lldapclnt8 -lnsslb8 -lnoname8 -lntcp8 -lntcps8 -lnsslb8 -lntcp8 \
-lntns8 -ln8 -lnl8 -lnro8 -lnbeq8 -lnhost8 -lnus8 -lnldap8 -lldapclnt8 \
-lnsslb8 -lnoname8 -lntcp8 -lntcps8 -lnsslb8 -lntcp8 -lntns8 -ln8 \
-lnl8 -lclient8 -lvsn8 -lcommon8 -lgeneric8 -ltrace8 -lnls8 -lcore8 \
-lnls8 -lcore8 -lnls8 -lclient8 -lvsn8 -lcommon8 -lgeneric8 -lnls8 \
-lcore8 -lnls8 -lcore8 -lnls8 -lnsl -lsocket -lgen -ldl -lsched \
-lc -laio -lposix4 -lkstat -lm -lthread -lwtc8
LIBS=$(ORACLE_HOME)/rdbms/lib/defopt.o $(ORACLE_HOME)/lib/sscoreed.o $(ORACLE_HOME)/lib/libclntsh.so $(ORACLE_HOME)/lib/nautab.o $(ORACLE_HOME)/lib/naeet.o $(ORACLE_HOME)/lib/naect.o $(ORACLE_HOME)/lib/naedhs.o $(ORALIBS)
##LIBS=$(ORACLE_HOME)/rdbms/lib/defopt.o $(ORACLE_HOME)/lib/sscoreed.o $(ORACLE_HOME)/lib/nautab.o $(ORACLE_HOME)/lib/naeet.o $(ORACLE_HOME)/lib/naect.o $(ORACLE_HOME)/lib/naedhs.o $(ORALIBS)
###LIBS=$(ORACLE_HOME)/rdbms/lib/ssdbaed.o $(ORACLE_HOME)/lib/nautab.o $(ORACLE_HOME)/lib/naeet.o $(ORACLE_HOME)/lib/naect.o $(ORACLE_HOME)/lib/naedhs.o $(ORALIBS)
ORALIBSO=-lnetv2 -lnttcp -lnetwork -lncr -lclient8 -lvsn -lcommon8 -lgeneric8 \
-lmm -lnlsrtl3 -lcore8 -lnlsrtl3 -lcore8 -lnlsrtl3 -lnetv2 -lnttcp \
-lnetwork -lncr -lclient8 -lvsn -lcommon8 -lgeneric8 -lepc -lnlsrtl3 \
-lcore8 -lnlsrtl3 -lcore8 -lnlsrtl3 -lclient8 -lvsn -lcommon8 -lgeneric8 \
-lnlsrtl3 -lcore8 -lnlsrtl3 -lcore8 -lnlsrtl3 -lnsl -lm -ldl -lm \
-ldl -lnetv2 -lnttcp -lnetwork -lncr -lnetv2 -lnttcp -lnetwork -lncr \
-lnetv2 -lnttcp -lnetwork -lncr -lnetv2 -lnttcp -lnetwork -lncr \
-lnetv2 -lnttcp -lnetwork -lncr -lsql
###-lnbeq8 -lnhost8 -lnus8 -lnldap8 -lldapclnt8 -lnsslb8 -lnoss8 -lnoname8 -lntcp8 \
#ORALIBS=-lnetv2 -lnttcp -lnetwork -lncr -lclient8 -lvsn -lcommon8 -lgeneric8 \
# -lmm -lcore8 -lnlsrtl3 -lepc -lnsl -lm -ldl
CPPOBJECTS=orabase.o orastmt.o
HEADER=orabase.h orastmt.h
.SUFFIXES: .cc .c
###.c.o:
### $(CC) $(CCFLAGS) $(INCDIR) -o $@ -c $<
.cc.o:
$(CPP) $(CPPFLAGS) $(INCDIR) -o $@ -c $<
#lib: $(CPPOBJECTS) $(HEADERS)
# $(CPP) $(CPPFLAGS) $(SOFLAGS) $(LIBPATH) -o $(LIBNAME)$(SOEXT) $(CPPOBJECTS) $(LIBS)
#clean:
# $(RM) *.o core *~
#distclean: clean
# $(RM) $(LIBNAME)$(SOEXT) so_locations
###ocimanager: ocimanager.o
### $(CC) -o $@ $(LIBPATH) $(LIBS) $<
ocimanager.so: ../obj/ocimanager.o
$(CC) $(LIBPATH) -o ocimanager.so -G ../obj/ocimanager.o $(LIBS)
## gcc -L$(ORACLE_HOME)/lib/ -L$(ORACLE_HOME)/rdbms/lib/ -o ocimanager.so -G ../obj/ocimanager.o $(LIBS)
../obj/ocimanager.o: ocimanager.c ocimanager.h
$(CC) $(CCFLAGS) $(INCDIR) -o ../obj/ocimanager.o -c ocimanager.c
**************** Makefile ends here*********************************************
Hope this helps
Brunda -
Compile OCI program in Sun wrokshop
Hi, I am new to Sun workshop and Oracle OCI. How can I set up the environment to comipler Oracle OCI in Forte Sun workshop without using oracle make file?
Thanks,
Sherry<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by R.Siva Kumar [[email protected]]:
TO All:
Here is reports OCI sample program.
<HR></BLOCKQUOTE>
null -
How to call store procedure from an oci program
Hello,
I work on Oracle 8.1.7 under AIX.
I must call from an OCI C++ program a store procedure that have an result set as param out.
I'm not sure how can I call the procedure/function. I want to execute this statement and fetch the results.:
" CALL Department.get_all (:1) " is this OK?
" Call department.GetAll() into :1 "
I have seen some example from an PL/SQL block but that's not ok for me.
what i have done:
i have created an package
create or replace package department as
type cursor_type is ref cursor;
procedure get_emp( i_deptno in number, rs out cursor_type );
procedure get_all( rs out cursor_type );
function GetAll return cursor_type;
end department;
create or replace package body department as
procedure get_emp ( i_deptno in number, rs out cursor_type )
as
begin
open rs for
select empno, ename
from emp
where deptno = i_deptno;
end;
procedure get_all ( rs out cursor_type )
as
begin
open rs for
select empno, ename
from emp;
end;
function GetAll return cursor_type
as
l_cursor cursor_type;
begin
open l_cursor for select ename, empno from emp;
return l_cursor;
end;
end;Hi,
I am new to OCI facing the same problem you have mentioned, If you have found out how to solve it , can you post the answer for the same.
Thanks
Mani -
OCI crash while executing PL/SQL
HI,
I have a multithreaded application which uses OCI. The application has a master thread and spwans 4 child threads that connect to the db and execute specific queries. The problem occurs while trying to execute the last PL/SQL command which includes some bfile operations. I had read that OCI does not mutex properly on LOB operations, but I do not get any error, the application just hangs. Attached is part of the code that has all OCI calls.
The culprit is the update_tables function. The application hangs in there when processing is very close in time for threads.
[] 20080411 10:40:52.255 Oracle NOTICE - [2000][id 1093229] Executing PL/SQL to update all tables
[] 20080411 10:40:52.259 Oracle NOTICE - [2000][id 1093230] Executing PL/SQL to update all tables
[] 20080411 10:40:52.321 Oracle NOTICE - [2000][id 1093231] Executing PL/SQL to update all tables
this is where is hangs.
//!This program is the server portion of the distributed job system.
#include "application.h"
#include "log4cwrapper.h"
//#include "sql.h"
#include <oci.h>
OCIEnv* env;
int main(int argc, char* argv[]){
OCIError* err;
OCIServer* srv;
OCISvcCtx* svc;
OCISession* ses;
sword r;
OCIStmt* initslc;
OCIStmt* comm;
OCIBind *bnd1hp = (OCIBind*) 0;
char stmt[]="commit";
char update_initial[] ="update CONV_IMAGE_JOBS set conv_attempts_cnt = :1";
FILE *log_fd_main;
int sockfd, logfd, pidfd, count = 0, oci_error = 0;
pthread_t job_thread; //!<Threads for image conversion
pthread_attr_t thread_attr; //!<Thread attribute
int *clientfd; //!<Non-negative file descriptor for new socket
pthread_mutexattr_t mattr; //!<Mutex attribute used to set the properties of the mutex
char masterpid[100];
log_fd_main = fopen(log_file, "a");
if (log_fd_main == NULL) {
printf(" ERROR - DjsMaster [0002] Failed to open log file.\n");
exit(1);
r=OCIEnvCreate( &env,
OCI_THREADED
, 0, 0, 0, 0, 0, 0);
if (r != OCI_SUCCESS) {
strcpy(err_msg,"Couldn't create environment (OCIEnvCreate)");
oci_error = 1;
cleanup();
OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR, 0, 0);
OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER, 0, 0);
OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX, 0, 0);
OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
r=OCIServerAttach(srv, err, dbname, strlen((const char*)dbname), (ub4) OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r, err_msg);
oci_error = 1;
cleanup();
OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, username,
strlen((const char*)username), OCI_ATTR_USERNAME, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, password,
strlen((const char*)password), OCI_ATTR_PASSWORD, err);
if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX,
(dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
if (OCIHandleAlloc((dvoid *) env, (dvoid **) &initslc,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r=OCIStmtPrepare(initslc, err, (text*)(void*)update_initial,
(ub4) strlen((char *) update_initial),
(ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) initslc, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
int coun=0;
if ((r = OCIBindByPos(initslc, &bnd1hp, err, (ub4) 1, &coun, sizeof(count), SQLT_INT,
(dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIStmtExecute(svc, initslc, err, (ub4) 1, (ub4) 0, (CONST OCISnapshot *) 0,
(OCISnapshot *) 0, (ub4) OCI_DEFAULT))){
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) sh, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
if ((r=OCIHandleAlloc((dvoid *) env, (dvoid **) &comm,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r=OCIStmtPrepare(comm, err, (text*)(void*)stmt,
(ub4) strlen((char *) stmt), (ub4) OCI_NTV_SYNTAX,
(ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
if ((r=OCIStmtExecute(svc, comm, err, (ub4) 1, (ub4) 0,
(CONST OCISnapshot *) 0, (OCISnapshot *) 0,
(ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
OCIHandleFree((dvoid *) initslc, (ub4) OCI_HTYPE_STMT);
if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
oci_error = 1;
cleanup();
if ( oci_error == 1) {
cleanup();
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd_main);
mylog_msg("DjsMaster", LOG4C_PRIORITY_DEBUG,
" [0000] daemon running, ready to accept connections,"
"waiting for to connect......");
fclose(log_fd_main);
while (1) {
Accept a connection from a slave.
clientfd = malloc(sizeof(int));
if ((*clientfd = serv_accept(sockfd)) < 0) {
exit(1);
Fork off a child thread to process this slave.
pthread_create(&job_thread, &thread_attr, jobfunction, clientfd);
//count++;
sleep(1);
//!Dump Oracle Error
void cleanup() {
log4c_appender_t* myappender;
myappender = log4c_appender_get("myappender");
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, fopen(log_file, "a"));
mylog_log("DjsMaster", LOG4C_PRIORITY_ERROR,
" [2001] Oracle error %s", err_msg);
void *jobfunction(void *arg) {
OCIError* err;
OCIServer* srv;
OCISvcCtx* svc;
OCISession* ses;
sword r;
OCIBind *bnd1hp = (OCIBind*) 0;
OCIBind *bnd2hp = (OCIBind*) 0;
OCIBind *bnd3hp = (OCIBind*) 0;
OCIDefine *def1hp = (OCIDefine *) 0;
OCIDefine *def2hp = (OCIDefine *) 0;
OCIDefine *def3hp = (OCIDefine *) 0;
OCIDefine *def4hp = (OCIDefine *) 0;
OCIDefine *def5hp = (OCIDefine *) 0;
OCIDefine *def6hp = (OCIDefine *) 0;
OCIDefine *def7hp = (OCIDefine *) 0;
OCIDefine *def8hp = (OCIDefine *) 0;
OCIDefine *def9hp = (OCIDefine *) 0;
char select_all[] =" select filename, filepath, image_system_id, quality_status_cd,"
" format_cd,global_id, id, conv_attempts_cnt, image_resolution"
" from TABLE_NAME where conv_attempts_cnt = 0 order by created_datetime ";
char select_count[] ="select conv_attempts_cnt, image_resolution from TABLE_NAME"
" where id = :1 ";
char update_single[] ="update TABLENAME set conv_attempts_cnt = :1 where id = :2 ";
char stmt[]="commit";
int oci_error = 0;
Variables to hold the values returned from SQL SELECT
int id, global_id, format_cd, quality_status;
int resolution, image_id, conv_attempts_cnt;
char filename[101];
char filepath[201];
char filepath_full[MAX_BUF];
char tif_filename[101];
char return_filepath[MAX_BUF];
char conv_details[MAX_BUF];
char *hold_filename;
char *hold_filepath;
char *hold_tiffile;
char *progress;
char *tempstr_p;
char *jobnum_p;
char *returnname_p;
char *returnsize_p;
char tempstr[MAX_BUF];
int count = 0;
int success_flag = 0;
int reprocess_flag = 0;
char s_resolution[5];
char s_format[5];
struct stat filebuf;
int myfd, datafd, jobid, i, update, holdid;
char sockread[1024], sockwrite[1024],
jobnum[10], dataname[1024],
line_to_log[1024], databuf[1024];
int datasize, bufsize, returnsize, filesize;
FILE *log_fd;
log4c_appender_t* myappender;
myappender = log4c_appender_get("myappender");
log_fd = fopen(log_file, "a");
if (log_fd == NULL) {
perror(" ERROR - DjsMaster [1000] Failed to open log file.\n");
exit(1);
myfd = *((int *)arg);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000] Starting jobs on %d.",
(int)pthread_self());
Readline_r(myfd, sockread, 255);
Continue to read requests received from the slaves.
while (strcmp(sockread, SLAVE_DONE) != 0) {
OCIStmt* slcth;
OCIStmt* updth;
OCIStmt* slcth2;
OCIStmt* comm;
sleep(15);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000] Continue to read request from %d, looping with %s ",
(int)pthread_self(), sockread);
if (strcmp(sockread, REQUEST_JOB) == 0) {
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000] %d requesting job. Connecting to database.",
(int)pthread_self());
if (oci_error == 1) {
if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
cleanup();
if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
checkerrr(err, r, (text*)err_msg);
cleanup();
if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
checkerrr(err, r, (text*)err_msg);
cleanup();
if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
checkerrr(err, r, (text*)err_msg);
cleanup();
if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
cleanup();
oci_error = 0;
OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR, 0, 0);
OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER, 0, 0);
OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX, 0, 0);
OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
r=OCIServerAttach(srv, err, dbname,
strlen((const char*)dbname), (ub4) OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r, err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, username,
strlen((const char*)username), OCI_ATTR_USERNAME, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, password,
strlen((const char*)password), OCI_ATTR_PASSWORD, err);
if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX,
(dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if (OCIHandleAlloc((dvoid *) env, (dvoid **) &slcth,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtPrepare(slcth, err, (text*)(void*)select_all,
(ub4) strlen((char *) select_all),
(ub4) OCI_NTV_SYNTAX,
(ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def1hp, err, 1,
filename, 100, SQLT_CHR, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def2hp, err, 2,
filepath, 100, SQLT_CHR, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def3hp, err, 3,
&image_id, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def4hp, err, 4,
&quality_status, sizeof(int), SQLT_INT,
(dvoid *) 0, (ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def5hp, err, 5,
&format_cd, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def6hp, err, 6,
&global_id, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def7hp, err, 7,
&id, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth, &def8hp, err, 8,
&conv_attempts_cnt, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
if ((r=OCIDefineByPos(slcth, &def9hp, err, 9,
&resolution, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtExecute(svc, slcth, err, (ub4) 0, (ub4) 0,
(CONST OCISnapshot *) 0, (OCISnapshot *) 0,
(ub4) OCI_DEFAULT))){
checkerr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
r = OCIStmtFetch(slcth, err, (ub4) 1, (ub4) OCI_FETCH_NEXT, (ub4) OCI_DEFAULT);
if (r == OCI_SUCCESS) {
success_flag = 1;
reprocess_flag = 0;
else if (r == OCI_SUCCESS_WITH_INFO) {
success_flag = 1;
reprocess_flag = 0;
else {
if (r != OCI_NO_DATA) {
checkerr(err, r, (text*)err_msg);
success_flag = 0;
success_flag = 0;
OCIHandleFree((dvoid *) slcth, (ub4) OCI_HTYPE_STMT);
No job in the table. Continue listening. Tell the slave
there are no current jobs to process.
if (! (success_flag)) {
if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
oci_error = 1;
cleanup();
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000] No new jobs, writing to %d %s",
(int)pthread_self(), sockwrite);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
success_flag = 0;
continue;
/* New job is fetched, process it. */
else {
reprocess_flag = 0;
reprocess: log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("Oracle", LOG4C_PRIORITY_DEBUG,
" [2000][id %d] Fetching data for new job from databse", id);
mylog_log("Oracle", LOG4C_PRIORITY_DEBUG,
" [2000][id %d]Fetched job_id=%d, format=%d, resolution=%d, conv_attemtps=%d, imagefile=%s, imagepath=%s",
id, id, format_cd, resolution,
conv_attempts_cnt, filename, filepath);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000][id %d] New job for %d. Job will be processed.",
id, (int)pthread_self());
holdid = id;
if ( reprocess_flag == 1 )
OCIHandleAlloc(env, (dvoid**)&err, OCI_HTYPE_ERROR, 0, 0);
OCIHandleAlloc(env, (dvoid**)&srv, OCI_HTYPE_SERVER, 0, 0);
OCIHandleAlloc(env, (dvoid**)&svc, OCI_HTYPE_SVCCTX, 0, 0);
OCIHandleAlloc(env, (dvoid**)&ses, OCI_HTYPE_SESSION, 0, 0);
r=OCIServerAttach(srv, err, dbname, strlen((const char*)dbname), (ub4) OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r, err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, username, strlen((const char*)username), OCI_ATTR_USERNAME, err);
OCIAttrSet(ses, OCI_HTYPE_SESSION, password, strlen((const char*)password), OCI_ATTR_PASSWORD, err);
if ( (r=OCIAttrSet((dvoid *) svc, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) ses, (ub4) 0, (ub4) OCI_ATTR_SESSION, err)) ) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
r=OCISessionBegin (svc, err, ses, OCI_CRED_RDBMS, OCI_DEFAULT);
if (r != OCI_SUCCESS) {
checkerrr(err, r,err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if (OCIHandleAlloc((dvoid *) env, (dvoid **) &slcth2,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtPrepare(slcth2, err, (text*)(void*)select_count,
(ub4) strlen((char *) select_count),
(ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIDefineByPos(slcth2, &def1hp, err, 1,
&conv_attempts_cnt, sizeof(int), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, OCI_DEFAULT))) {
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIBindByPos(slcth2, &bnd1hp, err, (ub4) 1,
&holdid, sizeof(int), SQLT_INT,
(dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0,
(ub4 *) 0, OCI_DEFAULT))){
checkerr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIStmtExecute(svc, slcth2, err, (ub4) 0, (ub4) 0,
(CONST OCISnapshot *) 0,
(OCISnapshot *) 0, (ub4) OCI_DEFAULT))){
checkerr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
r = OCIStmtFetch(slcth2, err, (ub4) 1,
(ub4) OCI_FETCH_NEXT, (ub4) OCI_DEFAULT);
if (r == OCI_SUCCESS) {
success_flag = 1;
else if (r == OCI_SUCCESS_WITH_INFO) {
success_flag = 1;
else {
if (r != OCI_NO_DATA) {
checkerr(err, r, (text*)err_msg);
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
OCIHandleFree((dvoid *) slcth2, (ub4) OCI_HTYPE_STMT);
count = conv_attempts_cnt;
count++;
/* Updating conv_attemtpts_cnt for the current job */
if (OCIHandleAlloc((dvoid *) env, (dvoid **) &updth,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0)) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtPrepare(updth, err, (text*)(void*)update_single,
(ub4) strlen((char *) update_single), (ub4) OCI_NTV_SYNTAX,
(ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIBindByPos(updth, &bnd2hp, err, (ub4) 1, &count,
sizeof(count), SQLT_INT, (dvoid *) 0, (ub2 *) 0,
(ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIBindByPos(updth, &bnd3hp, err, (ub4) 2, &holdid,
sizeof(holdid), SQLT_INT, (dvoid *) 0, (ub2 *) 0,
(ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT))){
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIStmtExecute(svc, updth, err, (ub4) 1, (ub4) 0,
(CONST OCISnapshot *) 0, (OCISnapshot *) 0,
(ub4) OCI_DEFAULT))){
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIHandleAlloc((dvoid *) env, (dvoid **) &comm,
(ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtPrepare(comm, err, (text*)(void*)stmt,
(ub4) strlen((char *) stmt),
(ub4) OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r=OCIStmtExecute(svc, comm, err, (ub4) 1,
(ub4) 0, (CONST OCISnapshot *) 0, (OCISnapshot *) 0,
(ub4) OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
OCIHandleFree((dvoid *) comm, (ub4) OCI_HTYPE_STMT);
OCIHandleFree((dvoid *) updth, (ub4) OCI_HTYPE_STMT);
if ((r = OCISessionEnd(svc, err, ses, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIServerDetach(srv, err, OCI_DEFAULT))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) ses, (ub4) OCI_HTYPE_SESSION))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) svc, (ub4) OCI_HTYPE_SVCCTX))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) srv, (ub4) OCI_HTYPE_SERVER))) {
checkerrr(err, r, (text*)err_msg);
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
if ((r = OCIHandleFree((dvoid*) err, (ub4) OCI_HTYPE_ERROR))) {
oci_error = 1;
cleanup();
success_flag = 0;
sprintf(sockwrite, "%s", NO_JOB);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
continue;
hold_filename = strtok_r(filename, " ", &progress);
strcpy(filename,hold_filename);
strcpy(tif_filename, filename);
hold_tiffile = strtok_r(tif_filename, ".", &progress);
strcpy(tif_filename, hold_tiffile);
strcat(tif_filename, ".tif");
hold_filepath = strtok_r(filepath, " ", &progress);
strcpy(filepath, hold_filepath);
strcpy(return_filepath, filepath);
strcat(return_filepath, "/");
strcat(return_filepath, filename);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_DEBUG,
" [1000][id %d] Image %s located in %s will be converted to image filename %s ",
holdid, tif_filename, filepath, filename);
if (tif_filename == NULL) {
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_WARN,
" [1001][id %d] No file to convert. No file name associated with the job",
holdid);
sprintf(sockwrite, "%s", NO_JOB);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000][id %d] No job to perform. Writing to %d %s",
holdid, (int)pthread_self(), sockwrite);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
if ( count <= max_failure ) {
success_flag = 1;
reprocess_flag = 1;
goto reprocess;
else {
success_flag = 0;
continue;
//continue;
strcpy(filepath_full, filepath);
strcat(filepath_full, "/");
strcat(filepath_full, tif_filename);
if (stat(filepath_full, &filebuf) < 0) {
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_WARN,
" [1002][id %d] Could not stat the file %s. Nothing to send to %d ",
holdid, filepath_full, (int)pthread_self());
sprintf (sockwrite, "%s", NO_JOB);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000][id %d] No job to perform. Writing to %d %s",
holdid, (int)pthread_self(), sockwrite);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
Readline_r(myfd, sockread, 255);
if ( count <= max_failure ) {
success_flag = 1;
reprocess_flag = 1;
goto reprocess;
else {
success_flag = 0;
continue;
//continue;
datasize = (int)filebuf.st_size;
sprintf(s_resolution, "%d", resolution);
sprintf(s_format, "%d", format_cd);
strcpy(conv_details, "./conv.sh:");
strcat(conv_details, tif_filename);
strcat(conv_details, ":");
strcat(conv_details, s_resolution);
strcat(conv_details, ":");
strcat(conv_details, s_format);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_NOTICE,
" [1000][id %d] Writing to socket all conversion details for %d ",
holdid, (int)pthread_self());
sprintf(sockwrite, "%d=%s%%%s%%%d%%%s\n", id, conv_details,
tif_filename, datasize, return_filepath);
log4c_appender_set_type(myappender, log4c_appender_type_get("stream"));
log4c_appender_set_udata(myappender, log_fd);
mylog_log("DjsMaster", LOG4C_PRIORITY_DEBUG, " [1000][id %d] Sending %s",
holdid, sockwrite);
Writen_r(myfd, sockwrite, (int)strlen(sockwrite));
if ((datafd = open(filepath_full, O_RDONLY)) < 0) {
close(myfd);
log4c_appender_set_type(myappender,I wonder how OCI_OBJECT will fix it as the call to OCIServerAttach is the culprit in the update_Tables function.
Maybe you are looking for
-
Can someone tell me what the "Auto Fix MRDVR" will do?
Verizon techs have given me different answers on this. One said I will lose recordings on the DVR. He also said that it effectively reformats the DVR so it will not recognize my external drive after running the auto fix. Another said it is basically
-
How to connect a time capsule to another network
I have recently moved to an area that has no landline system, all ISP's are provided through a wireless router. How should I connect the timecapsule into such a network? Regards, Martin
-
MS SQL Server 2012 Developers Freeze At ODBC Setup
I am attempting to create an ODBC connection using my local computer's Admin Tools-ODBC Connection interface. I can select the MS SQL Server driver type, enter the odbc name I want to call the connection , then click browse so to look for sql databas
-
CSS - load balance backend communication
Hi guys, I need LB something like this in routed mode: first data flow: [client]->[vip1-c(css)]->[www1/www2] and second (backend) flow is: [www1/www2]->[vip2-c(css)]->[www3/www4] vip1,2-c = VIP address on client side www1,2,3,4 = all servers are in t
-
I want to try my FaceTime anybody help me? My email for to try is [email protected]