Federazione per Amazon RDS per Db2 - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Federazione per Amazon RDS per Db2

Puoi usare il tuo database Amazon RDS per Db2 come database federato. Dopo aver configurato la federazione per RDS per Db2, potrai accedere ai dati in più database ed eseguire query su di essi dal tuo database RDS per Db2. La federazione evita la necessità di eseguire la migrazione dei dati nel database RDS per Db2 o di consolidare i dati in un unico database.

Utilizzando il database RDS for Db2 come database federato, è possibile continuare ad accedere a tutte le funzionalità di RDS for Db2 e sfruttare diverse funzionalità Servizi AWS, il tutto mantenendo i dati in database diversi. È possibile impostare sia una federazione omogenea, che collega database dello stesso tipo, sia una federazione eterogenea, che collega database di tipi diversi.

Prima di tutto devi connettere il tuo database Db2 in RDS per Db2 ai database remoti. Quindi puoi eseguire query su tutti i database connessi. Ad esempio, è possibile eseguire un'istruzione SQL JOIN che unisce le tabelle del database RDS for Db2 con le tabelle di un database Db2 on remoto. z/OS

Federazione omogenea

Puoi configurare una federazione omogenea tra il tuo database RDS per Db2 e la seguente famiglia di prodotti Db2:

  • Db2 per Linux, UNIX, Windows (LUW)

  • Db2 iSeries

  • Db2 per z/OS

La federazione omogenea di RDS per Db2 non supporta le seguenti azioni:

  • Esecuzione di comandi CATALOG per configurare una directory di nodi e un database remoto su un database host RDS per Db2

  • Configurazione del bilanciamento del carico di lavoro (WLB) per la federazione con Db2 su z/OS

  • Configurazione del file di configurazione driver del server di dati IBM (db2dsdriver.cfg)

La federazione omogenea in RDS per Db2 prevede i seguenti requisiti:

Fase 1: creare un wrapper DRDA e un server federato

Per la federazione omogenea, crea un wrapper DRDA e un server federato. La connessione all’host remoto utilizza HOST, PORT e DBNAME.

Scegli uno dei seguenti metodi a seconda del tipo di database Db2 remoto:

  • Database Db2 per Linux, UNIX e Windows (LUX): esegui i seguenti comandi SQL. Nell'esempio seguente, sostituiscilo server_name con il nome del server che utilizzerai per la federazione. Sostituiscilo db2_version con la versione del tuo database Db2 remoto. Sostituisci username e password con le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituisci db_name e port con i valori appropriati per il database Db2 remoto a cui desideri connetterti. dns_name

    create wrapper drda options(DB2_FENCED 'N'); create server server_name type DB2/LUW wrapper drda version 'db2_version' authorization "master_username" password "master_password" options (add DBNAME 'db_name',add HOST 'dns_name',add PORT 'port');

    Esempio

    create wrapper drda options(DB2_FENCED 'N'); create server SERVER1 type DB2/LUW wrapper drda version '11.5' authorization "sysuser" password "******" options (add DBNAME 'TESTDB2',add HOST 'ip-123-45-67-899.us-west-1.compute.internal',add PORT '25010');
  • Db2 iSeries: esegui i seguenti comandi SQL. Nell'esempio seguente, sostituite wrapper_name e library_name con un nome per il wrapper DRDA e il file della libreria wrapper. server_nameSostituiscilo con il nome del server che utilizzerai per la federazione. Sostituiscilo db2_version con la versione del tuo database Db2 remoto. Sostituisci username e password con le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituisci dns_name e db_name con i valori appropriati per il database Db2 remoto a cui desideri connetterti. port

    create wrapper wrapper_name library 'library name' options(DB2_FENCED 'N'); create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "sername" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');

    Esempio

    create wrapper WRAPPER1 library 'libdb2drda.so' options(DB2_FENCED 'N'); create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');
  • Db2 per z/OS: esegui i seguenti comandi SQL. Nell'esempio seguente, sostituite wrapper_name e library_name con un nome per il wrapper DRDA e il file della libreria wrapper. server_nameSostituiscilo con il nome del server che utilizzerai per la federazione. Sostituiscilo db2_version con la versione del tuo database Db2 remoto. Sostituisci username e password con le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituisci dns_name e db_name con i valori appropriati per il database Db2 remoto a cui desideri connetterti. port

    create wrapper wrapper_name library 'library_name' options(DB2_FENCED 'N'); create server server_name type db2/mvs version db2_version wrapper wrapper_name authorization "username" password "password" options (HOST 'dns_name', PORT 'port', DBNAME 'db_name');

    Esempio

    create wrapper WRAPPER1 library 'libdb2drda.so' OPTIONS(DB2_FENCED 'N'); create server SERVER1 type db2/mvs version 11 wrapper WRAPPER1 authorization "sysuser" password "******" options (HOST 'test1.123.com', PORT '446', DBNAME 'STLEC1');

Fase 2: creare una mappatura degli utenti

Crea una mappatura degli utenti per associare il server federato al server di origine dati eseguendo il seguente comando SQL. Nell'esempio seguente, server_name sostituitelo con il nome del server remoto su cui desiderate eseguire le operazioni. Si tratta del server che hai creato nella fase 1. Sostituisci username e password con le tue credenziali per questo server remoto.

create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');

Per ulteriori informazioni, consulta User mappings nella documentazione di IBM Db2.

Fase 3: controllare la connessione

Verifica che la configurazione della federazione sia avvenuta correttamente controllando la connessione. Apri una sessione per inviare comandi SQL nativi all’origine dati remota utilizzando il comando SET PASSTHRU, quindi crea una tabella sul server di dati remoto.

  1. Apri e chiudi una sessione per inviare SQL a un’origine dati. Nell'esempio seguente, server_name sostituiscilo con il nome del server creato per la federazione nel passaggio 1.

    set passthru server_name;
  2. Creare una nuova tabella . Nell'esempio seguente column_namedata_type, sostituisci e value con gli elementi appropriati per la tua tabella.

    create table table_name ( column_name data_type(value), column_name data_type(value);

    Per ulteriori informazioni, consulta CREATE TABLE statement nella documentazione di IBM Db2.

  3. Crea un indice, inserisci i valori per le righe nella tabella e reimposta la connessione. La reimpostazione della connessione interrompe la connessione ma mantiene i processi di backend. Nell'esempio seguente, sostituisciindex_name, table_namecolumn_name, e columnx_value con le tue informazioni.

    create index index_name on table_name(column_name); insert into table_name values(column1_value,column2_value,column3_value); insert into table_name values(column1_value,column2_value,column3_value); set passthru reset; connect reset;
  4. Connettiti al tuo database Db2 remoto, crea un nickname per il server remoto ed esegui le operazioni. Quando non ti serve più l’accesso ai dati nel database Db2 remoto, reimposta e quindi termina la connessione. Nell'esempio seguente, sostituiscilo database_name con il nome del tuo database Db2 remoto. Sostituisci nickname con un nome. Sostituisci server_name e table_name con il nome del server remoto e della tabella sul server su cui desideri eseguire le operazioni. Sostituiscilo username con le informazioni relative al tuo server remoto. Sostituire sql_command con l'operazione da eseguire sul server remoto.

    connect to database_name; create nickname nickname for server_name."username"."table_name"; select sql_command from nickname; connect reset; terminate;

Esempio

Nell’esempio seguente viene creata una sessione pass-through per consentire le operazioni sul server federato testdb10.

Viene poi creata la tabella t1 con tre colonne con diversi tipi di dati.

Quindi, viene creato l’indice i1_t1 su tre colonne della tabella t1. Successivamente, vengono inserite due righe con valori per queste tre colonne e quindi viene effettuata la disconnessione.

Infine, viene effettuata la connessione al database Db2 remoto testdb2 e viene creato un nickname per la tabella t1 nel server federato testdb10. Viene creato il nickname con il nome utente TESTUSER per quella origine dati. Un comando SQL restituisce tutti i dati della tabella t1. Viene effettuata la disconnessione e la sessione viene terminata.

set passthru testdbl0; create table t1 ( c1 decimal(13,0), c2 char(200), c3 int); create index i1_t1 on t1(c3); insert into t1 values(1,'Test',1); insert into t1 values(2,'Test 2',2); connect reset; connect to testdb2; create nickname remote_t1 for testdbl0."TESTUSER"."T1"; select * from remote_t1; connect reset; terminate;

Federazione eterogenea

È possibile configurare una federazione eterogenea tra il database RDS per Db2 e altre origini dati come Oracle e Microsoft SQL Server. Per un elenco completo delle origini dati supportate da Db2 LUW, consulta Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5 sul sito IBM Support.

La Federazione eterogenea di RDS per Db2 non supporta quanto segue:

  • Wrapper nativi per le altre origini dati

  • Wrapper JDBC per le altre origini dati

  • Federazione a origini dati Sybase, Informix e Teradata perché queste origini dati richiedono l’installazione del software client su RDS per Db2

La federazione eterogenea in RDS per Db2 prevede i seguenti requisiti:

  • RDS per Db2 supporta solo il metodo wrapper ODBC.

  • Se crei una definizione esplicita di un wrapper, devi impostare l’opzione DB2_FENCED su 'N'. Per un elenco delle opzioni wrapper valide per ODBC, consulta ODBC options nella documentazione di IBM Db2.

  • È necessario consentire il traffico in entrata e in uscita dal database host RDS per Db2 al database host remoto. Per ulteriori informazioni, consulta Fornisci accesso alla istanza database nel VPC creando un gruppo di sicurezza.

Per informazioni sulla federazione con Oracle, consulta How to query Oracle by using Db2 Federation and the ODBC driver? sul sito IBM Support.

Per ulteriori informazioni sulle origini dati che supportano la federazione, consulta Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5 sul sito IBM Support.

Fase 1: creare un wrapper ODBC

Crea un wrapper eseguendo il seguente comando:

db2 "create wrapper odbc options( module '/home/rdsdb/sqllib/federation/odbc/lib/libodbc.so')"

Fase 2: creare un server federato

Crea un server federato eseguendo il seguente comando: Nell'esempio seguente, server_name sostituiscilo con il nome del server che utilizzerai per la federazione. Sostituire wrapper_type con il wrapper appropriato. Sostituisci db_version con la versione del tuo database remoto. Sostituisci dns_name e service_name con i valori appropriati per il database remoto a cui desideri connetterti. port

db2 "create server server_name type wrapper_type version db_version options (HOST 'dns_name', PORT 'port', SERVICE_NAME 'service_name')“

Per informazioni sui tipi di wrapper, consulta Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5 sul sito IBM Support.

Esempio

Nell’esempio seguente viene creato un server federato per un database Oracle remoto.

db2 "create server server1 type oracle_odbc version 12.1 options (HOST 'test1.amazon.com', PORT '1521', SERVICE_NAME 'pdborcl.amazon.com')“

Fase 3: creare una mappatura degli utenti

Crea una mappatura degli utenti per associare il server federato al server di origine dati eseguendo il seguente comando SQL. Nell'esempio seguente, server_name sostituitelo con il nome del server remoto su cui desiderate eseguire le operazioni. Si tratta del server che hai creato nella fase 2. Sostituisci username e password con le tue credenziali per questo server remoto.

create user mapping for user server server_name options (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');

Per ulteriori informazioni, consulta User mappings nella documentazione di IBM Db2.

Fase 4: controllare la connessione

Verifica che la configurazione della federazione sia avvenuta correttamente controllando la connessione. Apri una sessione per inviare comandi SQL nativi all’origine dati remota utilizzando il comando SET PASSTHRU, quindi crea una tabella sul server di dati remoto.

  1. Apri e chiudi una sessione per inviare SQL a un’origine dati. Nell'esempio seguente, server_name sostituiscilo con il nome del server creato per la federazione nel passaggio 2.

    set passthru server_name;
  2. Creare una nuova tabella . Nell'esempio seguente column_namedata_type, sostituisci e value con gli elementi appropriati per la tua tabella.

    create table table_name ( column_name data_type(value), column_name data_type(value);

    Per ulteriori informazioni, consulta CREATE TABLE statement nella documentazione di IBM Db2.

  3. Crea un indice, inserisci i valori per le righe nella tabella e reimposta la connessione. La reimpostazione della connessione interrompe la connessione ma mantiene i processi di backend. Nell'esempio seguente, sostituisciindex_name, table_namecolumn_name, e columnx_value con le tue informazioni.

    create index index_name on table_name(column_name); insert into table_name values(column1_value,column2_value,column3_value); insert into table_name values(column1_value,column2_value,column3_value); set passthru reset; connect reset;
  4. Connettiti al tuo database Db2 remoto, crea un nickname per il server remoto ed esegui le operazioni. Quando non ti serve più l’accesso ai dati nel database Db2 remoto, reimposta e quindi termina la connessione. Nell'esempio seguente, sostituiscilo database_name con il nome del tuo database Db2 remoto. Sostituisci nickname con un nome. Sostituisci server_name e table_name con il nome del server remoto e della tabella sul server su cui desideri eseguire le operazioni. Sostituiscilo username con le informazioni relative al tuo server remoto. Sostituire sql_command con l'operazione da eseguire sul server remoto.

    connect to database_name; create nickname nickname for server_name."username"."table_name"; select sql_command from nickname; connect reset; terminate;

Esempio

Nell’esempio seguente viene creata una sessione pass-through per consentire le operazioni sul server federato testdb10.

Viene poi creata la tabella t1 con tre colonne con diversi tipi di dati.

Quindi, viene creato l’indice i1_t1 su tre colonne della tabella t1. Successivamente, vengono inserite due righe con valori per queste tre colonne e quindi viene effettuata la disconnessione.

Infine, viene effettuata la connessione al database Db2 remoto testdb2 e viene creato un nickname per la tabella t1 nel server federato testdb10. Viene creato il nickname con il nome utente TESTUSER per quella origine dati. Un comando SQL restituisce tutti i dati della tabella t1. Viene effettuata la disconnessione e la sessione viene terminata.

set passthru testdbl0; create table t1 ( c1 decimal(13,0), c2 char(200), c3 int); create index i1_t1 on t1(c3); insert into t1 values(1,'Test',1); insert into t1 values(2,'Test 2',2); connect reset; connect to testdb2; create nickname remote_t1 for testdbl0."TESTUSER"."T1"; select * from remote_t1; connect reset; terminate;