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
CATALOGper 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:
-
È necessario creare il wrapper DRDA in modalità
UNFENCED. In caso contrario, la federazione non funzionerà in RDS per Db2. -
È necessario consentire il traffico in entrata e in uscita dal database host RDS per Db2 ai database host remoti. Per ulteriori informazioni, consulta Fornisci accesso alla istanza database nel VPC creando un gruppo di sicurezza.
Argomenti
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_namecon il nome del server che utilizzerai per la federazione. Sostituiscilodb2_versioncon la versione del tuo database Db2 remoto. Sostituisciusernameepasswordcon le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituiscidb_nameeportcon i valori appropriati per il database Db2 remoto a cui desideri connetterti.dns_namecreate wrapper drda options(DB2_FENCED 'N'); create serverserver_nametype 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_nameelibrary_namecon un nome per il wrapper DRDA e il file della libreria wrapper.server_nameSostituiscilo con il nome del server che utilizzerai per la federazione. Sostituiscilodb2_versioncon la versione del tuo database Db2 remoto. Sostituisciusernameepasswordcon le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituiscidns_nameedb_namecon i valori appropriati per il database Db2 remoto a cui desideri connetterti.portcreate wrapperwrapper_namelibrary 'library name' options(DB2_FENCED 'N'); create serverserver_nametype db2/mvs versiondb2_versionwrapperwrapper_nameauthorization "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_nameelibrary_namecon un nome per il wrapper DRDA e il file della libreria wrapper.server_nameSostituiscilo con il nome del server che utilizzerai per la federazione. Sostituiscilodb2_versioncon la versione del tuo database Db2 remoto. Sostituisciusernameepasswordcon le tue credenziali per il database Db2 remoto a cui desideri connetterti. Sostituiscidns_nameedb_namecon i valori appropriati per il database Db2 remoto a cui desideri connetterti.portcreate wrapperwrapper_namelibrary 'library_name' options(DB2_FENCED 'N'); create serverserver_nametype db2/mvs versiondb2_versionwrapperwrapper_nameauthorization "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 serverserver_nameoptions (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
Per ulteriori informazioni, consulta User mappings
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.
-
Apri e chiudi una sessione per inviare SQL a un’origine dati. Nell'esempio seguente,
server_namesostituiscilo con il nome del server creato per la federazione nel passaggio 1.set passthruserver_name; -
Creare una nuova tabella . Nell'esempio seguente
column_namedata_type, sostituisci evaluecon gli elementi appropriati per la tua tabella.create tabletable_name(column_namedata_type(value),column_namedata_type(value);Per ulteriori informazioni, consulta CREATE TABLE statement
nella documentazione di IBM Db2. -
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, sostituisci
index_name,table_namecolumn_name, ecolumnx_valuecon le tue informazioni.create indexindex_nameontable_name(column_name); insert intotable_namevalues(column1_value,column2_value,column3_value); insert intotable_namevalues(column1_value,column2_value,column3_value); set passthru reset; connect reset; -
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_namecon il nome del tuo database Db2 remoto. Sostituiscinicknamecon un nome. Sostituisciserver_nameetable_namecon il nome del server remoto e della tabella sul server su cui desideri eseguire le operazioni. Sostituiscilousernamecon le informazioni relative al tuo server remoto. Sostituiresql_commandcon l'operazione da eseguire sul server remoto.connect todatabase_name; create nicknamenicknameforserver_name."username"."table_name"; selectsql_commandfromnickname; 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
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_FENCEDsu'N'. Per un elenco delle opzioni wrapper valide per ODBC, consulta ODBC optionsnella 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?
Per ulteriori informazioni sulle origini dati che supportano la federazione, consulta Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5
Argomenti
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 serverserver_nametypewrapper_typeversiondb_versionoptions (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
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 serverserver_nameoptions (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
Per ulteriori informazioni, consulta User mappings
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.
-
Apri e chiudi una sessione per inviare SQL a un’origine dati. Nell'esempio seguente,
server_namesostituiscilo con il nome del server creato per la federazione nel passaggio 2.set passthruserver_name; -
Creare una nuova tabella . Nell'esempio seguente
column_namedata_type, sostituisci evaluecon gli elementi appropriati per la tua tabella.create tabletable_name(column_namedata_type(value),column_namedata_type(value);Per ulteriori informazioni, consulta CREATE TABLE statement
nella documentazione di IBM Db2. -
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, sostituisci
index_name,table_namecolumn_name, ecolumnx_valuecon le tue informazioni.create indexindex_nameontable_name(column_name); insert intotable_namevalues(column1_value,column2_value,column3_value); insert intotable_namevalues(column1_value,column2_value,column3_value); set passthru reset; connect reset; -
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_namecon il nome del tuo database Db2 remoto. Sostituiscinicknamecon un nome. Sostituisciserver_nameetable_namecon il nome del server remoto e della tabella sul server su cui desideri eseguire le operazioni. Sostituiscilousernamecon le informazioni relative al tuo server remoto. Sostituiresql_commandcon l'operazione da eseguire sul server remoto.connect todatabase_name; create nicknamenicknameforserver_name."username"."table_name"; selectsql_commandfromnickname; 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;