

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fédération Amazon RDS for Db2
<a name="db2-federation"></a>

Vous pouvez utiliser votre base de données Amazon RDS for Db2 en tant que base de données fédérée. Après avoir configuré la fédération pour RDS for Db2, vous pourrez accéder aux données de plusieurs bases de données et les interroger à partir de votre base de données RDS for Db2. La fédération vous évite d’avoir à migrer des données vers votre base de données RDS for Db2 ou à consolider les données dans une base de données unique. 

En utilisant votre base de données RDS for Db2 en tant que base de données fédérée, vous pouvez continuer à accéder à toutes les fonctionnalités de RDS for Db2 et à en tirer parti Services AWS, tout en conservant vos données dans différentes bases de données. Vous pouvez configurer à la fois une fédération homogène qui connecte différentes bases de données du même type ou une fédération hétérogène qui connecte différentes bases de données de différents types.

Vous devez d’abord connecter votre base de données Db2 dans RDS for Db2 à des bases de données distantes. Vous pouvez ensuite exécuter des requêtes sur toutes les bases de données connectées. Par exemple, vous pouvez exécuter une instruction SQL JOIN qui joint les tables de votre base de données RDS pour DB2 aux tables d'une base de données Db2 on distante. z/OS 

**Topics**
+ [Fédération homogène](#db2-federation-homogeneous)
+ [Fédération hétérogène](#db2-federation-heterogeneous)

## Fédération homogène
<a name="db2-federation-homogeneous"></a>

Vous pouvez configurer une fédération homogène entre votre base de données RDS for Db2 et la famille de produits Db2 suivante :
+ Db2 pour Linux, UNIX, Windows (LUW)
+ Db2 iSeries
+ Db2 pour z/OS

La fédération homogène RDS for Db2 ne prend pas en charge les actions suivantes :
+ Exécution des commandes `CATALOG` pour configurer un répertoire de nœuds et une base de données distante sur une base de données hôte RDS for Db2
+ Configuration de l’équilibrage de la charge de travail (WLB) lors de la fédération vers Db2 sur z/OS
+ Configuration du fichier de configuration du pilote du serveur de données IBM (`db2dsdriver.cfg`)

La fédération homogène RDS for Db2 présente les exigences suivantes :
+ Vous devez créer le wrapper DRDA en mode `UNFENCED`. Si vous ne le faites pas, la fédération ne fonctionnera pas dans RDS for Db2.
+ Vous devez autoriser le trafic entrant et sortant de votre base de données hôte RDS for Db2 vers votre base de données hôte distante. Pour plus d’informations, consultez [Créer un groupe de sécurité qui autorise l'accès à votre instance de base de données dans votre VPC](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

**Topics**
+ [Étape 1 : création d’un wrapper DRDA et d’un serveur fédéré](#db2-federation-homogeneous-create)
+ [Étape 2 : création d’un mappage utilisateur](#db2-federation-homogeneous-map)
+ [Étape 3 : vérification de la connexion](#db2-federation-homogeneous-check)

### Étape 1 : création d’un wrapper DRDA et d’un serveur fédéré
<a name="db2-federation-homogeneous-create"></a>

Pour une fédération homogène, créez un wrapper DRDA et un serveur fédéré. La connexion à l’hôte distant utilise `HOST`, `PORT` et `DBNAME`. 

Choisissez l’une des méthodes suivantes en fonction du type de votre base de données Db2 distante :
+ **Base de données Db2 pour Linux, UNIX et Windows (LUX)** : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur que vous utiliserez pour la fédération. *db2\$1version*Remplacez-le par la version de votre base de données Db2 distante. Remplacez *username* et *password* par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez *db\$1name**dns\$1name*, et par *port* les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

  ```
  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');
  ```

  **Exemple**

  ```
  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** : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez *wrapper\$1name* et *library\$1name* par un nom pour votre wrapper DRDA et le fichier de bibliothèque d'[enveloppes.](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files) Remplacez *server\$1name* par le nom du serveur que vous utiliserez pour la fédération. *db2\$1version*Remplacez-le par la version de votre base de données Db2 distante. Remplacez *username* et *password* par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez *dns\$1name**port*, et par *db\$1name* les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

  ```
  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');
  ```

  **Exemple**

  ```
  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 for z/OS** : exécutez les commandes SQL suivantes. Dans l'exemple suivant, remplacez *wrapper\$1name* et *library\$1name* par un nom pour votre wrapper DRDA et le fichier de bibliothèque d'[enveloppes.](https://www.ibm.com/docs/en/db2/11.5?topic=wrapper-db2-library-files) Remplacez *server\$1name* par le nom du serveur que vous utiliserez pour la fédération. *db2\$1version*Remplacez-le par la version de votre base de données Db2 distante. Remplacez *username* et *password* par vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacez *dns\$1name**port*, et par *db\$1name* les valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.

  ```
  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');
  ```

  **Exemple**

  ```
  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');
  ```

### Étape 2 : création d’un mappage utilisateur
<a name="db2-federation-homogeneous-map"></a>

Créez un mappage utilisateur pour associer votre serveur fédéré à votre serveur de source de données en exécutant la commande SQL suivante. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur distant sur lequel vous souhaitez effectuer des opérations. Il s’agit du serveur que vous avez créé à [l’étape 1](#db2-federation-homogeneous-create). Remplacez *username* et *password* par vos informations d'identification pour ce serveur distant.

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

Pour plus d’informations, consultez [Mappages d’utilisateurs](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings) dans la documentation IBM Db2.

### Étape 3 : vérification de la connexion
<a name="db2-federation-homogeneous-check"></a>

Vérifiez que la configuration de votre fédération s’est bien déroulée en vérifiant la connexion. Ouvrez une session pour envoyer des commandes SQL natives à votre source de données distante à l’aide de la commande SET PASSTHRU, puis créez une table sur le serveur de données distant.

1. Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur que vous avez créé pour la fédération à l'étape 1.

   ```
   set passthru server_name;
   ```

1. Créez une nouvelle table . Dans l'exemple suivant, remplacez *column\$1name**data\$1type*, et *value* par les éléments appropriés pour votre tableau.

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

    Pour plus d’informations, consultez [Instruction CREATE TABLE](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table) dans la documentation IBM Db2.

1. Créez un index, insérez des valeurs pour les lignes dans le tableau et réinitialisez la connexion. La réinitialisation de la connexion interrompt la connexion, mais conserve les processus principaux. Dans l'exemple suivant, remplacez *index\$1name**table\$1name*,*column\$1name*, et *columnx\$1value* par vos informations. 

   ```
   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;
   ```

1. Connectez-vous à votre base de données Db2 distante, créez un surnom pour votre serveur distant et effectuez des opérations. Lorsque vous avez terminé d’accéder aux données de la base de données Db2 distante, réinitialisez puis mettez fin à la connexion. Dans l'exemple suivant, remplacez *database\$1name* par le nom de votre base de données Db2 distante. Remplacez *nickname* par un nom. Remplacez *server\$1name* et *table\$1name* par le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacez *username* par les informations relatives à votre serveur distant. Remplacez *sql\$1command* par l'opération à effectuer sur le serveur distant.

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

**Exemple**

L’exemple suivant crée une session directe pour autoriser les opérations sur le serveur fédéré `testdb10`. 

Ensuite, il crée la table `t1` avec trois colonnes contenant différents types de données. 

Ensuite, l’exemple crée l’index `i1_t1` sur trois colonnes de la table `t1`. Ensuite, il insère deux lignes contenant des valeurs pour ces trois colonnes, puis se déconnecte.

Enfin, l’exemple se connecte à la base de données Db2 distante `testdb2` et crée un surnom pour la table sur ` t1` le serveur fédéré `testdb10`. Il crée le surnom avec le nom d’utilisateur `TESTUSER` pour cette source de données. Une commande SQL génère toutes les données de la table `t1`. L’exemple déconnecte et met fin à la session.

```
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;
```

## Fédération hétérogène
<a name="db2-federation-heterogeneous"></a>

Vous pouvez configurer une fédération hétérogène entre votre base de données RDS for Db2 et d’autres sources de données telles qu’Oracle et Microsoft SQL Server. Pour obtenir la liste complète des sources de données prises en charge par Db2 LUW, consultez [Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5](https://www.ibm.com/support/pages/data-source-support-matrix-federation-bundled-db2-luw-v115) sur le site de support d’IBM.

La fédération hétérogène RDS for Db2 ne prend pas en charge les éléments suivants :
+ Wrappers natifs pour les autres sources de données
+ Wrappers JDBC pour les autres sources de données
+ Fédération avec les sources de données Sybase, Informix et Teradata, car ces sources de données nécessitent l’installation d’un logiciel client sur RDS for Db2

La fédération hétérogène RDS for Db2 présente les exigences suivantes :
+ RDS for Db2 ne prend en charge que la méthode d’encapsulation ODBC.
+ Si vous créez une définition explicite d’un wrapper, vous devez définir l’option `DB2_FENCED` sur `'N'`. Pour obtenir la liste des options d’encapsulation valides pour ODBC, consultez [Options ODBC](https://www.ibm.com/docs/en/db2/11.5?topic=options-odbc) dans la documentation IBM Db2.
+ Vous devez autoriser le trafic entrant et sortant de votre base de données hôte RDS for Db2 vers votre base de données hôte distante. Pour plus d’informations, consultez [Créer un groupe de sécurité qui autorise l'accès à votre instance de base de données dans votre VPC](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

Pour plus d’informations sur la fédération vers Oracle, consultez [Comment interroger Oracle à l’aide de la fédération Db2 et du pilote ODBC ?](https://www.ibm.com/support/pages/node/6431133) sur le site de support d’IBM.

Pour plus d’informations sur les sources de données qui prennent en charge la fédération, consultez [Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5](https://www.ibm.com/support/pages/node/957245) sur le site de support d’IBM.

**Topics**
+ [Étape 1 : création d’un wrapper ODBC](#db2-federation-heteogenous-define-wrapper)
+ [Étape 2 : création d’un serveur fédéré](#db2-federation-heterogeneous-create)
+ [Étape 3 : création d’un mappage utilisateur](#db2-federation-heterogeneous-map)
+ [Étape 4 : vérification de la connexion](#db2-federation-heterogeneous-check)

### Étape 1 : création d’un wrapper ODBC
<a name="db2-federation-heteogenous-define-wrapper"></a>

Créez un wrapper en exécutant la commande suivante :

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

### Étape 2 : création d’un serveur fédéré
<a name="db2-federation-heterogeneous-create"></a>

Créez un serveur fédéré en exécutant la commande suivante. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur que vous utiliserez pour la fédération. *wrapper\$1type*Remplacez-le par l'emballage approprié. *db\$1version*Remplacez-le par la version de votre base de données distante. Remplacez *dns\$1name**port*, et *service\$1name* par les valeurs appropriées pour la base de données distante à laquelle vous souhaitez vous connecter. 

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

Pour plus d’informations sur les types de wrappers, consultez [Matrice de support des sources de données de fédération fournie dans Db2 LUW V11.5](https://www.ibm.com/support/pages/node/957245) sur le site de support d’IBM.

**Exemple**

L’exemple suivant crée un serveur fédéré pour une base de données Oracle distante.

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

### Étape 3 : création d’un mappage utilisateur
<a name="db2-federation-heterogeneous-map"></a>

Créez un mappage utilisateur pour associer votre serveur fédéré à votre serveur de source de données en exécutant la commande SQL suivante. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur distant sur lequel vous souhaitez effectuer des opérations. Il s’agit du serveur que vous avez créé à [l’étape 2](#db2-federation-heterogeneous-create). Remplacez *username* et *password* par vos informations d'identification pour ce serveur distant.

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

Pour plus d’informations, consultez [Mappages d’utilisateurs](https://www.ibm.com/docs/en/db2/11.5?topic=systems-user-mappings) dans la documentation IBM Db2.

### Étape 4 : vérification de la connexion
<a name="db2-federation-heterogeneous-check"></a>

Vérifiez que la configuration de votre fédération s’est bien déroulée en vérifiant la connexion. Ouvrez une session pour envoyer des commandes SQL natives à votre source de données distante à l’aide de la commande SET PASSTHRU, puis créez une table sur le serveur de données distant.

1. Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez *server\$1name* par le nom du serveur que vous avez créé pour la fédération à l'[étape 2](#db2-federation-heterogeneous-create).

   ```
   set passthru server_name;
   ```

1. Créez une nouvelle table . Dans l'exemple suivant, remplacez *column\$1name**data\$1type*, et *value* par les éléments appropriés pour votre tableau.

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

    Pour plus d’informations, consultez [Instruction CREATE TABLE](https://www.ibm.com/docs/en/db2-event-store/2.0.0?topic=statements-create-table) dans la documentation IBM Db2.

1. Créez un index, insérez des valeurs pour les lignes dans le tableau et réinitialisez la connexion. La réinitialisation de la connexion interrompt la connexion, mais conserve les processus principaux. Dans l'exemple suivant, remplacez *index\$1name**table\$1name*,*column\$1name*, et *columnx\$1value* par vos informations. 

   ```
   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;
   ```

1. Connectez-vous à votre base de données Db2 distante, créez un surnom pour votre serveur distant et effectuez des opérations. Lorsque vous avez terminé d’accéder aux données de la base de données Db2 distante, réinitialisez puis mettez fin à la connexion. Dans l'exemple suivant, remplacez *database\$1name* par le nom de votre base de données Db2 distante. Remplacez *nickname* par un nom. Remplacez *server\$1name* et *table\$1name* par le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacez *username* par les informations relatives à votre serveur distant. Remplacez *sql\$1command* par l'opération à effectuer sur le serveur distant.

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

**Exemple**

L’exemple suivant crée une session directe pour autoriser les opérations sur le serveur fédéré `testdb10`. 

Ensuite, il crée la table `t1` avec trois colonnes contenant différents types de données. 

Ensuite, l’exemple crée l’index `i1_t1` sur trois colonnes de la table `t1`. Ensuite, il insère deux lignes contenant des valeurs pour ces trois colonnes, puis se déconnecte.

Enfin, l’exemple se connecte à la base de données Db2 distante `testdb2` et crée un surnom pour la table sur ` t1` le serveur fédéré `testdb10`. Il crée le surnom avec le nom d’utilisateur `TESTUSER` pour cette source de données. Une commande SQL génère toutes les données de la table `t1`. L’exemple déconnecte et met fin à la session.

```
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;
```