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)