oracle / oracle/python-oracledb

Thin mode fails with ORA-24964 when trying to open a PDB migrated from Oracle 19c to 26ai

Open
#592 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
451
Forks
119
PR merge metrics
No merged PRs in 30d

Description

1. What versions are you using?

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0

Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

platform.platform: Linux-5.15.0-319.201.4.2.el8uek.x86_64-x86_64-with-glibc2.28
sys.maxsize > 2**32: True
platform.python_version: 3.12.13
oracledb.__version__: 4.0.1

2. Is it an error or a hang or a crash?

Command ALTER PLUGGABLE DATABASE test OPEN READ WRITE fails with ORA-24964: ALTER SESSION SET CONTAINER error when run in oracledb thin mode

3. What error(s) or behavior you are seeing?

First, I detach a PDB from 19c with commands:
ALTER PLUGGABLE DATABASE test UNPLUG INTO '/tmp/test.pdb';

Then I attach it to 26ai:
create pluggable database test as clone using '/tmp/test.pdb';

Finally, I'm trying to open it:
ALTER PLUGGABLE DATABASE test OPEN READ WRITE;

If I run last command using sqlplus or oracledb in thick mode, PDB gets automatically upgraded and open after 20 minutes.

If I run last command using oracledb in thin mode, last command fails with error ORA-24964 after fer seconds.

4. Does your application call init_oracle_client()?

Failing application does not call init_oracle_client(), it runs in thin mode.

I tried same command with calling init_oracle_client() and using thick mode and it worked fine.

5. Include a runnable Python script that shows the problem.

This fails:

import oracledb

# Thin mode is default
print("Running in Thin mode:", oracledb.is_thin_mode())

dsn = "hostname:1521/CDB"

connection = oracledb.connect(
    user="sys",
    password="password",
    dsn=dsn,
    mode=oracledb.SYSDBA
)

cursor = connection.cursor()

try:
    cursor.execute(
        "ALTER PLUGGABLE DATABASE test OPEN READ WRITE"
    )
    connection.commit()
    print("PDB opened successfully in Thin mode")

except Exception as e:
    print("Thin mode error:")
    print(e)

finally:
    cursor.close()
    connection.close()
$ python3.12 test_thin.py
Running in Thin mode: True
Thin mode error:
ORA-24964: ALTER SESSION SET CONTAINER error
Help: https://docs.oracle.com/error-help/db/ora-24964/

This succeeds:

import oracledb

# Enable Thick mode
oracledb.init_oracle_client(
    lib_dir="/u01/app/oracle/product/23/dbhome_1/lib"
)

print("Running in Thin mode:", oracledb.is_thin_mode())

dsn = "hostname:1521/CDB"

connection = oracledb.connect(
    user="sys",
    password="password",
    dsn=dsn,
    mode=oracledb.SYSDBA
)

cursor = connection.cursor()

try:
    cursor.execute(
        "ALTER PLUGGABLE DATABASE test OPEN READ WRITE"
    )
    connection.commit()
    print("PDB opened successfully in Thick mode")

except Exception as e:
    print("Thick mode error:")
    print(e)

finally:
    cursor.close()
    connection.close()

$ python3.12 test_thick.py
Running in Thin mode: False
PDB opened successfully in Thick mode

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the supplied test_thin.py and test_thick.py scripts against the described migrated PDB, then compare the thin- and thick-mode handling of ALTER PLUGGABLE DATABASE test OPEN READ WRITE. Trace the thin-mode entry point responsible for the ORA-24964 response; done means the thin-mode command opens the PDB successfully without that error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design, databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.