-
Notifications
You must be signed in to change notification settings - Fork 364
Description
1. What is your version of Python? Is it 32-bit or 64-bit?
Python 3.6.3 (64-bit) on CentOS 6.10. This is from CentOS SCL repository:
$ rpm -q rh-python36-python
rh-python36-python-3.6.3-3.el6.x86_64
2. What is your cx_Oracle version?
cx-Oracle 6.4.1 - we have reproduced with both the manylinux1 build and a build created as follows:
pip uninstall -y cx-Oracle
pip install --no-cache --index https://pypi.org/simple --no-binary cx-Oracle cx-Oracle==6.4.1
We found that this no longer occurs with home-built versions of cx-Oracle 5.2.1 and cx-Oracle 5.3.
3. What exact command caused the problem (e.g. what command did you try to install with)?
./manage.py migrate
Who were you logged in as?
davisda4, but this is also occurring in our CI/CD environment.
4. What error(s) you are seeing?
During Django migrations, we see a traceback from
django.db.utils.DatabaseError: ORA-03124: two-task internal error
. This Django exception class is a wrapper for multiple database vendor specific errors. We are assuming the Oracle error number is of sufficient detail. See the attached file for full log information:
The pid/tid come from %(process)d and %(thread)d in the python logging formatter. Analyzing django/db/backends/utils.py
confirms that the last SQL statement in this full log was the one on which the problem occurred. Note that there are no migrations, and so this is stock Django 1.11.20.
5. What OS (and version) is Python executing on?
CentOS 6.10
6. What is your version of the Oracle client (e.g. Instant Client)? How was it installed? Where is it installed?
12.1.0.1
Note that Django 1.11.20 was used. I cannot easily update to cx_Oracle 7+ without also updating to Django 2.2, which my organization is not yet ready to do.
I am not sure how it was installed, but the instantclient rpms are not installed
/usr/nlm/share/oracle/12.1.0.1
- this is a read-only NFS mount
7. What is your Oracle Database version?
Oracle 18c
8. What is the PATH
environment variable (on Windows) or LD_LIBRARY_PATH
(on Linux) set to? On macOS, what is in ~/lib
?
$ echo $LD_LIBRARY_PATH
/opt/rh/rh-python36/root/usr/lib64:/usr/nlm/share/oracle/12.1.0.1/lib
9. What Oracle environment variables did you set? How exactly did you set them?
This is an expert from my .bashrc
:
ORACLE_HOME=/usr/nlm/share/oracle/12.1.0.1
TNS_ADMIN=/usr/nlm/share/etc/tns_admin
NLS_LANG="AMERICAN_AMERICA.UTF8"
# Put oracle's pelr libraires into PERL5LIB
if [ -z "$ORAPERL" ]; then
ORAPERL=/usr/nlm/share/oracle/12.1.0.1/perl
PERL5LIB="$ORAPERL/lib/5.14.1:$ORAPERL/lib/site_perl/5.14.1";
export PERL5LIB
fi
export ORACLE_SID
export ORACLE_HOME
export ORACLE_PERL
export PERL5LIB
export TNS_ADMIN
export NLS_LANG
if [[ -z "$LD_LIBRARY_PATH" ]]; then
LD_LIBRARY_PATH=$ORACLE_HOME/lib
else
[[ $LD_LIBRARY_PATH =~ $ORACLE_HOME ]] || LD_LIBRARY_PATH="$ORACLE_HOME/lib:$LD_LIBRARY_PATH"
fi
export LD_LIBRARY_PATH
10. Do you have a small, single Python script that immediately runs to show us the problem?
Not as yet.
11. Additional Notes
We also submitted through our vendor support channel as SR 3-20049808601, with title "Client connection failing on with ORA-03124 Two-task internal error".