Controladores

Controlador Oracle

Esta documentación explica la implementación del controlador Oracle y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantic.

Parámetros de Conexión

Campo UIImplementación TécnicaDescripciónRequeridoValor por Defecto
HostconnectString en la configuración de oracledbEl nombre de host o dirección IP del servidor Oraclelocalhost
PuertoParte de connectString en la configuración de oracledbEl número de puerto en el que escucha el servidor Oracle1521 (de driverPorts)
Base de DatosParte de connectString en la configuración de oracledbEl nombre de la base de datos/PDB a la que conectarseNinguno (debe ser especificado)
Propietarioowner en la configuración de gigadbEl propietario del esquema a usar para consultas y extracción de metadatosNoEsquema del usuario actual
Contenedorcontainer en la configuración de gigadbEl nombre de la Base de Datos Conectable (PDB) cuando se usa Oracle MultitenantNoNinguno
Nombre de Usuariouser en la configuración de conexión de oracledbUsuario de base de datos para autenticaciónNinguno (debe ser especificado)
Contraseñapassword en la configuración de conexión de oracledbContraseña para el usuario de base de datosNinguno (debe ser especificado)

Detalles Técnicos

La implementación del controlador Oracle utiliza la biblioteca Node.js oracledb con capacidades de agrupamiento de conexiones.

Aspectos técnicos clave:

  • El agrupamiento de conexiones se utiliza a través de la clase Pool de oracledb
  • Los conceptos de Propietario y Contenedor (PDB) son específicos de Oracle
  • El controlador utiliza el paquete DBMS_METADATA para la generación de DDL
  • Manejo de columnas virtuales en el método normalizeRecordOracle
  • Múltiples modos de carga soportados: insert, update, merge

Cuando el túnel SSH está habilitado, las conexiones se establecen primero a través del túnel antes de conectarse al servidor Oracle.

Formato de Cadena de Conexión

Las conexiones Oracle combinan campos individuales de la UI en una cadena de conexión. Se soportan dos formatos:

  1. Sintaxis de Conexión Fácil (por defecto):
//host:port/database
  1. Cadena de Conexión Directa:
user/password@//host:port/database

La aplicación toma los campos individuales de la UI (Host, Puerto, Base de Datos) y los combina en el formato #1 para la biblioteca oracledb.

Opciones de Autenticación

Oracle soporta varios tipos de autenticación:

Tipo de AutenticaciónMapeo UIDescripción
NingunaNo aplicable para OracleDeshabilita autenticación
ContraseñaCampos de usuario/contraseñaAutenticación estándar usuario/contraseña
Gestor de ContraseñasVarios campos de gestores de contraseñasObtiene credenciales de gestores de contraseñas externos

Soporte de Túnel SSH

El controlador Oracle soporta túneles SSH para acceso seguro a bases de datos detrás de firewalls o en redes privadas. Para información detallada sobre la configuración de túneles SSH, por favor consulte la documentación de Túneles SSH.

Endpoints de API Utilizados

Las conexiones Oracle se utilizan principalmente en:

  • Creación de Tap (descubrimiento de fuente de datos)
  • Creación de Sink (destino de datos para datos anonimizados)
  • Ejecución de Pipeline (extracción y carga de datos)

Parámetros Personalizados

El controlador Oracle soporta parámetros personalizados adicionales que pueden especificarse en formato YAML para ajustar finamente el comportamiento de conexión, agrupamiento, configuraciones SSL y otras opciones avanzadas.

Atributos de Conexión

# Configuración de Conexión
stmtCacheSize: 30
edition: "ORA$BASE"
events: false
externalAuth: false
privilege: "SYSDBA"  # o "SYSOPER", "SYSASM", "SYSBACKUP", "SYSDG", "SYSKM", "SYSRAC"
 
# Soporte de Sharding
shardingKey: ["clave1", "clave2"]
superShardingKey: ["super_clave1", "super_clave2"]
 
# Etiquetado de Sesión
tag: "app_producción"

Atributos de Agrupamiento

# Configuración de agrupamiento
poolAlias: "miagrupamiento"
poolMin: 4
poolMax: 10
poolIncrement: 1
poolTimeout: 60
poolPingInterval: 60
poolMaxPerShard: 5
 
# Gestión de cola
queueMax: 50
queueRequests: true
queueTimeout: 60000
 
# Estadísticas de agrupamiento
enableStatistics: true

Configuración SSL/TLS

# Configuración SSL
sslServerCertDN: "CN=server.ejemplo.com,O=Ejemplo Corp,C=ES"
sslServerDNMatch: true
sslAllowWeakDNMatch: false
useSNI: true
 
# Cartera Oracle
walletLocation: "/ruta/a/la/cartera/oracle"
walletPassword: "contraseña_cartera"
walletContent: ${file:/ruta/a/la/cartera.zip}

Autenticación Basada en Tokens

# Autenticación basada en tokens
accessToken:
  token: "cadena_de_token_de_acceso_válido"
  privateKey: ${file:/ruta/a/la/llave_privada.pem}
  type: "OCI_TOKEN"  # o "OAUTH2_TOKEN"

Ejemplos de Configuraciones

Configuración Básica

poolMin: 2
poolMax: 15
stmtCacheSize: 50

Configuración SSL con Cartera

walletLocation: ${file:/ruta/a/la/cartera_oracle}
walletPassword: contraseña_cartera
sslServerDNMatch: true
enableStatistics: true
poolTimeout: 30

Configuración Multitenant

owner: propietario_app
poolMax: 20
queueTimeout: 30000

Autenticación Basada en Tokens

accessToken:
  token: ${env:OCI_ACCESS_TOKEN}
  type: "OCI_TOKEN"
stmtCacheSize: 100
events: true