¿Qué versiones de clientes Oracle se conectan a mi base?
Aquí explico como relevar correctamente las versiones de los clientes oracle que se conectan a una base de datos.
Soy una persona, luego un ingeniero y magister que posee más de 15 años de experiencia administrando base de datos Oracle y diseñando arquitecturas para satisfacer las necesidades del negocio y también para innovar.
Eventos como orador: • Speaker del Oracle Developer Community Tour 2018 • Speaker del Oracle Groundbreakers Tour 2019 LATAM
Experiencia Técnica: • Oracle Cloud Infrastructure (OCI). • Exadata Cloud at Customer. • Migración de base de datos utilizando Golden Gate con corte de servicio tendiendo a cero. • Administrador de PDBaaS, dentro de una nube privada interna de Oracle. • Oracle In-Memory. • Oracle Data Masking / Oracle Data Redaction. • Automatización de aplicación de parches PSU utilizando el Cloud Control. • Actualmente me desempeño como Administrador de Bases de Datos, principalmente de Oracle, versiones 11g, 12c, 18c y 19c con arquitectura multitenant. • Utilización del comando DUPLICATE para actualizar ambientes de testeo con información productiva. • Realizo todo lo que concierne a la administración de bases de datos, como ser instalaciones de motores (Single Instance, RAC y RAC Extendido) 11g, 12c, 18c y 19c. Realizo upgrades y, migraciones de bases de datos entre servidores con distintos sistemas operativos, aplicaciones de parches PSU, CPU, OOP, respaldos y recuperaciones a través de RMAN. • Recuperación de objetos rápida y retroceso de la instancia en el tiempo utilizando la tecnología Oracle Flashback. • Creación de ambientes de contingencia utilizando Oracle Data Guard. Pruebas de Switchover y Failover. También utilizo Oracle Snapshot StandBy para aprovechar mejor estos ambientes de contingencia. • Instalación y configuración del Cloud Control 12c/13c. • Administro bases de datos que se alojan en el Oracle Exadata Machine. • Experiencia en la administración de bases de datos que soportan el sistema SAP, realizo tareas como refresh, particionamiento de tablas, etc. • Oracle Golden Gate 11g, 12c, 18c y 19c. • Sistemas operativos: AIX, Unix (HP-UX), Linux (RedHat – Centos), Windows. • Scripting en bash. • He configurado bases espejos (Stand By) de manera manual para motores con licencia Standard.
Para poder saber esto sin perdernos de ninguna conexión, ni siquiera esas conexiones que se realizan una vez por mes y por la noche, crearemos un trigger de logon que relevará la información del cliente y la guardará en una tabla para este fin.
Comencemos creando una tabla en el esquema SYS. Yo en este ejemplo la creé en el tablespace SYSAUX, pero vos podés crearla en el tablespace que mejor te parezca:
CREATE TABLE sys.audit_sesiones_cliente (
id NUMBER GENERATED ALWAYS AS IDENTITY,
evento VARCHAR2(10), -- LOGON | LOGOFF
fecha_evento DATE,
sid NUMBER,
serial# NUMBER,
inst_id NUMBER,
username VARCHAR2(30),
osuser VARCHAR2(30),
machine VARCHAR2(64),
program VARCHAR2(128),
client_version VARCHAR2(20)
) TABLESPACE SYSAUX;
Y ahora creamos el trigger de logon, que contemplará todas las conexiones que se realicen en todos los nodos del RAC:
CREATE TRIGGER SYS.trg_logon_cliente
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO SYS.audit_sesiones_cliente (
evento, fecha_evento,
sid, serial#, inst_id,
username, osuser, machine, program,
client_version
)
SELECT 'LOGON', SYSDATE,
s.sid, s.serial#, s.inst_id,
s.username, s.osuser, s.machine, s.program,
c.client_version
FROM gv$session s
JOIN gv$session_connect_info c
ON s.inst_id = c.inst_id
AND s.sid = c.sid
WHERE s.audsid = SYS_CONTEXT('USERENV','SESSIONID');
END;
/
Listo, ahora a esperar que pase al menos un mes, para no perdernos ninguna conexión de esos procesos batches que se ejecutan una vez por mes. Si en tu entorno tenés procesos que se ejecutan semestralmente, deberás esperar 6 meses para asegurarte de no perder nada.
¡Esto es todo!
Hasta el próximo post 😀
Saludos desde Buenos Aires, Argentina

