Hola, realmente estoy tratando de descubrir cómo conectarme a una base de datos de prueba de Oracle remota y no tengo experiencia en Java. Así que si pudiera obtener su ayuda, estaría eternamente agradecido.
Tengo una base de datos de prueba remota a la que intento conectarme y tengo una conexión jdbc con un SID de estilo antiguo. De acuerdo con este enlace: https://github.com/oracle/node-oracledb/blob/master/doc/api.md#notjdbc , se supone que debo crear un archivo tnsnames.ora para establecer la conexión, así :
tnsnames.ora:
appDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) (CONNECT_DATA = (SID = ORCL) ) )y luego se supone que debo hacer referencia a él en mi archivo node server.js, así
servidor.js:
const oracledb = require('oracledb'); oracledb.getConnection( { user : process.env.ORACLE_USER, password : process.env.ORACLE_PASSWORD, connectString : "appDB" }, function(err, connection) { if (err) { console.error(err.message); return; } connection.execute( "SELECT * " + "FROM BOS_course", function(err, result) { if (err) { console.error(err.message); doRelease(connection); return; } console.log(result.rows); doRelease(connection); }); }); module.exports = { oracledb }; Sin embargo, no tengo idea de dónde se supone que debo colocar el archivo tnsnames.ora. Encontré este enlace en línea $ORACLE_HOME/network/admin pero no sé a qué se refiere. Sólo tengo acceso limitado a la base de datos. Disculpen mi ignorancia en Java. ¿Cómo puedo usar esta conexión en mi aplicación de nodo, que vive completamente separada de la base de datos? ¿Cómo sabe mi aplicación qué es "appDB" y cómo encontrarlo en el archivo tnsnames.ora?
¡Gracias por adelantado!
poner la dirección de conexión completa en la variable connectString
{ user : process.env.ORACLE_USER, password : process.env.ORACLE_PASSWORD, connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA =(SID= ORCL)))" }
Para responder técnicamente a la pregunta, establezca la variable de entorno TNS_ADMIN . Luego, node-oracledb (y otras API de lenguaje basadas en OCI como Python cx_Oracle, PHP OCI8, Ruby ruby-oci8, etc.) buscarán $TNS_ADMIN/tnsnames.ora .
Tengo un caso similar en el que tengo dos máquinas virtuales en Azure. Uno para Oracle12c DB y otro para el paquete nodejs oracledb con bibliotecas del lado del cliente de Oracle. Esta es mi cadena de conexión del lado del cliente para conectarme con la base de datos remota.
module.exports = { user : process.env.NODE_ORACLEDB_USER || "hr", password : process.env.NODE_ORACLEDB_PASSWORD || "welcome", connectString : process.env.LOCAL || "myipaddress:1521/servicename", };