[Zope-DB] OracleStorage problem

jagarrido at emergya.info jagarrido at emergya.info
Wed Jun 28 08:33:46 EDT 2006


Hello all.

After installing a Oracle8i client in my Zope machine(2.8.3) and compiling
DCOracle2 product satisfactory, I added the DCOracle2 and DCOracleStorage 
Directories at $ZOPE_INSTANCE/lib/python. Later, I created a
zodb_custom.py file at $ZOPE_INSTANCE and fixed $ORACLE_HOME variable at
my oracle_home client Directory.

My Oracle8i Database resides in other machine Zope resides. I fixed
tnsnames.ora of my Oracle client correctly to the Oracle machine(Solaris
9).

I executed the sqlplus -s user/pw at sid @Full.sql sentence and tables were
created correctly in Oracle machine.

The problem resides at startup Zope, showing this error:

Traceback (most recent call last):
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/Startup/run.py", line
56, in ?
    run()
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/Startup/run.py", line
21, in run
    starter.prepare()
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/Startup/__init__.py",
line 98, in prepare
    self.startZope()
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/Startup/__init__.py",
line 257, in startZope
    Zope2.startup()
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/__init__.py", line 47,
in startup
    _startup()
  File "/home/jagarrido/Zope/DMR/lib/python/Zope2/App/startup.py", line
64, in startup
    DB = ZODB.DB(storage)
  File "/home/jagarrido/Zope/DMR/lib/python/ZODB/DB.py", line 239, in
__init__
    storage.load(z64,'')
  File "/home/jagarrido/Zope/DMR/lib/python/DCOracleStorage/Full.py", line
250, in load
    s, c = self._call('load', (z_oid, version), 'pickle')
  File "/home/jagarrido/Zope/DMR/lib/python/DCOracleStorage/Full.py", line
201, in _call
    return apply(getattr(self, name), args+(c,))
  File "/home/jagarrido/Zope/DMR/lib/python/DCOracle2/DCOracle2.py", line
1492, in __call__
    cursor.execute(sql,__plist=args)
  File "/home/jagarrido/Zope/DMR/lib/python/DCOracle2/DCOracle2.py", line
973, in execute
    result = self._cursor.execute()
dco2.DatabaseError: (24370, 'ORA-24370: illegal piecewise operation
attempted')


I see the Oracle error and says me:
ORA-24370:  illegal piecewise operation attempted
  Cause:  Data of a certain datatype that does not support piecewise
operation is being sent or fetched in pieces.
  Action:  Always set the piece value to OCI_ONE_PIECE for datatypes that
does not support piecewise operation.

I see in a comment from Mathew:
This one looks like the stored procedure is trying to
return two LONG columns (which is not supported right now).  Without
tracing it I can't say for sure what the illegal piecewise operation it
was trying to do, but it is LONG related, for sure.
The unique LONG is Z_PICKLE in ZODB_PICKLE table.

suggestions to resolve?

Thanks for all






More information about the Zope-DB mailing list