mac instant cx_oracle conectar con 12c 10g cx-oracle

cx oracle - instant - cx_Oracle y conexión a Oracle DB de forma remota



python oracle 12c (3)

Puede especificar el servidor en la cadena de conexión, por ejemplo:

import cx_Oracle connstr = ''scott/tiger@server:1521/orcl'' conn = cx_Oracle.connect(connstr)

  • "servidor" es el servidor, o la dirección IP si lo desea.
  • "1521" es el puerto en el que está escuchando la base de datos.
  • "orcl" es el nombre de la instancia (o servicio de base de datos).

¿Cómo se conecta a un servidor remoto a través de la dirección IP de forma que TOAD, SqlDeveloper, pueda conectarse a las bases de datos con solo la dirección IP, el nombre de usuario, el SID y la contraseña?

Cada vez que trato de especificar y la dirección IP, parece tomarlo localmente.

En otras palabras, ¿cómo debe formatearse la cadena para cx_Oracle.connect () en una base de datos no local?

Hubo una publicación anterior que aparece como una respuesta que se conecta a Oracle a través del módulo cx_Oracle con el siguiente código:

#!/usr/bin/python import cx_Oracle connstr=''scott/tiger'' conn = cx_Oracle.connect(connstr) curs = conn.cursor() curs.execute(''select * from emp'') print curs.description for row in curs: print row conn.close()


Me gusta hacerlo de esta manera:

ip = ''192.168.0.1'' port = 1521 SID = ''YOURSIDHERE'' dsn_tns = cx_Oracle.makedsn(ip, port, SID) db = cx_Oracle.connect(''username'', ''password'', dsn_tns)

Una de las razones principales por las que me gusta este método es que normalmente tengo un archivo TNSNAMES.ORA en algún lugar, y puedo verificar que el objeto dsn_tns haga lo correcto haciendo:

print dsn_tns

y comparando la salida a mi TNSNAMES.ORA


En lugar de especificar el SID, puede crear un dsn y conectarse a través de service_name como:

import cx_Oracle ip = ''192.168.0.1'' port = 1521 service_name = ''my_service'' dsn = cx_Oracle.makedsn(ip, port, service_name=service_name) db = cx_Oracle.connect(''user'', ''password'', dsn)

El beneficio de utilizar el nombre del servicio en lugar del identificador de instancia específico (SID) es que también funcionará en un entorno de RAC (el uso de un SID no lo hará). Este parámetro está disponible a partir de la versión 5.1.1 de cx_Oracle (28 de agosto de 2011)