DCOracle2: OCI error

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Chris

    #1

    DCOracle2: OCI error

    Hello

    I'm using DCOracle2 with Python 2.1 and Oracle 8.1.7 on Solaris and
    while it's working most of the time, I have random ORA-01084 invalid
    argument in OCI call errors that occur on INSERT.
    Out of 18000 queries all using the same DB connection I have like 15
    errors of this type. It's always the same SQL queries (2 different
    INSERT and some other SELECT), only the parameters change and they're
    always valid. When the error occur I can simply retry the statement and
    it works, so nothing's wrong with the query and its parameters.
    If I launch all the queries again the errors will occur again but never
    at the same place, it's really random except for the fact that it only
    occurs on INSERT.
    There are commits after each INSERT. When I have an ORA-1084 I rollback
    and go on with the next queries and they work.

    So I'm thinking it may be a bug in DCOracle2.
    I've activated the DCOracle traceback and I've noticed that the error
    always occurs on the binding of NULL (None) values.
    My guess at the moment is that the bindObject function in dco2.c should
    return 0x00000000 for bind->valuep when the value is None and indeed
    it's what it does most of the time but when the error occurs I can see
    in the traceback that 0xffffffff is returned and this make the
    following call to OCIBindByPos fail with the above error.
    Why would 0xffffffff be returned? Any help on this is appreciated.
    I'm especially interested in the inner working of dco2.c OCI calls so I
    can investigate more because for now I'm stuck.
    I'll try to add disconnect / reconnect every now and then to see if it
    helps.

    Regards
    Chris

  • Chris

    #2
    Re: DCOracle2: OCI error

    Update: Instead of disconnect / reconnect, I made it so that in case of
    1084 errors I rollback and retry the same INSERT again.
    It worked... It's not beautiful code but it's working.
    So really I think something's fishy in dco2.c
    If someone tell me what should be investigated I could look into the
    issue.

    Chris

    Comment

    • Diez B. Roggisch

      #3
      Re: DCOracle2: OCI error

      Chris wrote:
      [color=blue]
      > Update: Instead of disconnect / reconnect, I made it so that in case of
      > 1084 errors I rollback and retry the same INSERT again.
      > It worked... It's not beautiful code but it's working.
      > So really I think something's fishy in dco2.c
      > If someone tell me what should be investigated I could look into the
      > issue.[/color]

      No idea, but could as well be OCI. We're working here with ORACLE 10g with
      the java JDBC-driver - and already found an oracle-bug and a driver-bug. So
      what I would recommend is looking into what dco2 actually does at that
      point - if it only puts a thin layer above OCI, and the problems come from
      there.

      Diez

      Comment

      Working...