On Tue, 2004-10-12 at 01:05, Tim Bunce wrote:
> On Mon, Oct 11, 2004 at 02:16:16PM -0600, Alan Sparks wrote:
> > I've seen several posting regarding problems people have seen on Linux
> > with Oracle 9 client libraries and DBD::Oracle, causing an ORA-03113
> > end-of-file on communication channel error when querying through
> > database links.  I did not, however find any solutions...
> > 
> > So, we have the problem also, with Oracle 9.2.0 and DBD::Oracle 1.15 on
> > RHEL 3... talking to an Oracle 8.1.7 server.  Trace files show the
> > server process dumps core and traces out.
> 
> The server process dumping core is, by definition, an Oracle bug.
> 
> > Anyway, is there anyone out there who has managed to find a workaround
> > for the problem, either by a DBD::Oracle change or an Oracle patch?
> 
> Please open a TAR with Oracle, see what they say, and report back.
> (Sadly it's probably still best to talk in terms of your "OCI
> application" rather than mention you're using Perl/DBI/DBD::Oracle.)
> 
> Trace level 9 will trace the OCI calls.
> 
> Tim.

Did the trace() calls, that was a good suggestion.  Got a look into
Metalink, and found an issue with OCI 9.2 clients and 8.1.7 databases. 
I've reproduced part of the info below.

Basically seems to be the same problem, a describe operation on a query
involving a database link.  I guess DBD::Oracle describes the query
before execution, to get some metadata?

Doesn't look like Oracle has published a solution :-/  Wondering if
there's some way to bypass the describe or maybe somehow reorder to get
past their problem.  Will try to get the DBA to call on the bug and see
if there's any new info.

Looks like the obvious solution is to downgrade Oracle libraries.... but
getting the 8.1.7 installer to run on RHEL 3 seems like it'll be a
battle in itself (damn glibc symbols problems).
-Alan


Bug No.         2548451
Filed   04-SEP-2002     Updated         10-SEP-2004
Product         Oracle Server - Enterprise Edition      Product Version         9.2.0.1
Platform        Microsoft Windows 2000  Platform Version        4
Database Version        8.1.7.0         Affects Platforms       Generic
Severity        Severe Loss of Service  Status  Development to Q/A
Base Bug        N/A     Fixed in Product Version        8.1.7.4.99

Problem statement:

OCI 9.2.0 AGAINST AN RDBMS 8.1.7 HIT ORA-1455 SELECTING A REMOTE TABLE

Hdr: 2548451 8.1.7.0 RDBMS 9.2.0.1 PI/KPO PRODID-5 PORTID-100 ORA-1455 

Abstract: OCI 9.2.0 AGAINST AN RDBMS 8.1.7 HIT ORA-1455 SELECTING A
REMOTE TABLE

*** 09/04/02 09:09 am ***

Problem description:

-------------------

OCI 9.2 connected to an 8.1.7 rdbms

using OCIStmtExecute(OCI_DESCRIBE_ONLY)+OCIAttrGet

hit

"ORA-1455 converting column overflows integer datatype"

performing "select column_of_type_Number from
synonym_of_a_remote_table_817"

.

This happens with OCI 9.2 against rdbms 8.1.7 -dblink 8.1.7

this problem doesn't happen selecting the 8.1.7 table directly

this problem doesn't happen against a 9.2 server

this problems doesn't happens using an 8.1.7 oci program against an
8.1.7 server


Testcase step-by-step instructions:

----------------------------------

1)connect against an 8.1.7 server a create a synonym of a remote table

e.g.

create database link dbloop connect to scott identified by tiger

Database link created.

SQL> create synonym emploop for [EMAIL PROTECTED];

Synonym created.

then

alter system set global_names=false;

.

2)compile and link test.c (i used developer studio on my PC)

.

3)execute from command line

.

test scott tiger sqlnet_alias_db_817 "select count(*) from emploop"

.

rc=0 (after OCIEnvCreate)

rc=0 (after OCIHandleAlloc errhp)

rc=0 (after OCIHandleAlloc stmthp)

rc=0 (after OCIHandleAlloc stmterrhp)

rc=0 (after OCIStmtPrepare)

rc=0 (after OCIStmtExecute OCI_DESCRIBE_ONLY)

rc=0 (after OCIAttrGet colcnt=1)

rc=0 (after OCIDefineByPos)

rc=-1 (after OCIStmtExecute)

Code 1455, ORA-01455:

.

4)CHanging the OCI statement sequence simply (adding '1' at the end of
the

command line)

all works fine

.

test scott tiger sqlnet_alias_db_817 "select count(*) from emploop" 1

.

rc=0 (after OCIEnvCreate)

rc=0 (after OCIHandleAlloc errhp)

rc=0 (after OCIHandleAlloc stmthp)

rc=0 (after OCIHandleAlloc stmterrhp)

rc=0 (after OCIStmtPrepare)

rc=0 (after OCIDefineByPos)

rc=0 (after OCIStmtExecute)

Output Bind=15

.

.


Available workarounds:

---------------------

none


The ORA-3113 occurs on the second OCIStmtExecute from the front end d/b.
You

do not need a define or fetch, nor do you need to get the column count.
The

problem can be reproduced just doing:

.

- execute for describe only

- execute

.

If you don't execute for describe only the problem does not occur. 
>From ora-3113 trace file:

ksedmp: internal or fatal error

ORA-07445: exception encountered: core dump [kpoddl()+80] [SIGSEGV]

[Address not mapped to object] [16] [] []

Current SQL statement for this session:

select count(*) from syn_emp

.

Stack:

ksedmp, ssexhd, sigacthandler, kpoddl, opiodr, ttcpip, opitsk, opiino,

opiodr, opidrv, sou2o, main, _start

.

So the problem seems to be any 9i+ client connecting to an 8i database
and

executing across a link (any remote server version) following a describe
of

the same.


Release Notes :

]] ORA-3113/ORA-1455 occurred when fetching NUMBER column from 8.1.7
remote

]] server into 9.2 client with DESCRBE_ONLY done prior to EXECUTE and
FETCH


-- 
Alan Sparks, Sr. UNIX Administrator     [EMAIL PROTECTED]
Quris, Inc.                             (720) 836-2058

Reply via email to