Puede usar su base de datos de Amazon RDS para Db2 como base de datos federada. Tras configurar la federación de RDS para Db2, podrá acceder a los datos de varias bases de datos de su base de datos de RDS para Db2 y consultarlos. La federación evita tener que migrar datos a su base de datos de RDS para Db2 o consolidar los datos en una única base de datos.
Al utilizar la base de datos de RDS para Db2 como base de datos federada, puede seguir accediendo a todas las características de RDS para Db2 y aprovechar varios Servicios de AWS, al mismo tiempo que mantiene los datos en distintas bases de datos. Puede configurar tanto una federación homogénea, que conecta diferentes bases de datos del mismo tipo, como una federación heterogénea, que conecta diferentes bases de datos de diferentes tipos.
Primero debe conectar la base de datos de Db2 de RDS para Db2 a bases de datos remotas. A continuación, puede ejecutar consultas en todas las bases de datos conectadas. Por ejemplo, puede ejecutar una instrucción JOIN de SQL que combine las tablas de su base de datos de RDS para Db2 con las tablas de una base de datos remota de Db2 en z/OS.
Federación homogénea
Puede configurar una federación homogénea entre su base de datos de RDS para Db2 y la siguiente familia de productos de Db2:
-
Db2 para Linux, UNIX y Windows (LUW)
-
Db2 iSeries
-
Db2 para z/OS
La federación homogénea de RDS para Db2 no admite las siguientes acciones:
-
Ejecución de comandos
CATALOG
para configurar un directorio de nodos y una base de datos remota en una base de datos de host de RDS para Db2 -
Configuración del equilibrio de carga de trabajo (WLB) al federarse a Db2 en z/OS
-
Configuración del archivo de configuración del controlador del servidor de datos de IBM (
db2dsdriver.cfg
)
La federación homogénea de RDS para Db2 tiene los siguientes requisitos:
-
Debe crear el contenedor DRDA en el modo
UNFENCED
. Si no lo hace, la federación no funcionará en RDS para Db2. -
Debe permitir que el tráfico entrante y saliente de su base de datos de host de RDS para Db2 llegue a sus bases de datos de host remotas. Para obtener más información, consulte Proporcionar acceso a la instancia de base de datos en la VPC mediante la creación de un grupo de seguridad.
Temas
Paso 1: creación de un contenedor de DRDA y un servidor federado
Para una federación homogénea, cree un contenedor DRDA y un servidor federado. La conexión al host remoto utiliza HOST
, PORT
y DBNAME
.
Elija uno de los siguientes métodos según el tipo de base de datos de Db2 remota:
-
Base de datos Db2 para Linux, UNIX y Windows (LUX): ejecute los siguientes comandos de SQL. En el siguiente ejemplo, sustituya
server_name
por el nombre del servidor que utilizará para la federación. Sustituyadb2_version
por la versión de la base de datos de Db2 remota. Sustituyausername
ypassword
por las credenciales de la base de datos remota de Db2 a la que desee conectarse. Sustituyadb_name
,dns_name
yport
por los valores correspondientes para la base de datos de Db2 remota a la que desee conectarse.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
');Ejemplo
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: ejecute los siguientes comandos de SQL. En el siguiente ejemplo, sustituya
wrapper_name
ylibrary_name
por un nombre para el contenedor DRDA y el archivo de biblioteca del contenedor. Sustituya server_name
por el nombre del servidor que usará para la federación. Sustituyadb2_version
por la versión de la base de datos de Db2 remota. Sustituyausername
ypassword
por las credenciales de la base de datos remota de Db2 a la que desee conectarse. Sustituyadns_name
,port
ydb_name
por los valores correspondientes para la base de datos de Db2 remota a la que desee conectarse.create wrapper
wrapper_name
library 'library name
' options(DB2_FENCED 'N'); create serverserver_name
type db2/mvs versiondb2_version
wrapperwrapper_name
authorization "sername
" password "password
" options (HOST 'dns_name
', PORT 'port
', DBNAME 'db_name
');Ejemplo
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 para z/OS: ejecute los siguientes comandos de SQL. En el siguiente ejemplo, sustituya
wrapper_name
ylibrary_name
por un nombre para el contenedor DRDA y el archivo de biblioteca del contenedor. Sustituya server_name
por el nombre del servidor que usará para la federación. Sustituyadb2_version
por la versión de la base de datos de Db2 remota. Sustituyausername
ypassword
por las credenciales de la base de datos remota de Db2 a la que desee conectarse. Sustituyadns_name
,port
ydb_name
por los valores correspondientes para la base de datos de Db2 remota a la que desee conectarse.create wrapper
wrapper_name
library 'library_name
' options(DB2_FENCED 'N'); create serverserver_name
type db2/mvs versiondb2_version
wrapperwrapper_name
authorization "username
" password "password
" options (HOST 'dns_name
', PORT 'port
', DBNAME 'db_name
');Ejemplo
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');
Paso 2: creación de un mapeo de usuario
Cree un mapeo de usuario para asociar su servidor federado a su servidor de origen de datos ejecutando el siguiente comando de SQL. En el siguiente ejemplo, sustituya server_name
por el nombre del servidor remoto en el que desee realizar las operaciones. Este es el servidor que creó en el paso 1. Sustituya username
y password
por sus credenciales para este servidor remoto.
create user mapping for user server
server_name
options (REMOTE_AUTHID 'username
', REMOTE_PASSWORD 'password
');
Para obtener más información, consulte User mappings
Paso 3: comprobación de la conexión
Compruebe la conexión para confirmar que la configuración de la federación se ha realizado correctamente. Abra una sesión para enviar comandos de SQL nativos a su origen de datos remoto mediante el comando SET PASSTHRU y, a continuación, cree una tabla en el servidor de datos remoto.
-
Abra y cierre una sesión para enviar SQL a un origen de datos. En el siguiente ejemplo, sustituya
server_name
por el nombre del servidor que creó para la federación en el paso 1.set passthru
server_name
; -
Cree una nueva tabla. En el siguiente ejemplo, sustituya
column_name
,data_type
yvalue
por los elementos correspondientes de la tabla.create table
table_name
(column_name
data_type
(value
),column_name
data_type
(value
);Para obtener más información, consulte CREATE TABLE statement
en la documentación de IBM Db2. -
Cree un índice, inserte los valores de las filas en la tabla y restablezca la conexión. Al restablecer la conexión, se pierde la conexión, pero se conservan los procesos de backend. En el siguiente ejemplo, sustituya
index_name
,table_name
,column_name
ycolumnx_value
por su información.create index
index_name
ontable_name
(column_name
); insert intotable_name
values(column1_value
,column2_value
,column3_value
); insert intotable_name
values(column1_value
,column2_value
,column3_value
); set passthru reset; connect reset; -
Conéctese a su base de datos de Db2 remota, cree un apodo para su servidor remoto y realice operaciones. Cuando haya terminado de acceder a los datos de la base de datos remota de Db2, restablezca y, a continuación, finalice la conexión. En el ejemplo siguiente, sustituya
database_name
por el nombre de su base de datos de Db2 remota. Sustituyanickname
por un nombre. Sustituyaserver_name
ytable_name
por el nombre del servidor remoto y la tabla de ese servidor en los que quiera realizar operaciones. Sustituyausername
por la información de su servidor remoto. Sustituyasql_command
por la operación que se va a realizar en el servidor remoto.connect to
database_name
; create nicknamenickname
forserver_name
."username
"."table_name
"; selectsql_command
fromnickname
; connect reset; terminate;
Ejemplo
El siguiente ejemplo crea una sesión de transferencia para permitir las operaciones en el servidor federado de testdb10
.
Después, crea la tabla t1
con tres columnas con distintos tipos de datos.
A continuación, el ejemplo crea el índice i1_t1
en tres columnas de la tabla t1
. Después, inserta dos filas con los valores de estas tres columnas y, a continuación, se desconecta.
Por último, el ejemplo se conecta a la base de datos remota de Db2 testdb2
y se crea un apodo para la tabla t1
en el servidor federado testdb10
. Crea el apodo con el nombre de usuario TESTUSER
de ese origen de datos. Un comando de SQL genera todos los datos de la tabla t1
. El ejemplo desconecta y finaliza la sesión.
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;
Federación heterogénea
Puede configurar una federación heterogénea entre la base de datos de RDS para Db2 y otros orígenes de datos, como Oracle y Microsoft SQL Server. Para obtener una lista completa de los orígenes de datos compatibles con Db2 LUW, consulte Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5
La federación heterogénea de RDS para Db2 no admite los siguientes elementos:
-
Contenedores nativos para los demás orígenes de datos
-
Contenedores JDBC para los demás orígenes de datos
-
Federación a orígenes de datos de Sybase, Informix y Teradata, porque estos orígenes de datos requieren la instalación del software cliente en RDS para Db2
La federación heterogénea de RDS para Db2 tiene los siguientes requisitos:
-
RDS para Db2 solo admite el método de contenedor de ODBC.
-
Si crea una definición explícita de un contenedor, debe establecer la opción
DB2_FENCED
en'N'
. Para obtener una lista de las opciones de contenedor válidas para ODBC, consulte ODBC optionsen la documentación de IBM Db2. -
Debe permitir que el tráfico entrante y saliente de su base de datos de host de RDS para Db2 llegue a su base de datos de host remota. Para obtener más información, consulte Proporcionar acceso a la instancia de base de datos en la VPC mediante la creación de un grupo de seguridad.
Para obtener información sobre la federación a Oracle, consulte How to query Oracle by using Db2 Federation and the ODBC driver?
Para obtener información sobre los orígenes de datos compatibles con la federación, consulte Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5
Temas
Paso 1: creación de un contenedor de ODBC
Cree un contenedor ejecutando el siguiente comando:
db2 "create wrapper odbc options( module '/home/rdsdb/sqllib/federation/odbc/lib/libodbc.so')"
Paso 2: creación de un servidor federado
Cree un servidor federado ejecutando el siguiente comando. En el siguiente ejemplo, sustituya server_name
por el nombre del servidor que utilizará para la federación. Sustituya wrapper_type
por el contenedor apropiado. Sustituya db_version
por la versión de la base de datos remota. Sustituya dns_name
, port
y db_name
por los valores correspondientes para la base de datos remota a la que desee conectarse.
db2 "create server
server_name
typewrapper_type
versiondb_version
options (HOST 'dns_name
', PORT 'port
', SERVICE_NAME 'service_name
')“
Para obtener información sobre los tipos de contenedores, consulte Data Source Support Matrix of Federation Bundled in Db2 LUW V11.5
Ejemplo
El siguiente ejemplo crea un servidor federado para una base de datos de Oracle remota.
db2 "create server server1 type oracle_odbc version 12.1 options (HOST 'test1.amazon.com', PORT '1521', SERVICE_NAME 'pdborcl.amazon.com')“
Paso 3: creación de un mapeo de usuario
Cree un mapeo de usuario para asociar su servidor federado a su servidor de origen de datos ejecutando el siguiente comando de SQL. En el siguiente ejemplo, sustituya server_name
por el nombre del servidor remoto en el que desee realizar las operaciones. Este es el servidor que creó en el paso 2. Sustituya username
y password
por sus credenciales para este servidor remoto.
create user mapping for user server
server_name
options (REMOTE_AUTHID 'username
', REMOTE_PASSWORD 'password
');
Para obtener más información, consulte User mappings
Paso 4: comprobación de la conexión
Compruebe la conexión para confirmar que la configuración de la federación se ha realizado correctamente. Abra una sesión para enviar comandos de SQL nativos a su origen de datos remoto mediante el comando SET PASSTHRU y, a continuación, cree una tabla en el servidor de datos remoto.
-
Abra y cierre una sesión para enviar SQL a un origen de datos. En el siguiente ejemplo, sustituya
server_name
por el nombre del servidor que creó para la federación en el paso 2.set passthru
server_name
; -
Cree una nueva tabla. En el siguiente ejemplo, sustituya
column_name
,data_type
yvalue
por los elementos correspondientes de la tabla.create table
table_name
(column_name
data_type
(value
),column_name
data_type
(value
);Para obtener más información, consulte CREATE TABLE statement
en la documentación de IBM Db2. -
Cree un índice, inserte los valores de las filas en la tabla y restablezca la conexión. Al restablecer la conexión, se pierde la conexión, pero se conservan los procesos de backend. En el siguiente ejemplo, sustituya
index_name
,table_name
,column_name
ycolumnx_value
por su información.create index
index_name
ontable_name
(column_name
); insert intotable_name
values(column1_value
,column2_value
,column3_value
); insert intotable_name
values(column1_value
,column2_value
,column3_value
); set passthru reset; connect reset; -
Conéctese a su base de datos de Db2 remota, cree un apodo para su servidor remoto y realice operaciones. Cuando haya terminado de acceder a los datos de la base de datos remota de Db2, restablezca y, a continuación, finalice la conexión. En el ejemplo siguiente, sustituya
database_name
por el nombre de su base de datos de Db2 remota. Sustituyanickname
por un nombre. Sustituyaserver_name
ytable_name
por el nombre del servidor remoto y la tabla de ese servidor en los que quiera realizar operaciones. Sustituyausername
por la información de su servidor remoto. Sustituyasql_command
por la operación que se va a realizar en el servidor remoto.connect to
database_name
; create nicknamenickname
forserver_name
."username
"."table_name
"; selectsql_command
fromnickname
; connect reset; terminate;
Ejemplo
El siguiente ejemplo crea una sesión de transferencia para permitir las operaciones en el servidor federado de testdb10
.
Después, crea la tabla t1
con tres columnas con distintos tipos de datos.
A continuación, el ejemplo crea el índice i1_t1
en tres columnas de la tabla t1
. Después, inserta dos filas con los valores de estas tres columnas y, a continuación, se desconecta.
Por último, el ejemplo se conecta a la base de datos remota de Db2 testdb2
y se crea un apodo para la tabla t1
en el servidor federado testdb10
. Crea el apodo con el nombre de usuario TESTUSER
de ese origen de datos. Un comando de SQL genera todos los datos de la tabla t1
. El ejemplo desconecta y finaliza la sesión.
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;