[26ai] ConnStr Tool
![[26ai] ConnStr Tool](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F5005f06e-946c-49ba-bfe8-7fe18d1075d9.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
El artículo también se encuentra publicado en Ingles English version.
En el artículo de hoy, vamos a ver la nueva herramienta que se ha introducido en la 26ai ConnStr .
Es una herramienta command-line que sirve para mostrar las conexiones por cada servicio definido en nuestra base de datos en formatos Easy Connect, JDBC y Python, dándonos la posibilidad de incluir esa información dentro del tnsnames.
Otro punto que hay que tener en cuenta es que el listener debe estar levantado, sino nos dará error.
Sin más, vamos al lío.
Revisamos cómo se encuentra el listener:
[oracle@~]$ lsnrctl status
LSNRCTL for Linux: Version 23.26.0.0.0 - for Oracle Cloud and Engineered Systems on 25-MAR-2026 14:28:21
Alias LISTENER
Version TNSLSNR for Linux: Version 23.26.1.0.0 - Production
Start Date 09-MAR-2026 17:13:58
Uptime 15 days 21 hr. 14 min. 23 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/23.0.0.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/l23ai/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=X.X.X.X)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
Instance "+APX1", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 1 handler(s) for this service...
Service "XXXXX.paas.oracle.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.paas.oracle.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.paas.oracle.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
Service "XXXXX.XXXXX.XXXXX.oraclevcn.com" has 1 instance(s).
Instance "DB23ai", status READY, has 2 handler(s) for this service...
The command completed successfully
Perfecto, el listener esta arriba.
Vamos a ejecutar ConnStr y veamos que información nos da:
[oracle@ ~]$ connstr
Using Listener: LISTENER with Oracle Home: /u01/app/oracle/product/23.0.0.0/dbhome_1
Service Name: XXXXXXXXX.paas.oracle.com
Connection String: X.X.X.X:1521/XXXXXXXXX.paas.oracle.com
Service Name: XXXXXXX.XXXXXX.vcn23ai.oraclevcn.com
Connection String: X.X.X.X:1521/XXXXXX.XXXXXXXX.vcn23ai.oraclevcn.com
...
...
Connection strings can be used to connect to the specified service name.
For SQL*Plus you can use:
SQL> connect username@X.X.X.X:1521/XXXXX.paas.oracle.com
For Python you can use:
connection = oracledb.connect(user="username", password="password", dsn="X.X.X.X:1521/XXXXXX.paas.oracle.com")
For JDBC Thin you can use: OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@X.X.X.X:1521/XXXXXX.paas.oracle.com");
ods.setUser("username"); ods.setPassword("password");
Connection conn = ods.getConnection();
Write connect strings to tnsnames.ora (Y/N)? (Default: N):
Que maravilla de output no? Oracle nos facilita de manera muy sencilla las cadenas de conexión para Easy Connect, JDBC y Python.
Y como nota final, nos da la opción de incluir las cadenas en el tnsnames.ora!
En este caso, hemos ejecutado directamente el comando porque tenemos un único listener. Si tuviéramos más de un listener, podríamos especificar la opción -L junto con el nombre del listener.
Otras utilidades del comando son las siguientes:
- Listar los listener disponibles.
[oracle@~]$ connstr -e
PROTOCOL PORT HOST
tcp 1521 X.X.X.X
- Listar los servicios disponibles:
[oracle@~]$ connstr -s
XXXXXXXX.paas.oracle.com
XXXXXXXX.paas.oracle.com
XXXXXXXX.XXXXXXXX.vcn23ai.oraclevcn.com
pdb_david.XXXXXXXX.vcn23ai.oraclevcn.com
+APX
+ASM
+ASM_DATA
+ASM_RECO
XXXXXXXX.XXXXXXXX.vcn23ai.oraclevcn.com
XXXXXXXX.paas.oracle.com
XXXXXXXX.XXXXXXXX.vcn23ai.oraclevcn.com
XXXXXXXX.XXXXXXXX.vcn23ai.oraclevcn.com
- Obtener la conexión JDBC de un servicio
[oracle@ ~]$ connstr -j pdb_david jdbc:oracle:thin:@X.X.X.X:1521/XXXXXXXX.paas.oracle.com
- Obtener la cadena de conexión de un servicio
[oracle@~]$ connstr -d pdb_david
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=X.X.X.X)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXXXXXXX.paas.oracle.com)))
- Obtener la cadena de conexión de un servicio en formato Easy Connect.
[oracle@~]$ connstr -z pdb_david
X.X.X.X:1521/XXXXXXXX.paas.oracle.com
Espero que os guste. ¡Nos vemos en el próximo artículo!
![[26ai] Limpieza de objetos obsoletos en desuso](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F93181086-1008-4184-8454-33b7367ebedb.png&w=3840&q=75)
![[26ai] Hybrid Read-Only Mode PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fde208bd2-5e24-4fd3-acf7-8e5394d95283.png&w=3840&q=75)
![[26ai] ALERT_LOG_MAX_SIZE](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fcbb365d0-4428-4a41-930d-516ce59e3355.jpg&w=3840&q=75)
![[26ai] Instalación de Oracle26ai en Linux 9](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2Fd9a6ba10-eb2d-4fee-8a0c-f4957cbdc676.png&w=3840&q=75)