[cx-oracle-users] Oracle9i-RAC anomaly
Brought to you by:
atuining
|
From: Markus E. <mar...@me...> - 2005-06-23 12:32:48
|
Hi,
we' ve observered some strange Oracle-RAC behaviour with a thread-based
Webware4Python-application and an anonymous Oracle-connection pool based on
cx_Oracle-connection against an Oracle-RAC-instance with 3 nodes.
Test- and production-environment:
- Oracle-RAC-instance-nodes:
- SuSE SLES8 with all recommeded patches by Oracle
- Oracle9i V. 9.2.0.6.0
- AppServer with OCI-client:
- SuSE SLES9 with all recommended patches by Oracle
- Webware4Python V. 0.8.1
- Python V. 2.3.5 compiled from sources
- Oracle9i-OCI-client V. 9.2.0.6.0
- cx_Oracle V. 4.1 compiled and linked against Oracle from sources
Even with a simple stress-script executing 3 SQL-statements with *2*
connections we can generate the same strange result:
-- snippet start --
for i in range(connectionSwitches):
oraConn1 = cx_Oracle.connect(connection1)
if connection2:
oraConn2 = cx_Oracle.connect(connection2)
else:
oraConn2 = oraConn1
for j in range(iterations):
c += 1
error, text = doRettungspunktTable(oraConn1, 3, massnahmenNumber,
DATA_DICT,'GPL') # Statement 1 => delete 1 record and commit
error, text = doRettungspunktTable(oraConn1, 1, massnahmenNumber,
DATA_DICT,'GPL') # Statement 2 => insert 1 record and commit
doSelect(c, oraConn2, massnahmenNumber) # Statement 3 => fetch all
records
try:
oraConn1.close()
oraConn2.close()
except cx_Oracle.InterfaceError:
pass
-- snippet stop --
What do you expect? Sure, statement 3 is fetching at least 1 record! So far,
so good, if the script is running against a Oracle9i-RAC with *1* node.
But, if the script is running against a Oracle9i-RAC with *2* or *n* nodes
sometimes the result set of statement 3 is empty!
The anomaly is reproducible from different clients.
Has anyone observered the same strange behaviour with
Oracle-RAC-installations?
I would be grateful for any advices and hints...
Salute,
Ede
--
Markus Edelmann
Email: mar...@me...
|