Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#592 6 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
python

Línea de trabajo

Comienza ejecutando los scripts proporcionados test_thin.py y test_thick.py contra la PDB migrada descrita y, a continuación, compara el manejo de ALTER PLUGGABLE DATABASE test OPEN READ WRITE en los modos thin y thick. Rastrea el punto de entrada del modo thin responsable de la respuesta ORA-24964; se considera terminado cuando el comando del modo thin abre correctamente la PDB sin ese error.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

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
Lenguaje dominante
Python
Estrellas
451
Forks
118
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de oracle/python-oracledb

Todos los issues de oracle/python-oracledb

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.