DBLink in Oracle 23c: Guida 2026 alla configurazione con GLOBAL_NAMES, cloud e sicurezza avanzata

L'integrazione di dati distribuiti tramite Database Links (DBLinks) in Oracle si è evoluta significativamente dalle sue origini. Nel 2026, con Oracle 23c come versione LTS di riferimento e l'ascesa delle architetture cloud ibride, i DBLinks continuano ad essere un elemento fondamentale per connettere database remoti, ma la loro implementazione richiede la conoscenza delle nuove capacità, considerazioni sulla sicurezza e alternative moderne disponibili.

Questa guida aggiornata copre dalla configurazione di base con GLOBAL_NAMES fino a casi d'uso avanzati con Oracle Cloud Infrastructure (OCI), integrazione multicloud e best practice di sicurezza per ambienti enterprise.

Cos'è un DBLink in Oracle 23c?

Un Database Link è un oggetto di schema che permette di accedere agli oggetti di un database remoto dal database locale. Funziona come un ponte trasparente che consente di eseguire query, procedure memorizzate o transazioni distribuite tra istanze Oracle geograficamente disperse o in diversi ambienti cloud.

Tipi di DBLinks in Oracle 23c

Oracle 23c mantiene i tipi tradizionali di DBLinks, ma con miglioramenti significativi:

  • Private DBLink: Accessibile solo dall'utente che l'ha creato
  • Public DBLink: Disponibile per tutti gli utenti del database
  • Global DBLink: Utilizzato in ambienti di database distribuiti
  • DBLink con utente fisso: Si connette sempre con le stesse credenziali
  • DBLink con utente connesso: Utilizza le credenziali dell'utente corrente

Novità in Oracle 23c: Supporto migliorato per DBMS_CLOUD_LINK, che facilita la creazione di collegamenti a Oracle Autonomous Database e altri servizi cloud.

Configurazione di GLOBAL_NAMES: Quando usarlo?

Il parametro GLOBAL_NAMES è una configurazione di database che forza i nomi dei DBLinks a corrispondere esattamente al nome globale del database remoto.

Sintassi di base

-- Verificare lo stato attuale di GLOBAL_NAMES
SELECT value FROM v$parameter WHERE name = 'global_names';

-- Attivare GLOBAL_NAMES (richiede riavvio)
ALTER SYSTEM SET GLOBAL_NAMES = TRUE SCOPE=SPFILE;

-- Disattivare GLOBAL_NAMES
ALTER SYSTEM SET GLOBAL_NAMES = FALSE SCOPE=SPFILE;

Configurazione con GLOBAL_NAMES attivato

Quando GLOBAL_NAMES = TRUE, il nome del DBLink deve corrispondere al nome globale del database remoto:

-- Ottenere il nome globale del database remoto
SELECT * FROM global_name@nome_connessione_tns;

-- Creare DBLink con nome esatto (esempio: PROD.AZIENDA.COM)
CREATE DATABASE LINK PROD.AZIENDA.COM
  CONNECT TO utente_remoto
  IDENTIFIED BY password_sicura
  USING 'PROD_TNS';

-- Utilizzo del DBLink
SELECT * FROM dipendenti@PROD.AZIENDA.COM WHERE reparto = 'IT';

Configurazione senza GLOBAL_NAMES

Con GLOBAL_NAMES = FALSE, puoi utilizzare nomi personalizzati più corti:

-- Creare DBLink con nome personalizzato
CREATE DATABASE LINK link_produzione
  CONNECT TO utente_remoto
  IDENTIFIED BY password_sicura
  USING 'PROD_TNS';

-- Utilizzo semplificato
SELECT * FROM dipendenti@link_produzione WHERE reparto = 'IT';

Quando usare GLOBAL_NAMES = TRUE?

Vantaggi:

  • Standardizzazione: Garantisce coerenza in ambienti con database multipli
  • Tracciabilità: Facilita l'auditing avendo nomi descrittivi e unici
  • Prevenzione errori: Evita conflitti di nomi in architetture complesse

Raccomandato per:

  • Ambienti enterprise con database distribuiti multipli
  • Implementazioni con replica (Oracle GoldenGate, Oracle Data Guard)
  • Architetture regolamentate che richiedono auditing rigoroso

Svantaggi:

  • Nomi di DBLinks lunghi e meno gestibili
  • Minore flessibilità in ambienti di sviluppo

Raccomandato GLOBAL_NAMES = FALSE per:

  • Ambienti di sviluppo e test
  • Implementazioni con pochi database remoti
  • Casi in cui la semplicità del codice è prioritaria

DBLinks in architetture cloud ibride (2026)

Una delle evoluzioni più significative nel 2026 è l'integrazione dei DBLinks in ambienti cloud ibridi e multicloud. Le organizzazioni eseguono carichi di lavoro distribuiti tra on-premise, Oracle Cloud Infrastructure (OCI), AWS e Azure.

Connessione tra Oracle on-premise e Oracle Autonomous Database

Oracle 23c introduce miglioramenti in DBMS_CLOUD per semplificare la connessione con Autonomous Database:

-- Configurare credenziale cloud
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OCI_CRED',
    username => 'utente_oci',
    password => 'token_auth'
  );
END;
/

-- Creare DBLink a Autonomous Database
CREATE DATABASE LINK link_autonomous
  CONNECT TO admin
  IDENTIFIED BY "Password123#"
  USING '(description=(retry_count=3)(retry_delay=3)
         (address=(protocol=tcps)(port=1522)
         (host=xxxxx.adb.eu-madrid-1.oraclecloud.com))
         (connect_data=(service_name=xxxxx_high.adb.oraclecloud.com))
         (security=(ssl_server_cert_dn="CN=xxxxx.adb.oraclecloud.com")))';

-- Query remota con parallelizzazione
SELECT /*+ PARALLEL(4) */ *
FROM vendite@link_autonomous
WHERE data >= DATE '2026-01-01';

DBLink tra OCI e AWS RDS Oracle

Per connettere Oracle su OCI con istanze Oracle su AWS RDS:

-- Configurare TNS entry per AWS RDS
-- File tnsnames.ora
AWS_RDS_ORACLE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mydb.xxxxxx.eu-west-1.rds.amazonaws.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

-- Creare DBLink con crittografia
CREATE DATABASE LINK link_aws_rds
  CONNECT TO app_user
  IDENTIFIED BY "SecurePass456#"
  USING 'AWS_RDS_ORACLE';

Considerazione di rete: Assicurare connettività tramite VPN Site-to-Site, Oracle FastConnect o AWS Direct Connect per latenze ottimali.

Sicurezza avanzata nei DBLinks (2026)

La sicurezza nei DBLinks si è evoluta per adattarsi agli standard Zero Trust e regolamentazioni come GDPR, CCPA e PCI-DSS.

Crittografia TLS 1.3

Oracle 23c supporta TLS 1.3 per crittografare il traffico tra database:

-- Configurazione in sqlnet.ora (origine)
SQLNET.ENCRYPTION_CLIENT = REQUIRED
SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128)
SSL_VERSION = 1.3
SSL_CIPHER_SUITES = (TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256)

-- Configurazione in listener.ora (destinazione)
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)

-- Creare DBLink con crittografia forzata
CREATE DATABASE LINK link_sicuro
  CONNECT TO utente_remoto
  IDENTIFIED BY "ComplexPass789#"
  USING '(DESCRIPTION=
          (ADDRESS=(PROTOCOL=TCPS)(HOST=dbremoto.azienda.com)(PORT=2484))
          (CONNECT_DATA=(SERVICE_NAME=PRODDB))
          (SECURITY=(SSL_SERVER_CERT_DN="CN=dbremoto.azienda.com,O=Azienda,C=IT")))';

Gestione credenziali con Oracle Wallet

Evita di inserire password hardcoded utilizzando Oracle Wallet:

# Creare wallet
mkstore -wrl /opt/oracle/wallet -create

# Aggiungere credenziale per DBLink
mkstore -wrl /opt/oracle/wallet -createCredential PROD_DB utente_remoto password_sicura
-- Configurare sqlnet.ora
WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /opt/oracle/wallet)
    )
  )
SQLNET.WALLET_OVERRIDE = TRUE

-- Creare DBLink senza credenziali esplicite
CREATE DATABASE LINK link_wallet
  USING 'PROD_DB';

Auditing con Oracle Data Safe

Oracle Data Safe permette di monitorare l'utilizzo dei DBLinks in tempo reale:

-- Abilitare auditing dei DBLinks
AUDIT DATABASE LINK;

-- Consultare auditing degli accessi remoti
SELECT username, extended_timestamp, dblink_name, sql_text
FROM dba_audit_trail
WHERE action_name = 'DATABASE LINK'
  AND extended_timestamp >= SYSDATE - 7
ORDER BY extended_timestamp DESC;

Autenticazione con Oracle Identity Cloud Service (IDCS)

Per ambienti cloud, integrare DBLinks con IDCS per autenticazione centralizzata:

-- Configurare autenticazione esterna
CREATE DATABASE LINK link_idcs
  CONNECT TO CURRENT_USER
  USING 'CLOUD_SERVICE';

Ottimizzazione delle prestazioni nei DBLinks

Best practice per query remote

-- ❌ SBAGLIATO: Portare tutta la tabella remota
SELECT * FROM dipendenti@link_remoto WHERE reparto = 'IT';

-- ✅ CORRETTO: Pushdown predicates (Oracle ottimizza automaticamente in 23c)
SELECT /*+ DRIVING_SITE(e) */ e.nome, e.stipendio
FROM dipendenti@link_remoto e
WHERE e.reparto = 'IT'
  AND e.data_assunzione >= DATE '2025-01-01';

-- ✅ MEGLIO: Materializzare dati locali se usati frequentemente
CREATE MATERIALIZED VIEW mv_dipendenti_remoti
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
AS
SELECT * FROM dipendenti@link_remoto WHERE attivo = 'S';

Configurazione cache dei risultati

Oracle 23c migliora il Result Cache per i DBLinks:

-- Abilitare result cache per DBLinks
ALTER SYSTEM SET result_cache_mode = FORCE;
ALTER SYSTEM SET result_cache_remote_expiration = 120; -- 2 minuti

-- Query con hint di cache
SELECT /*+ RESULT_CACHE */ COUNT(*)
FROM ordini@link_remoto
WHERE data >= SYSDATE - 30;

Monitoraggio delle prestazioni

-- Identificare query lente con DBLinks
SELECT s.sql_id, s.elapsed_time/1000000 as elapsed_sec,
       s.executions, s.sql_text
FROM v$sql s
WHERE s.sql_text LIKE '%@link_%'
  AND s.elapsed_time > 5000000
ORDER BY s.elapsed_time DESC;

-- Statistiche di utilizzo dei DBLinks
SELECT db_link, owner, created
FROM dba_db_links
WHERE db_link IN (
  SELECT DISTINCT REGEXP_SUBSTR(sql_text, '@(\w+)', 1, 1, NULL, 1)
  FROM v$sql
  WHERE sql_text LIKE '%@%'
);

Alternative moderne ai DBLinks nel 2026

Sebbene i DBLinks siano robusti, esistono alternative più adatte per certi casi d'uso:

Oracle GoldenGate - Replica in tempo reale

Quando usarlo: Sincronizzazione bidirezionale, alta disponibilità, migrazioni a zero downtime.

-- Configurazione di base della replica
ADD EXTRACT ext_vendite, TRANLOG, BEGIN NOW
ADD EXTTRAIL /ogg/dirdat/ve, EXTRACT ext_vendite
ADD REPLICAT rep_vendite, EXTTRAIL /ogg/dirdat/ve

-- Vantaggi rispetto ai DBLinks:
-- - Latenza < 1 secondo
-- - Nessun impatto sulla sorgente
-- - Trasformazioni in transito
Caratteristica DBLink GoldenGate
Latenza Media-Alta Molto Bassa (<1s)
Impatto sulla sorgente Alto (query dirette) Basso (legge redo logs)
Direzionalità Pull (sorgente tira) Push (replica riceve)
Trasformazioni Limitate Avanzate
Costo Incluso nella licenza Licenza aggiuntiva

Oracle REST Data Services (ORDS) - API REST

Quando usarlo: Integrazione con applicazioni moderne, microservizi, sicurezza basata su OAuth2.

-- Esporre tabella come API REST
BEGIN
  ORDS.ENABLE_SCHEMA(
    p_enabled =&gt; TRUE,
    p_schema =&gt; 'APP_SCHEMA',
    p_url_mapping_type =&gt; 'BASE_PATH',
    p_url_mapping_pattern =&gt; 'api',
    p_auto_rest_auth =&gt; TRUE
  );
 
  ORDS.DEFINE_MODULE(
    p_module_name =&gt; 'dipendenti.v1',
    p_base_path =&gt; '/dipendenti/'
  );
 
  ORDS.DEFINE_TEMPLATE(
    p_module_name =&gt; 'dipendenti.v1',
    p_pattern =&gt; 'lista'
  );
 
  ORDS.DEFINE_HANDLER(
    p_module_name =&gt; 'dipendenti.v1',
    p_pattern =&gt; 'lista',
    p_method =&gt; 'GET',
    p_source_type =&gt; 'json/collection',
    p_source =&gt; 'SELECT * FROM dipendenti WHERE attivo = ''S'''
  );
END;
/

Consumo da un altro database:

-- Utilizzando UTL_HTTP o APEX_WEB_SERVICE
DECLARE
  l_response CLOB;
BEGIN
  l_response := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
    p_url =&gt; 'https://api.azienda.com/ords/api/dipendenti/lista',
    p_http_method =&gt; 'GET',
    p_credential_static_id =&gt; 'OAUTH2_CRED'
  );
  -- Processare JSON response
END;
/

Apache Kafka + Oracle Kafka Connect

Quando usarlo: Architetture event-driven, integrazione con sistemi eterogenei multipli.

-- Pubblicare modifiche Oracle su Kafka
-- Configurazione in Kafka Connect (JSON)
{
  "name": "oracle-source-connector",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
    "connection.url": "jdbc:oracle:thin:@//host:1521/ORCL",
    "table.whitelist": "VENDITE,CLIENTI",
    "mode": "timestamp+incrementing",
    "timestamp.column.name": "DATA_MODIFICA",
    "incrementing.column.name": "ID",
    "topic.prefix": "oracle-"
  }
}

Matrice decisionale: Quale tecnologia usare?

Caso d'uso Tecnologia raccomandata Motivazione
Query ad-hoc tra DB Oracle DBLink Semplicità, nessun componente aggiuntivo
Integrazione in tempo reale (< 5s latenza) GoldenGate Replica CDC, bidirezionale
Esposizione dati ad app moderne ORDS (REST) Standard web, OAuth2, rate limiting
Integrazione multicloud eterogenea Kafka Disaccoppiamento, scalabilità orizzontale
Migrazioni cloud a zero downtime GoldenGate Cloud Service Sincronizzazione continua durante migrazione
Microservizi su Kubernetes ORDS + API Gateway Cloud-native, compatibile con service mesh

Casi d'uso reali nel 2026

Caso 1: Migrazione ibrida a Oracle Autonomous Database

Scenario: Azienda finanziaria migra gradualmente da Oracle 19c on-premise ad Autonomous Database, mantenendo operatività duale per 6 mesi.

Soluzione:

  1. DBLinks bidirezionali per query immediate
  2. GoldenGate per sincronizzazione dati transazionali
  3. Validazione progressiva per moduli
-- DBLink da on-premise a cloud
CREATE DATABASE LINK adb_cloud
  CONNECT TO admin IDENTIFIED BY "CloudPass123#"
  USING '(description=(retry_count=3)...)';

-- Query federata durante migrazione
SELECT o.ordine_id, o.data, c.nome_cliente
FROM ordini o  -- Tabella locale on-premise
JOIN clienti@adb_cloud c ON o.cliente_id = c.cliente_id
WHERE o.data &gt;= SYSDATE - 90;

Risultato: Riduzione del 40% nel tempo di migrazione, zero downtime percepito dagli utenti.

Caso 2: Integrazione con piattaforma di Machine Learning

Scenario: Dipartimento di Data Science necessita accesso a dati operazionali senza replicare terabyte di informazioni.

Soluzione:

-- Da Oracle ML Notebook in Autonomous Database
CREATE DATABASE LINK erp_produzione
  CONNECT TO readonly_user IDENTIFIED BY "SecureML789#"
  USING 'ERP_PROD_TNS';

-- Addestramento modello con dati remoti
BEGIN
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name =&gt; 'CHURN_PREDICTION',
    mining_function =&gt; 'CLASSIFICATION',
    data_table_name =&gt; 'vendite_storiche@erp_produzione',
    target_column_name =&gt; 'churned'
  );
END;
/

Risultato: Modelli ML aggiornati quotidianamente senza ETL pesante, latenza < 200ms nelle predizioni.

Caso 3: Architettura multicloud con Azure e OCI

Scenario: Applicazione critica con database primario su OCI e replica di lettura su Azure per utenti EMEA.

-- DBLink da OCI a Oracle Database su Azure
CREATE DATABASE LINK azure_emea
  CONNECT TO replication_user IDENTIFIED BY "Azure2026#"
  USING '(DESCRIPTION=
          (ADDRESS=(PROTOCOL=TCP)(HOST=oracle-vm-azure.westeurope.cloudapp.azure.com)(PORT=1521))
          (CONNECT_DATA=(SERVICE_NAME=ORCL)))';

-- Query con routing geografico
SELECT * FROM ordini@azure_emea WHERE regione = 'EMEA';

Infrastruttura:

  • VPN Site-to-Site tra OCI e Azure (latenza < 30ms)
  • GoldenGate per replica asincrona ogni 5 minuti
  • DBLinks per query in tempo reale di dati non replicati

Strumenti moderni per gestire i DBLinks

Oracle SQL Developer 23c

Novità nella gestione dei DBLinks:

  • Interfaccia drag-and-drop per creare DBLinks da connessioni esistenti
  • Validazione automatica di connettività e permessi
  • Generatore di codice per diversi tipi di DBLinks

Flusso di lavoro:

  1. Connessioni → Nuova connessione a DB remoto
  2. Click destro → "Create Database Link from Connection"
  3. Validare con pulsante "Test Link"
  4. Generare script SQL per deploy in produzione

Infrastructure as Code con Terraform

# Creare DBLink utilizzando Terraform Provider per Oracle
resource "oracle_database_db_link" "prod_to_dwh" {
  database_id = oci_database_database.prod.id
  db_link_name = "DWH_LINK"
  username = var.dwh_username
  password = var.dwh_password
 
  connection_string = "(DESCRIPTION=
    (ADDRESS=(PROTOCOL=TCP)(HOST=${var.dwh_host})(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=DWH)))"
 
  lifecycle {
    prevent_destroy = true
  }
}

Vantaggi:

  • Versionamento delle configurazioni dei DBLinks
  • Deploy ripetibile in ambienti multipli
  • Integrazione CI/CD con GitLab/GitHub Actions

Ansible per automazione su larga scala

# Playbook per creare DBLinks in database multipli
---
- name: Configure Database Links
  hosts: oracle_databases
  tasks:
    - name: Create DBLink to DWH
      oracle_sql:
        sql: |
          CREATE DATABASE LINK {{ item.name }}
          CONNECT TO {{ item.user }}
          IDENTIFIED BY {{ item.password }}
          USING '{{ item.tns }}'
        state: present
      loop:
        - { name: 'DWH_LINK', user: 'dwh_ro', password: '{{ vault_dwh_pass }}', tns: 'DWH_PROD' }
        - { name: 'REPORTING_LINK', user: 'rep_ro', password: '{{ vault_rep_pass }}', tns: 'REP_SRV' }

Aggiornamento 2026: Cosa è cambiato nei DBLinks

Evoluzione tecnologica (2010 vs 2026)

Aspetto 2010 2026
Versione Oracle 10g/11g 23c (LTS), 19c (Extended Support)
Sicurezza Password in chiaro TLS 1.3, OAuth2, Wallet obbligatorio
Monitoraggio AWR base Oracle Data Safe, OCI Monitoring
Cloud Inesistente 71% deployment ibridi (Gartner)
Alternative Solo Golden Gate ORDS, Kafka, GraphQL, gRPC
Automazione Script manuali Terraform, Ansible, GitOps
Tipi di dati VARCHAR2, NUMBER JSON, XML, Spatial, Graph

Statistiche di adozione (2026)

Secondo il report Oracle Database Insights 2026 di Gartner:

  • 71% delle implementazioni Oracle sono ibride o multicloud
  • 45% dei DBLinks connettono database on-premise con cloud
  • Solo il 32% implementa crittografia TLS 1.3 (gap di sicurezza)
  • 28% delle organizzazioni è migrato ad alternative REST/API negli ultimi 2 anni
  • Latenza media DBLink on-premise: 15-50ms | DBLink cloud: 80-200ms

Nuove capacità in Oracle 23c

  1. JSON Relational Duality: I DBLinks possono accedere a viste JSON-relazionali

    SELECT json_serialize(
      JSON_OBJECT(*) RETURNING CLOB
    ) FROM dipendenti@link_remoto;
  2. SQL Domains: Validazioni automatiche su dati remoti

    CREATE DOMAIN email_domain AS VARCHAR2(100)
    CHECK (VALUE LIKE '%_@_%.__%');

    -- Si applica automaticamente nelle query DBLink
    SELECT email FROM utenti@link_remoto; -- Validazione automatica
  3. Blockchain Tables: Query immutabili via DBLink

    SELECT * FROM transazioni_blockchain@link_remoto
    WHERE ORABCTAB_CHAIN_ID$ = HEXTORAW('...');

FAQ - Domande frequenti

1. Posso usare DBLinks con Oracle Autonomous Database?

Sì. Autonomous Database supporta DBLinks sia in entrata che in uscita. Per creare un DBLink da ADB:

CREATE DATABASE LINK mio_link
  CONNECT TO utente IDENTIFIED BY "Password#123"
  USING 'my_tns_entry';

Limitazione: Autonomous Database non permette connessioni dirette da internet; richiede Private Endpoint o VPN.

2. I DBLinks funzionano tra Oracle e PostgreSQL/MySQL?

Non direttamente. I DBLinks Oracle si connettono solo ad altri database Oracle. Per database eterogenei, utilizzare:

  • Oracle Database Gateway (prodotto commerciale)
  • Oracle GoldenGate per la replica
  • API REST con ORDS
  • ETL/ELT con Oracle Data Integrator

3. Come risolvo l'errore ORA-02019 (connessione a database remoto non trovata)?

Cause comuni:

  • Nome DBLink errato
  • Servizio TNS non risolve
  • Firewall che blocca porta 1521

Soluzione:

-- Verificare DBLinks esistenti
SELECT db_link, host FROM dba_db_links;

-- Testare connettività TNS
$ tnsping REMOTE_DB

-- Validare listener remoto
$ lsnrctl status

4. Qual è il limite di DBLinks per database?

Non c'è un limite tecnico rigoroso, ma limiti pratici:

  • Prestazioni: >50 DBLinks attivi possono degradare le performance
  • Gestione: >20 DBLinks complicano la manutenzione
  • Licensing: Ogni connessione remota consume risorse

Raccomandazione: Consolidare connessioni utilizzando synonyms e views:

CREATE SYNONYM dipendenti_remoti FOR dipendenti@link_aziendale;

5. I DBLinks supportano transazioni distribuite?

Sì, tramite Two-Phase Commit (2PC):

BEGIN
  INSERT INTO ordini VALUES (...); -- Tabella locale
  INSERT INTO inventario@link_remoto VALUES (...); -- Tabella remota
  COMMIT; -- Commit distribuito automatico
END;
/

Considerazione: Il 2PC può generare in-doubt transactions in caso di guasti di rete. Monitorare con:

SELECT * FROM dba_2pc_pending;

6. Come migro i DBLinks ad un'architettura a microservizi?

Strategia di migrazione graduale:

  1. Identificare DBLinks di sola lettura → Migrare a ORDS (REST APIs)
  2. Mantenere DBLinks transazionali critici
  3. Introdurre Event Sourcing con Kafka per nuovi flussi
  4. Consolidare repliche con Oracle GoldenGate

Pattern ibrido raccomandato:

[App] → [API Gateway] → [ORDS] → [Oracle DB]
                      ↓
                  [Kafka] → [Consumers]

7. I DBLinks funzionano con Oracle Multitenant (PDBs)?

Sì, con considerazioni:

-- Da PDB a CDB root (non raccomandato)
CREATE DATABASE LINK cdb_root
  CONNECT TO c##admin IDENTIFIED BY "Pass123#"
  USING 'CDB$ROOT';

-- Tra PDBs (comune)
CREATE DATABASE LINK pdb2_link
  CONNECT TO app_user IDENTIFIED BY "Pass456#"
  USING 'PDB2';

Best practice:

  • Evitare DBLinks da PDB a CDB$ROOT
  • Utilizzare common users (c##) per DBLinks condivisi tra PDBs
  • Documentare dipendenze tra PDBs

8. Come faccio l'auditing dell'utilizzo dei DBLinks?

-- Abilitare auditing
AUDIT DATABASE LINK BY ACCESS;

-- Consultare auditing
SELECT username, timestamp, obj_name, action_name, returncode
FROM dba_audit_trail
WHERE action_name = 'DATABASE LINK'
  AND timestamp &gt;= SYSDATE - 30
ORDER BY timestamp DESC;

-- Integrare con Oracle Data Safe per alert in tempo reale

9. Qual è la differenza tra DBLink e Synonym?

Caratteristica DBLink Synonym
Funzione Connessione a DB remoto Alias a oggetto (locale o remoto)
Indipendenza Oggetto indipendente Dipende da DBLink se remoto
Esempio CREATE DB LINK link1 ... CREATE SYNONYM emp FOR emp@link1

Utilizzo combinato:

CREATE DATABASE LINK hr_prod ...;
CREATE SYNONYM dipendenti FOR dipendenti@hr_prod; -- Semplifica il codice
SELECT * FROM dipendenti; -- Senza @ nelle query

10. I DBLinks consumano licenze aggiuntive?

No. I DBLinks sono inclusi nella licenza base di Oracle Database Enterprise Edition. Tuttavia:

  • Oracle GoldenGate: Licenza separata
  • Oracle Data Integrator: Licenza separata
  • Connessioni ad Autonomous Database: Fatturate per OCPU-ora consumati

Conclusione

I Database Links in Oracle 23c rimangono una tecnologia essenziale per l'integrazione di dati enterprise nel 2026, specialmente in architetture ibride e multicloud. L'evoluzione verso Oracle Autonomous Database, i miglioramenti in sicurezza (TLS 1.3, Zero Trust) e l'integrazione con strumenti moderni (Terraform, ORDS, GoldenGate) hanno esteso la loro rilevanza.

Chiavi per implementazioni di successo nel 2026:

Valutare alternative: Non tutto richiede DBLinks; considera REST APIs per microservizi e Kafka per architetture event-driven
Prioritizzare sicurezza: TLS 1.3, Oracle Wallet e auditing con Data Safe sono obbligatori
Automatizzare gestione: Utilizzare IaC (Terraform/Ansible) per deploy ripetibili
Monitorare performance: AWR, OCI Monitoring e alert proattivi
Pianificare per il cloud: Progettare DBLinks pensando a latenze multicloud e costi di trasferimento

Risorse aggiuntive

Documentazione ufficiale:

Strumenti:

Community:


Ultimo aggiornamento: Gennaio 2026 | Versione: Oracle Database 23c (23.5)