请教各位,我遇到了如下问题:
环境: HP-UX AI64+ORACLE RAC 10G+OCCI
问题: 在写CLOB字段时,被锁阻塞住,一直未能释放,这是堆栈信息:
#0 0x60000000c02a6bd0:0 in __ksleep+0x30 () from /usr/lib/hpux32/libc.so.1
#1 0x60000000c038d6c0:0 in __mxn_sleep+0xab0 () from /usr/lib/hpux32/libpthread.so.1
#2 0x60000000c034bd10:0 in <unknown_procedure> + 0x4a0 () from /usr/lib/hpux32/libpthread.so.1
#3 0x60000000c034ff10:0 in pthread_mutex_lock+0x170 () from /usr/lib/hpux32/libpthread.so.1
#4 0x60000000dd512ce0:0 in sltsmna+0x60 () from /oracle/oracle/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
#5 0x60000000dbd90fe0:0 in kpullas+0x1d40 () from /oracle/oracle/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
#6 0x60000000dbe9ea10:0 in OCILobLocatorAssign+0x30 () from /oracle/oracle/app/oracle/product/10.2.0/db_1/lib32/libclntsh.so.10.1
#7 0x561ded0:0 in oracle::occi::Clob::Clob(oracle::occi::Connection const*,OCILobLocator*,bool)+0x1b0 () at occiClob.cpp:204
#8 0x55d9750:0 in oracle::occi::ResultSetImpl::getClob () at occiResultSetImpl.cpp:1892
#9 0x4e11de0:0 in CTableObj::PutClobVal2DB (this=0x77337e50, rs=0x407fbaf8, pTblDef=0x4078b3e4, rec=@0x77337db0) at /home/xc/src/IPSServer/../../include/Cinclude/IPSServer/DBConnection.cpp:788Oracle数据库环境模式:多线程保护+支持面向对象,即Environment::THREADED_MUTEXED | Environment::OBJECT
请各位不吝指教,多谢!
这是我的部分代码
=========================================================
Environment::Mode eMode;eMode = (Environment::Mode)(Environment::THREADED_MUTEXED | Environment::OBJECT);_Env = Environment::createEnvironment("SIMPLIFIED CHINESE_CHINA.UTF8","SIMPLIFIED CHINESE_CHINA.AL16UTF16", eMode);
_Env->setCacheOptSize(41943040);
_Env->setCacheMaxSize(10);
.....stmt = pOraCn->createStatement(sCLOBSQL);
if ( NULL != stmt )
{
ResultSet* rs = NULL; rs = stmt->executeQuery();
if ( NULL != rs )
{
if ( oracle::occi::ResultSet::END_OF_FETCH != rs->next() )
{
Clob vClob; vClob = rs->getClob(1);
vClob.open();
try
{
vClob.write(sVal.length(), (unsigned char*)sVal.c_str(), sVal.length(), 1);
}
catch ( ... )
{
//
}
vClob.close();
}
stmt->executeUpdate();
stmt->closeResultSet(rs);
}
pOraCn->commit();
pOraCn->terminateStatement(stmt);
}
=========================================================
希望各位同学多多指点!