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
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
Fédération homogène
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
CATALOGpour 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.
Rubriques
Étape 1 : création d’un wrapper DRDA et d’un serveur fédéré
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_namepar le nom du serveur que vous utiliserez pour la fédération.db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacezusernameetpasswordpar vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacezdb_namedns_name, et parportles valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.create 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');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_nameetlibrary_namepar un nom pour votre wrapper DRDA et le fichier de bibliothèque d'enveloppes.Remplacez server_namepar le nom du serveur que vous utiliserez pour la fédération.db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacezusernameetpasswordpar vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacezdns_nameport, et pardb_nameles valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.create 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');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_nameetlibrary_namepar un nom pour votre wrapper DRDA et le fichier de bibliothèque d'enveloppes.Remplacez server_namepar le nom du serveur que vous utiliserez pour la fédération.db2_versionRemplacez-le par la version de votre base de données Db2 distante. Remplacezusernameetpasswordpar vos informations d'identification pour la base de données Db2 distante à laquelle vous souhaitez vous connecter. Remplacezdns_nameport, et pardb_nameles valeurs appropriées pour la base de données Db2 distante à laquelle vous souhaitez vous connecter.create 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');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
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_name 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. Remplacez username et password par vos informations d'identification pour ce serveur distant.
create user mapping for user serverserver_nameoptions (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
Pour plus d’informations, consultez Mappages d’utilisateurs
Étape 3 : vérification de la connexion
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.
-
Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez
server_namepar le nom du serveur que vous avez créé pour la fédération à l'étape 1.set passthruserver_name; -
Créez une nouvelle table . Dans l'exemple suivant, remplacez
column_namedata_type, etvaluepar les éléments appropriés pour votre tableau.create tabletable_name(column_namedata_type(value),column_namedata_type(value);Pour plus d’informations, consultez Instruction CREATE TABLE
dans la documentation IBM Db2. -
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_nametable_name,column_name, etcolumnx_valuepar vos informations.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; -
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_namepar le nom de votre base de données Db2 distante. Remplaceznicknamepar un nom. Remplacezserver_nameettable_namepar le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacezusernamepar les informations relatives à votre serveur distant. Remplacezsql_commandpar l'opération à effectuer sur le serveur distant.connect todatabase_name; create nicknamenicknameforserver_name."username"."table_name"; selectsql_commandfromnickname; 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
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
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_FENCEDsur'N'. Pour obtenir la liste des options d’encapsulation valides pour ODBC, consultez Options ODBCdans 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.
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 ?
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
Rubriques
Étape 1 : création d’un wrapper ODBC
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é
Créez un serveur fédéré en exécutant la commande suivante. Dans l'exemple suivant, remplacez server_name par le nom du serveur que vous utiliserez pour la fédération. wrapper_typeRemplacez-le par l'emballage approprié. db_versionRemplacez-le par la version de votre base de données distante. Remplacez dns_nameport, et service_name par les valeurs appropriées pour la base de données distante à laquelle vous souhaitez vous connecter.
db2 "create serverserver_nametypewrapper_typeversiondb_versionoptions (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
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
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_name 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. Remplacez username et password par vos informations d'identification pour ce serveur distant.
create user mapping for user serverserver_nameoptions (REMOTE_AUTHID 'username', REMOTE_PASSWORD 'password');
Pour plus d’informations, consultez Mappages d’utilisateurs
Étape 4 : vérification de la connexion
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.
-
Ouvrez et fermez une session pour envoyer du code SQL à une source de données. Dans l'exemple suivant, remplacez
server_namepar le nom du serveur que vous avez créé pour la fédération à l'étape 2.set passthruserver_name; -
Créez une nouvelle table . Dans l'exemple suivant, remplacez
column_namedata_type, etvaluepar les éléments appropriés pour votre tableau.create tabletable_name(column_namedata_type(value),column_namedata_type(value);Pour plus d’informations, consultez Instruction CREATE TABLE
dans la documentation IBM Db2. -
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_nametable_name,column_name, etcolumnx_valuepar vos informations.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; -
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_namepar le nom de votre base de données Db2 distante. Remplaceznicknamepar un nom. Remplacezserver_nameettable_namepar le nom du serveur distant et de la table de ce serveur sur lesquels vous souhaitez effectuer des opérations. Remplacezusernamepar les informations relatives à votre serveur distant. Remplacezsql_commandpar l'opération à effectuer sur le serveur distant.connect todatabase_name; create nicknamenicknameforserver_name."username"."table_name"; selectsql_commandfromnickname; 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;