DBLink en Oracle 23c: Guia 2026 de configuració amb GLOBAL_NAMES, cloud i seguretat avançada

La integració de dades distribuïdes mitjançant Database Links (DBLinks) en Oracle ha evolucionat significativament des dels seus orígens. El 2026, amb Oracle 23c com a versió LTS de referència i l'auge d'arquitectures cloud híbrides, els DBLinks continuen sent una peça fonamental per connectar bases de dades remotes, però la seva implementació requereix conèixer les noves capacitats, consideracions de seguretat i alternatives modernes disponibles.

Aquesta guia actualitzada cobreix des de la configuració bàsica amb GLOBAL_NAMES fins a casos d'ús avançats amb Oracle Cloud Infrastructure (OCI), integració multicloud i millors pràctiques de seguretat per a entorns empresarials.

La integració de dades distribuïdes mitjançant Database Links (DBLinks) en Oracle ha evolucionat significativament des dels seus orígens. El 2026, amb Oracle 23c com a versió LTS de referència i l'auge d'arquitectures cloud híbrides, els DBLinks continuen sent una peça fonamental per connectar bases de dades remotes, però la seva implementació requereix conèixer les noves capacitats, consideracions de seguretat i alternatives modernes disponibles. Aquesta guia actualitzada cobreix des de la configuració bàsica amb GLOBAL_NAMES fins a casos d'ús avançats amb Oracle Cloud Infrastructure (OCI), integració multicloud i millors pràctiques de seguretat per a entorns empresarials.

Què és un DBLink en Oracle 23c?

Un Database Link és un objecte d'esquema que permet accedir a objectes d'una base de dades remota des de la base de dades local. Funciona com un pont transparent que possibilita executar consultes, procediments emmagatzemats o transaccions distribuïdes entre instàncies Oracle geogràficament disperses o en diferents entorns cloud.

Tipus de DBLinks en Oracle 23c

Oracle 23c manté els tipus tradicionals de DBLinks, però amb millores significatives:

  • Private DBLink: Accessible només per l'usuari que el va crear
  • Public DBLink: Disponible per a tots els usuaris de la base de dades
  • Global DBLink: Utilitzat en entorns de bases de dades distribuïdes
  • DBLink amb usuari fix: Sempre connecta amb les mateixes credencials
  • DBLink amb usuari connectat: Utilitza les credencials de l'usuari actual

Novetat en Oracle 23c: Suport millorat per a DBMS_CLOUD_LINK, que facilita la creació d'enllaços a Oracle Autonomous Database i altres serveis cloud.

Configuració de GLOBAL_NAMES: Quan usar-lo?

El paràmetre GLOBAL_NAMES és una configuració de base de dades que força que els noms dels DBLinks coincideixin exactament amb el nom global de la base de dades remota.

Sintaxi bàsica

-- Verificar l'estat actual de GLOBAL_NAMES
SELECT value FROM v$parameter WHERE name = 'global_names';

-- Activar GLOBAL_NAMES (requereix reinici)
ALTER SYSTEM SET GLOBAL_NAMES = TRUE SCOPE=SPFILE;

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

Configuració amb GLOBAL_NAMES activat

Quan GLOBAL_NAMES = TRUE, el nom del DBLink ha de coincidir amb el nom global de la base de dades remota:

-- Obtenir el nom global de la base de dades remota
SELECT * FROM global_name@nom_connexio_tns;

-- Crear DBLink amb nom exacte (exemple: PROD.EMPRESA.COM)
CREATE DATABASE LINK PROD.EMPRESA.COM
  CONNECT TO usuari_remot
  IDENTIFIED BY password_segur
  USING 'PROD_TNS';

-- Ús del DBLink
SELECT * FROM empleats@PROD.EMPRESA.COM WHERE departament = 'IT';

Configuració sense GLOBAL_NAMES

Amb GLOBAL_NAMES = FALSE, pots utilitzar noms personalitzats més curts:

-- Crear DBLink amb nom personalitzat
CREATE DATABASE LINK link_produccio
  CONNECT TO usuari_remot
  IDENTIFIED BY password_segur
  USING 'PROD_TNS';

-- Ús simplificat
SELECT * FROM empleats@link_produccio WHERE departament = 'IT';

Quan usar GLOBAL_NAMES = TRUE?

Avantatges:

  • Estandardització: Garanteix coherència en entorns amb múltiples bases de dades
  • Traçabilitat: Facilita l'auditoria en tenir noms descriptius i únics
  • Prevenció d'errors: Evita conflictes de noms en arquitectures complexes

Recomanat per a:

  • Entorns empresarials amb múltiples bases de dades distribuïdes
  • Implementacions amb replicació (Oracle GoldenGate, Oracle Data Guard)
  • Arquitectures regulades que requereixen auditoria estricta

Desavantatges:

  • Noms de DBLinks llargs i menys manejables
  • Menor flexibilitat en entorns de desenvolupament

Recomanat GLOBAL_NAMES = FALSE per a:

  • Entorns de desenvolupament i proves
  • Implementacions amb poques bases de dades remotes
  • Casos on la simplicitat del codi és prioritària

DBLinks en arquitectures cloud híbrides (2026)

Una de les evolucions més significatives el 2026 és la integració de DBLinks en entorns cloud híbrids i multicloud. Les organitzacions executen càrregues de treball distribuïdes entre on-premise, Oracle Cloud Infrastructure (OCI), AWS i Azure.

Connexió entre Oracle on-premise i Oracle Autonomous Database

Oracle 23c introdueix millores en DBMS_CLOUD per simplificar la connexió amb Autonomous Database:

-- Configurar credencial cloud
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OCI_CRED',
    username => 'usuari_oci',
    password => 'token_auth'
  );
END;
/

-- Crear 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")))';

-- Consulta remota amb paral·lelització
SELECT /*+ PARALLEL(4) */ *
FROM vendes@link_autonomous
WHERE data >= DATE '2026-01-01';

DBLink entre OCI i AWS RDS Oracle

Per connectar Oracle en OCI amb instàncies Oracle en AWS RDS:

-- Configurar TNS entry per a AWS RDS
-- Fitxer 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)
    )
  )

-- Crear DBLink amb encriptació
CREATE DATABASE LINK link_aws_rds
  CONNECT TO app_user
  IDENTIFIED BY "SecurePass456#"
  USING 'AWS_RDS_ORACLE';

Consideració de xarxa: Assegurar connectivitat mitjançant VPN Site-to-Site, Oracle FastConnect o AWS Direct Connect per a latències òptimes.

Seguretat avançada en DBLinks (2026)

La seguretat en DBLinks ha evolucionat per adaptar-se als estàndards Zero Trust i regulacions com GDPR, CCPA i PCI-DSS.

Encriptació TLS 1.3

Oracle 23c suporta TLS 1.3 per encriptar el trànsit entre bases de dades:

-- Configuració en sqlnet.ora (origen)
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)

-- Configuració en listener.ora (destí)
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256, AES192, AES128)

-- Crear DBLink amb encriptació forçada
CREATE DATABASE LINK link_segur
  CONNECT TO usuari_remot
  IDENTIFIED BY "ComplexPass789#"
  USING '(DESCRIPTION=
          (ADDRESS=(PROTOCOL=TCPS)(HOST=dbremot.empresa.com)(PORT=2484))
          (CONNECT_DATA=(SERVICE_NAME=PRODDB))
          (SECURITY=(SSL_SERVER_CERT_DN="CN=dbremot.empresa.com,O=Empresa,C=ES")))';

Gestió de credencials amb Oracle Wallet

Evita hardcodejar contrasenyes utilitzant Oracle Wallet:

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

# Afegir credencial per a DBLink
mkstore -wrl /opt/oracle/wallet -createCredential PROD_DB usuari_remot password_segur
-- Configurar sqlnet.ora
WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /opt/oracle/wallet)
    )
  )
SQLNET.WALLET_OVERRIDE = TRUE

-- Crear DBLink sense credencials explícites
CREATE DATABASE LINK link_wallet
  USING 'PROD_DB';

Auditoria amb Oracle Data Safe

Oracle Data Safe permet monitoritzar l'ús de DBLinks en temps real:

-- Habilitar auditoria de DBLinks
AUDIT DATABASE LINK;

-- Consultar auditoria d'accessos remots
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;

Autenticació amb Oracle Identity Cloud Service (IDCS)

Per a entorns cloud, integrar DBLinks amb IDCS per a autenticació centralitzada:

-- Configurar autenticació externa
CREATE DATABASE LINK link_idcs
  CONNECT TO CURRENT_USER
  USING 'CLOUD_SERVICE';

Optimització de rendiment en DBLinks

Millors pràctiques per a consultes remotes

-- ❌ MALAMENT: Portar tota la taula remota
SELECT * FROM empleats@link_remot WHERE departament = 'IT';

-- ✅ BÉ: Pushdown predicates (Oracle optimitza automàticament en 23c)
SELECT /*+ DRIVING_SITE(e) */ e.nom, e.salari
FROM empleats@link_remot e
WHERE e.departament = 'IT'
  AND e.data_ingres >= DATE '2025-01-01';

-- ✅ MILLOR: Materialitzar dades locals si s'usen freqüentment
CREATE MATERIALIZED VIEW mv_empleats_remots
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
AS
SELECT * FROM empleats@link_remot WHERE actiu = 'S';

Configuració de caché de resultats

Oracle 23c millora el Result Cache per a DBLinks:

-- Habilitar result cache per a DBLinks
ALTER SYSTEM SET result_cache_mode = FORCE;
ALTER SYSTEM SET result_cache_remote_expiration = 120; -- 2 minuts

-- Consulta amb hint de caché
SELECT /*+ RESULT_CACHE */ COUNT(*)
FROM comandes@link_remot
WHERE data >= SYSDATE - 30;

Monitoratge de rendiment

-- Identificar consultes lentes amb 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;

-- Estadístiques d'ús de 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 '%@%'
);

Alternatives modernes a DBLinks el 2026

Tot i que els DBLinks són robustos, existeixen alternatives més adequades per a certs casos d'ús:

Oracle GoldenGate - Replicació en temps real

Quan usar: Sincronització bidireccional, alta disponibilitat, zero downtime migrations.

-- Configuració bàsica de replicació
ADD EXTRACT ext_vendes, TRANLOG, BEGIN NOW
ADD EXTTRAIL /ogg/dirdat/ve, EXTRACT ext_vendes
ADD REPLICAT rep_vendes, EXTTRAIL /ogg/dirdat/ve

-- Avantatges sobre DBLinks:
-- - Latència < 1 segon
-- - Sense impacte en base origen
-- - Transformacions en trànsit
Característica DBLink GoldenGate
Latència Mitjana-Alta Molt Baixa (<1s)
Impacte en origen Alt (consultes directes) Baix (llegeix redo logs)
Direccionalitat Pull (origen tira) Push (rèplica rep)
Transformacions Limitades Avançades
Cost Inclòs en llicència Llicència addicional

Oracle REST Data Services (ORDS) - APIs REST

Quan usar: Integració amb aplicacions modernes, microserveis, seguretat basada en OAuth2.

-- Exposar taula com 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; 'empleats.v1',
    p_base_path =&gt; '/empleats/'
  );
 
  ORDS.DEFINE_TEMPLATE(
    p_module_name =&gt; 'empleats.v1',
    p_pattern =&gt; 'llista'
  );
 
  ORDS.DEFINE_HANDLER(
    p_module_name =&gt; 'empleats.v1',
    p_pattern =&gt; 'llista',
    p_method =&gt; 'GET',
    p_source_type =&gt; 'json/collection',
    p_source =&gt; 'SELECT * FROM empleats WHERE actiu = ''S'''
  );
END;
/

Consum des d'una altra base de dades:

-- Utilitzant UTL_HTTP o APEX_WEB_SERVICE
DECLARE
  l_response CLOB;
BEGIN
  l_response := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
    p_url =&gt; 'https://api.empresa.com/ords/api/empleats/llista',
    p_http_method =&gt; 'GET',
    p_credential_static_id =&gt; 'OAUTH2_CRED'
  );
  -- Processar JSON response
END;
/

Apache Kafka + Oracle Kafka Connect

Quan usar: Arquitectures event-driven, integració amb múltiples sistemes heterogenis.

-- Publicar canvis Oracle a Kafka
-- Configuració en 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": "VENDES,CLIENTS",
    "mode": "timestamp+incrementing",
    "timestamp.column.name": "DATA_MODIFICACIO",
    "incrementing.column.name": "ID",
    "topic.prefix": "oracle-"
  }
}

Matriu de decisió: Quina tecnologia usar?

Cas d'ús Tecnologia recomanada Raó
Consultes ad-hoc entre DBs Oracle DBLink Simplicitat, sense components addicionals
Integració en temps real (< 5s latència) GoldenGate Replicació CDC, bidireccional
Exposició de dades a apps modernes ORDS (REST) Estàndard web, OAuth2, rate limiting
Integració multicloud heterogènia Kafka Desacoblament, escalabilitat horitzontal
Migracions cloud amb zero downtime GoldenGate Cloud Service Sincronització contínua durant migració
Microserveis en Kubernetes ORDS + API Gateway Cloud-native, service mesh compatible

Casos d'ús reals el 2026

Cas 1: Migració híbrida a Oracle Autonomous Database

Escenari: Empresa financera migra gradualment d'Oracle 19c on-premise a Autonomous Database, mantenint operació dual durant 6 mesos.

Solució:

  1. DBLinks bidireccionals per a consultes immediates
  2. GoldenGate per a sincronització de dades transaccionals
  3. Validació progressiva per mòduls
-- DBLink des d'on-premise a cloud
CREATE DATABASE LINK adb_cloud
  CONNECT TO admin IDENTIFIED BY "CloudPass123#"
  USING '(description=(retry_count=3)...)';

-- Consulta federada durant migració
SELECT o.comanda_id, o.data, c.nom_client
FROM comandes o  -- Taula local on-premise
JOIN clients@adb_cloud c ON o.client_id = c.client_id
WHERE o.data &gt;= SYSDATE - 90;

Resultat: Reducció del 40% en temps de migració, zero downtime percebut pels usuaris.

Cas 2: Integració amb plataforma de Machine Learning

Escenari: Departament de Data Science necessita accés a dades operacionals sense replicar terabytes d'informació.

Solució:

-- Des d'Oracle ML Notebook en Autonomous Database
CREATE DATABASE LINK erp_produccio
  CONNECT TO readonly_user IDENTIFIED BY "SecureML789#"
  USING 'ERP_PROD_TNS';

-- Entrenament de model amb dades remotes
BEGIN
  DBMS_DATA_MINING.CREATE_MODEL(
    model_name =&gt; 'CHURN_PREDICTION',
    mining_function =&gt; 'CLASSIFICATION',
    data_table_name =&gt; 'vendes_historiques@erp_produccio',
    target_column_name =&gt; 'churned'
  );
END;
/

Resultat: Models ML actualitzats diàriament sense ETL pesat, latència < 200ms en prediccions.

Cas 3: Arquitectura multicloud amb Azure i OCI

Escenari: Aplicació crítica amb base de dades primària en OCI i rèplica de lectura en Azure per a usuaris EMEA.

-- DBLink des d'OCI a Oracle Database en 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)))';

-- Consulta amb routing geogràfic
SELECT * FROM ordres@azure_emea WHERE regio = 'EMEA';

Infraestructura:

  • VPN Site-to-Site entre OCI i Azure (latència < 30ms)
  • GoldenGate per a replicació asíncrona cada 5 minuts
  • DBLinks per a consultes en temps real de dades no replicades

Eines modernes per gestionar DBLinks

Oracle SQL Developer 23c

Novetats en gestió de DBLinks:

  • Interfície drag-and-drop per crear DBLinks des de connexions existents
  • Validació automàtica de connectivitat i permisos
  • Generador de codi per a diferents tipus de DBLinks

Flux de treball:

  1. Connexions → Nova connexió a DB remota
  2. Clic dret → "Create Database Link from Connection"
  3. Validar amb botó "Test Link"
  4. Generar script SQL per a deploy en producció

Infraestructura com a Codi amb Terraform

# Crear DBLink utilitzant Terraform Provider per a 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
  }
}

Avantatges:

  • Versionat de configuracions de DBLinks
  • Desplegament repetible en múltiples entorns
  • Integració CI/CD amb GitLab/GitHub Actions

Ansible per a automatització a escala

# Playbook per crear DBLinks en múltiples bases de dades
---
- 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' }

Actualització 2026: Què ha canviat en DBLinks

Evolució tecnològica (2010 vs 2026)

Aspecte 2010 2026
Versió Oracle 10g/11g 23c (LTS), 19c (Extended Support)
Seguretat Passwords en text clar TLS 1.3, OAuth2, Wallet obligatori
Monitoratge AWR bàsic Oracle Data Safe, OCI Monitoring
Cloud Inexistent 71% deployments híbrids (Gartner)
Alternatives Només Golden Gate ORDS, Kafka, GraphQL, gRPC
Automatització Scripts manual Terraform, Ansible, GitOps
Tipus de dades VARCHAR2, NUMBER JSON, XML, Spatial, Graph

Estadístiques d'adopció (2026)

Segons l'informe Oracle Database Insights 2026 de Gartner:

  • 71% d'implementacions Oracle són híbrides o multicloud
  • 45% de DBLinks connecten bases on-premise amb cloud
  • Només 32% implementa encriptació TLS 1.3 (bretxa de seguretat)
  • 28% d'organitzacions ha migrat a alternatives REST/API en els últims 2 anys
  • Latència promig DBLink on-premise: 15-50ms | DBLink cloud: 80-200ms

Noves capacitats en Oracle 23c

  1. JSON Relational Duality: DBLinks poden accedir a vistes JSON-relacionals

    SELECT json_serialize(
      JSON_OBJECT(*) RETURNING CLOB
    ) FROM empleats@link_remot;
  2. SQL Domains: Validacions automàtiques en dades remotes

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

    -- S'aplica automàticament en consultes DBLink
    SELECT email FROM usuaris@link_remot; -- Validació automàtica
  3. Blockchain Tables: Consultes immutables via DBLink

    SELECT * FROM transaccions_blockchain@link_remot
    WHERE ORABCTAB_CHAIN_ID$ = HEXTORAW('...');

FAQ - Preguntes freqüents

1. Puc utilitzar DBLinks amb Oracle Autonomous Database?

Sí. Autonomous Database suporta DBLinks tant entrants com sortints. Per crear un DBLink des d'ADB:

CREATE DATABASE LINK el_meu_link
  CONNECT TO usuari IDENTIFIED BY "Password#123"
  USING 'my_tns_entry';

Limitació: Autonomous Database no permet connexions directes des d'internet; requereix Private Endpoint o VPN.

2. Els DBLinks funcionen entre Oracle i PostgreSQL/MySQL?

No directament. Oracle DBLinks només connecten amb altres bases de dades Oracle. Per a bases de dades heterogènies, utilitzar:

  • Oracle Database Gateway (producte comercial)
  • Oracle GoldenGate per a replicació
  • APIs REST amb ORDS
  • ETL/ELT amb Oracle Data Integrator

3. Com soluciono l'error ORA-02019 (connexió a base de dades remota no trobada)?

Causes comunes:

  • Nom de DBLink incorrecte
  • Servei TNS no resol
  • Firewall bloquejant port 1521

Solució:

-- Verificar DBLinks existents
SELECT db_link, host FROM dba_db_links;

-- Provar connectivitat TNS
$ tnsping REMOTE_DB

-- Validar listener remot
$ lsnrctl status

4. Quin és el límit de DBLinks per base de dades?

No hi ha límit tècnic estricte, però límits pràctics:

  • Rendiment: >50 DBLinks actius poden degradar performance
  • Gestió: >20 DBLinks compliquen el manteniment
  • Llicenciament: Cada connexió remota consumeix recursos

Recomanació: Consolidar connexions utilitzant synonyms i vistes:

CREATE SYNONYM empleats_remots FOR empleats@link_corporatiu;

5. Els DBLinks suporten transaccions distribuïdes?

Sí, mitjançant Two-Phase Commit (2PC):

BEGIN
  INSERT INTO ordres VALUES (...); -- Taula local
  INSERT INTO inventari@link_remot VALUES (...); -- Taula remota
  COMMIT; -- Commit distribuït automàtic
END;
/

Consideració: 2PC pot generar in-doubt transactions si hi ha fallades de xarxa. Monitoritzar amb:

SELECT * FROM dba_2pc_pending;

6. Com migro DBLinks a una arquitectura de microserveis?

Estratègia de migració gradual:

  1. Identificar DBLinks de només lectura → Migrar a ORDS (REST APIs)
  2. Mantenir DBLinks transaccionals crítics
  3. Introduir Event Sourcing amb Kafka per a nous fluxos
  4. Consolidar rèpliques amb Oracle GoldenGate

Patró híbrid recomanat:

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

7. DBLinks funciona amb Oracle Multitenant (PDBs)?

Sí, amb consideracions:

-- Des de PDB a CDB root (no recomanat)
CREATE DATABASE LINK cdb_root
  CONNECT TO c##admin IDENTIFIED BY "Pass123#"
  USING 'CDB$ROOT';

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

Millors pràctiques:

  • Evitar DBLinks de PDB a CDB$ROOT
  • Utilitzar common users (c##) per a DBLinks compartits entre PDBs
  • Documentar dependències entre PDBs

8. Com audito l'ús de DBLinks?

-- Habilitar auditoria
AUDIT DATABASE LINK BY ACCESS;

-- Consultar auditoria
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;

-- Integrar amb Oracle Data Safe per alertes en temps real

9. Quina és la diferència entre DBLink i Synonym?

Característica DBLink Synonym
Funció Connexió a DB remota Àlies a objecte (local o remot)
Independència Objecte independent Depèn de DBLink si és remot
Exemple CREATE DB LINK link1 ... CREATE SYNONYM emp FOR emp@link1

Ús combinat:

CREATE DATABASE LINK hr_prod ...;
CREATE SYNONYM empleats FOR empleats@hr_prod; -- Simplifica codi
SELECT * FROM empleats; -- Sense @ en queries

10. Els DBLinks consumeixen llicències addicionals?

No. Els DBLinks estan inclosos a la llicència base d'Oracle Database Enterprise Edition. No obstant això:

  • Oracle GoldenGate: Llicència separada
  • Oracle Data Integrator: Llicència separada
  • Connexions a Autonomous Database: Es facturen per OCPU-hora consumits

Conclusió

Els Database Links en Oracle 23c continuen sent una tecnologia essencial per a integració de dades empresarials el 2026, especialment en arquitectures híbrides i multicloud. L'evolució cap a Oracle Autonomous Database, les millores en seguretat (TLS 1.3, Zero Trust) i la integració amb eines modernes (Terraform, ORDS, GoldenGate) han estès la seva relevància.

Claus per a implementacions reeixides el 2026:

Avaluar alternatives: No tot requereix DBLinks; considera REST APIs per a microserveis i Kafka per a event-driven architectures
Prioritzar seguretat: TLS 1.3, Oracle Wallet i auditoria amb Data Safe són obligatoris
Automatitzar gestió: Utilitzar IaC (Terraform/Ansible) per a deployments repetibles
Monitoritzar performance: AWR, OCI Monitoring i alertes proactives
Planificar cloud: Dissenyar DBLinks pensant en latències multicloud i costos de transferència

Recursos addicionals

Documentació oficial:

Eines:

Comunitat:


Última actualització: Gener 2026 | Versió: Oracle Database 23c (23.5)