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

Reply via email to