Dear DBI users,
My co-worker gets following error messages when trying to query the
CHAR type columns in the table on Oracle 11g R1.
/////qw start/////
DBD::Oracle::st fetchrow_array failed: ORA-03124: two-task internal
error (DBD ERROR: OCIStmtFetch) [for Statement "SELECT a_SESSION FROM
TEST_TB WHERE ID=?" with ParamValues:
:p1='84c8aab5140cbf000a3ddaf80257b7c2695b6c23']
/////qw end/////
'TEST_TB' table was defined like
"ID" CHAR(40 BYTE) as PRIMARY KEY
"A_SESSION" VARCHAR2(4000 BYTE)
but , we got some workarounds here
changing colums type 'CHAR' to 'VARCHAR2'
or
adding oracle's init parameter
[ alter session set \"_enable_row_shipping\"=false]
then ,everything will work fine.
Oracle support guys said
" that's perl side problem, because no alert messeges in alart_log at DB
server side , and no ORA-03124 message between client and server by
taking Oracle Net trace at oracle client side.
but Oracle Net trace shows 'ORA-01013' just before error, which means
that client canceled request to query for some reasons."
Is this a DBD::Oracle's bug ?
Could you advise me about why this was happened.
Sincerely,
### CODE ###
## in our enviroments, this works fine at first run ,but failed at
## second run,
$sql1 = "SELECT a_SESSION FROM TEST_TB WHERE ID=?";
$sth = $dbh->prepare($sql1);
$sth->bind_param( 1,'84c8aab5140cbf000a3ddaf80257b7c2695b6c23');
$sth->execute();
$sth->fetchrow_arrayref();
### Oracle table DDL###
CREATE TABLE "TEST_TB"
( "ID" CHAR(40 BYTE),
"A_SESSION" VARCHAR2(4000 BYTE) CONSTRAINT "TEST_TB_CK1" NOT
NULL ENABLE,
CONSTRAINT "TEST_TB_PK1" PRIMARY KEY ("ID")
)
### our lab ##
Oracle 11.1.0.7.12 SE RAC
CentOS 5.3 64bit
perl, v5.8.8
'DBD/Oracle.pm' => '1.32
'DBI.pm' => '1.609