Connect() hangs with SSH tunnels and 11g database
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con la reproducción de Python proporcionada usando SSHTunnelForwarder, oracledb.connect() y Oracle 11g; después, compárala con los casos funcionales con 19c y con un túnel externo. Comprueba las combinaciones indicadas de cliente, Python, SID y credenciales. Se considera terminado cuando se haya identificado y corregido la causa del bloqueo, preservando las conexiones exitosas y los errores esperados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
-
What versions are you using?
Python 3.13.3 (also tried with 3.11)
Oracledb 3.1.1 (also tried 3.0.0 and 2.5.1)
Oracle database 11g
Oracle instant client 18.5 (also tried with 12.2)platform.platform: Windows-11-10.0.26100-SP0
sys.maxsize > 2**32: True
platform.python_version: 3.13.3
oracledb.version: 3.1.1 -
Is it an error or a hang or a crash? Hang
-
What error(s) or behavior you are seeing?
While trying to connect to 11g databases through SSHtunnels, oracledb.connect() hangs and doesn't return anything.
I tried it on multiple tunnels/databases combinaisons, while mixing oracledb / instantclient / python versions.If I open the tunnel through putty, oracledb.connect works.
If I open the tunnel through another script, oracledb.connect works. (!)
If I try to open a tunnel and connect to a 19c database, it works
If I do the same thing using python 3.9 and cx_oracle, it works.If I provide a wrong username or password, I get an (expected) error.
If I provide a wrong SID, I get an (expected) error.I do see an inactive connection in my v$session linked to my script.
I tried everything I could think of and do not understand what I'm missing.
-
Does your application call init_oracle_client()? Yes, I tried with instant client versions 11.2, 12.1, 18.5
I had success accessing a 19c db using instant client 21.18 through the same tunnel (and same script) -
Include a runnable Python script that shows the problem.
from sshtunnel import SSHTunnelForwarder
import oracledb
# ssh config
ssh_host = "###_tunnel.com"
ssh_port = 21
ssh_username = "ssh_user"
ssh_password = "ssh_psw"
# db config
oracle_host = "ip.of.my.db"
oracle_port = 1521
oracle_sid = "DB_SID"
oracle_user = "DB_USER"
oracle_password = "DB_PSW"
#oracle_client_path = r"C:\instant_client18c\instantclient-basic-windows.x64-18.5.0.0.0dbru\instantclient_18_5"
oracle_client_path = r"C:\instant_client11g\instantclient-basic-windows.x64-11.2.0.4.0\instantclient_11_2"
oracledb.init_oracle_client(lib_dir=oracle_client_path)
print("Thin mode enabled?", oracledb.is_thin_mode())
try:
with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_username,
ssh_password=ssh_password,
remote_bind_address=(oracle_host, oracle_port),
) as tunnel:
print(f"binding on {tunnel.local_bind_host}:{tunnel.local_bind_port}")
print(oracledb.clientversion())
param = oracledb.ConnectParams(
user=oracle_user,
password=oracle_password,
host="localhost",
port=tunnel.local_bind_port,
sid=oracle_sid,
)
with oracledb.connect(params=param) as connection:
print("connected to Oracle 11.2!") # this never prints for tunnel + 11g
with connection.cursor() as cursor:
cursor.execute("SELECT 'query success' AS TEST FROM dual")
result = cursor.fetchone()
print(result[0])
except Exception as e:
print(f"Error : {e}")
- Lenguaje dominante
- Python
- Estrellas
- 454
- Forks
- 119
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de oracle/python-oracledb
-
asyncio: DPY-4011 on connect_async() when the listener closes the original socket after a redirectPosiblemente ocupada @AlexGracas la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
oracle/python-oracledb#616 ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
oracle/python-oracledb#615 ·
-
Fetch character columns as raw bytes in the database character set into data frames (Thick mode)Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
oracle/python-oracledb#614 · 1 comentario ·
-
Client Library or Database
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
oracle/python-oracledb#613 · 3 comentarios ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 40/100
oracle/python-oracledb#612 ·
Todos los issues de oracle/python-oracledb
Issues similares
-
Performance: deprecated DeviceEntry.config_entries access blocks the event loop for tens of secondsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
tuya/tuya_cloud_ha_bridge#14 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
semantica-agi/semantica#1968 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
agent: ready area: submission priority: high type: docs
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
dkritarth/scopewatch#213 ·
Los mantenedores suelen responder en 1 día
-
Broken link in RELEASE.mdPosiblemente ocupada @Jah-yee la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
sphinx-contrib/httpdomain#143 ·
Los mantenedores suelen responder en 1 día