1 LABORATÓRIO DE BASES DE DISTRIBUÍDAS DATOS Nelson Fabián Maníos Ascencio (EDBD), Gustavo Adolfo Martinez Misal (MIAD) UNIVERSIDAD JORGE TADEO LOZANO – BASES DE DATOS AVANZADAS nelsonf.maniosa@utadeo.edu.co,gustavoa.martinezm@utadeo.edu.co 1. Documentar el contenido del archivo TNSNAMES En el siguiente archivo tnsnames.ora identifique y documente los textos en rojo: ORCL: Nombre de la conexión a base de datos) = (DESCRIPTION: Conjunto de datos de la cadena de conexión) = (ADDRESS_LIST = (ADDRESS: Conjunto de Dirección IP, protocolo y puerto a usar) = (PROTOCOL = TCP) (HOST: Dirección ip del servidor de base de datos) = 172.xxx.xxx.xxx) (PORT: Puerto a usar por la instancia de base de datos) = 1521)) 2. Fragmentación Para el desarrollo del laboratorio usaremos el esquema de base de datos trabajado durante el curso con las relaciones EMP, ASG, PAY y PROJ. A. El esquema de fragmentación es: ● ASG se fragmenta a partir de los fragmentos de PROJ ASG1= (ASG PROJ1) ASG2= (ASG PROJ2) B. la fragmentación realizada en el literal a. de este punto, usando operadores de álgebra relacional reconstruya relaciones PROJ y ASG ● Teniendo en cuenta Tabla 1. Distribución de los fragmentos se reconstruye las relaciones PROJ y ASG. ASG = (ASG1 U ASG2) ) (CONNECT_DATA: Conjunto de datos del tipo de servidor y nombre de la instancia) = (SID: Nombre de instancia) = XXXX) (SERVER: Tipo de servidor = DEDICATED: Especificar que las solicitudes del cliente sean atendidas) PROJ = ( PROJ1 U PROJ2) 3. Ingresó a la base de datos de cada servidor. En este punto se ingresó con ayuda del usuario a cada servidor y así con el archivo de configuración y el servicio que en primera instancia se verifica que el estado de la conexión a 1 2 ● la base de datos sea correcta para poder así acceder y introducir datos logrando su respectiva consulta. A. Se establece la conexión con el usuario NYORK12, Se crea el usuario con su debida contraseña establecida anteriormente en el aula de clase; por lo tanto el estado de conexión aparece correctamente en la base de datos dando el visto bueno para poder continuar con la data. 4. Creación de objetos en los usuarios NYORKxx y PARISxx Con la ayuda del archivo extraíble se toma en cuenta la carpeta CreaOBJParis_final.sql y CrearOBJNY_final.SQL las cuales contiene una sentencia de selección a las tablas donde ofrece características a cada tipo de dato que se incluirá en las respectivas tablas que se crearán y se llevarán a cabo en el ejercicio. A. ● Se establece la conexión con el usuario PARIS12, Se crea el usuario con su debida contraseña establecida anteriormente en el aula de clase; por lo tanto el estado de conexión aparece correctamente en la base de datos dando el visto bueno para poder continuar con la data. ● B. B. Se usa la sentencia de CrearOBJNY_final.SQL con el respectivo usuario NYORK12 la cual se introduce de forma correcta para crear la tabla pay. B. 3 2. object_uri: Objeto o archivo URI. El formato del URI depende del servicio de almacenamiento de objetos en la nube que esté utilizando 3. directory_name: El nombre del directorio en la base de datos. Procedimientos con el USUARIO NYORK12 ● ● DBMS_CLOUD.CREATE_CREDENTIAL Se usa la sentencia de CreaOBJParis_final.sql con el respectivo usuario PARIS12 el cual se introduce de forma correcta para crear la tabla pay. 5. Configuración del ambiente distribuido Describir la sintaxis de las siguientes sentencias: DBMS_CLOUD.CREATE_CREDENTIAL: DBMS_CLOUD: Es un paquete de ORACLE para almacenar objetos en bases de datos alojadas en la nube Es necesario con el usuario y la respectiva contraseña para continuar con el proceso de creación de credencial. ● DBMS_CLOUD.GET_OBJECT CREATE_CREDENTIAL: 1. credential_name: nombre de la credencial que se almacenará, en este caso ‘DB_CRED_PARIS12’ 2. username: argumentos username y password juntos especifican sus credenciales de servicio en la nube en este ejemplo se utiliza ‘PARIS12’. 3. password: credenciales de servicio en la nube. DBMS_CLOUD.GET_OBJECT : GET_OBJECT 1. credential_name: nombre de la credencial que se almacenará, en este caso ‘DB_CRED_PARIS12’ Este procedimiento se usa las credenciales de PARIS00 teniendo en cuenta el objeto y el directorio ofrecido. ● select owner, credential_name, username, enabled from dba_credentials; 4 Se utiliza la sentencias de tipo cloud para realizar la conexión entre las dos instancias de la bases de datos desde el usuario NYORK12 y PARIS12. 6. Creación de Database Link Se utiliza la sentencias de tipo cloud para realizar la conexión entre las dos instancias de la bases de datos desde el usuario NYORK12 y PARIS12. A. Describa la sintaxis de la sentencia CREATE DATABASE LINK identifique similitudes y diferencias con la sentencia DBMS_CLOUD_ADMIN CREATE_DATABASE_LINK Procedimientos con el USUARIO PARIS12 ● DBMS_CLOUD.CREATE_CREDENTIAL Es necesario con el usuario y la respectiva contraseña para continuar con el proceso de creación de credencial. ● DBMS_CLOUD.GET_OBJECT Describa la sintaxis de la sentencia CREATE DATABASE LINK La sentencia CREATE DATABASE LINK es una declaración para crear un enlace de base de datos. Un enlace de base de datos es un objeto de esquema en una base de datos que le permite acceder a objetos en otra base de datos. La otra base de datos no necesita ser un sistema de base de datos Oracle. Sin embargo, para acceder a sistemas que no son de Oracle, debe usar los Servicios heterogéneos de Oracle. Después de haber creado un enlace a la base de datos, se puede usar para referirse a tablas y vistas en la otra base de datos. Se pueden consultar en una tabla o vista en la otra base de datos con la SELECT declaración. También puede acceder a tablas remotas y vistas utilizando cualquiera INSERT, UPDATE, DELETE, o LOCK TABLE comunicado. ● Sintaxis (Resumida de CREATE DATABASE LINK) Este procedimiento se usan las credenciales de NYORK00 teniendo en cuenta el objeto y el directorio ofrecido. ● select owner, credential_name, username, enabled from dba_credentials; CREATE [ SHARED ] [ PUBLIC ] DATABASE LINK dblink [ CONNECT TO { CURRENT_USER | user IDENTIFIED BY password [ dblink_authentication ] } 5 | dblink_authentication ] [ CONNECT TO { CURRENT_USER | user IDENTIFIED BY password [ dblink_authentication ] } | dblink_authentication ]... [ USING connect_string ] ; Describa la sintaxis de la sentencia DBMS_CLOUD_ADMIN. CREATE_DATABASE_LINK Se usa la sentencia DBMS_CLOUD_ADMIN.CREATE_DATABASE_LI NK para crear enlaces de bases de datos desde una base de datos autónoma a otra base de datos, no obstante permite acceder a los objetos de otra base de datos. También puede utilizarse para referirse a tablas y vistas de otra base de datos, siempre y cuando se haya creado el database. Algo muy importante es que para garantizar la seguridad, el puerto de enlace de la base de datos está restringido al rango 1521-1525.Es decir se especifica el puerto de la base de datos de destino cuando crea un enlace de base de datos con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK db_link_name => 'SALESLINK', hostname => 'adb.eu-frankfurt-1.or aclecloud.com', port => '1522', service_name => 'example_medium.adwc.example.oraclecloud.com', ssl_server_cert_dn => 'CN=adwc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US', credential_name => 'DB_LINK_CRED', directory_name => 'DATA_PUMP_DIR'); END; / Similitudes: ● las dos sentencias sql tiene como principal objetivo crear un enlace de conexión entre diferentes bases de datos, las cuales no necesariamente deben de ser de ORACLE. ● otra similitud es que por compatibilidad las dos sentencias usan protocolos de conexión de tipo tcp. Diferencias: ● ● Sintaxis (Sencillo de CREATE DATABASE LINK) en Oracle: BEGIN El procedimiento CREATE_DATABASE_LINK puede ser incluido como parte de un subprograma dentro de la cláusula DBMS_CLOUD_ADMIN. 6 B. Se Verifica que el DBLINK funciona revisando la estructura y contenido de las tablas ASG2 y PROJ2 que se encuentran en NYORK12, y se llevan a cabo las respectivas sentencias de forma correcta. ● Resultado de consulta consultado en la tabla ASG2 Resultado de consulta consultado en la tabla PROJ2 C. Se Verifica que el DBLINK funciona revisando la estructura y contenido de las tablas ASG2 y PROJ2 que se encuentran en PARIS12, y se llevan a cabo las respectivas sentencias de forma correcta. ● Resultado de consulta consultado en la tabla ASG1 7 ● Se Verifica que el DBLINK funciona revisando la estructura y contenido de las tablas ASG2 y PROJ2 que se encuentran en PARIS12, y se llevan a cabo las respectivas las sentencias de forma correcta. ● Resultado de consulta consultado en la tabla PROJ1 7. Actualización asincrónica de copias A. En Google revise y describa la sintaxis y el uso de las sentencias CREATE MATERIALIZED VIEW y CREATE MATERIALIZED VIEW LOG, ¿cuál son las diferencias? Documente las opciones. ● CREATE MATERIALIZED VIEW Una vista materializada, o instantánea como se conocía anteriormente, es un segmento de tabla cuyo contenido se 8 actualiza periódicamente en función de una consulta, ya sea en una tabla local o remota. que es una tabla asociada con la tabla maestra de una vista materializada. Un registro de vista materializada se encuentra en la base de datos maestra en el mismo esquema que la tabla maestra. Una tabla maestra solo puede tener un registro de vista materializado definido en ella. Oracle Database puede usar este registro de vista materializada para realizar actualizaciones rápidas para todas las vistas materializadas de actualización rápida basadas en la tabla maestra. (https://oracle-base.com/articles/misc/materialized-views) El anterior gráfico explica que el uso de vistas materializadas en tablas remotas es la forma más sencilla de lograr la replicación de datos entre sitios. Sintaxis https://oracle-base.com/articles/misc/materialized-views https://docs.oracle.com/cd/B28359_01/network.111/b28317/listener.htm#NETRF00 8) Diferencias principales ● CREATE MATERIALIZED VIEW LOG El propósito es usando CREATE MATERIALIZED VIEW LOG instrucción para crear un registro de vista materializada, ● Los privilegios necesarios para crear un registro de vista materializada se relacionan directamente con los privilegios, siempre y cuando 9 ● posea la tabla maestra, mientras que para crear el registro no es necesario. ● Funcionan operaciones. bajo distintos esquemas ● Realizar cambios en la tabla Proj2 de PARISxx, aplicar los cambios (Commit). Verificar los resultados. y La vista materializada contiene los resultados de una consulta, mientras la vista materializada de log crea el registro asociado a la vista materializada. Se realiza por el usuario PARIS12 la siguiente sentencia: B. En NYORKxx, a partir de los fragmentos de PROJ (Proy1, Proy2) reconstruya la relación original PROJ, para ello haga lo siguiente: ● En el sitio PARISxx revise el script vmprojlog.sql. Documéntelo. ¿Qué hace el script? Correr el script. ● En NYORKxx revise el script vmproj.sql. Ejecútelo en el usuario NYORKxx. Haga pruebas. Documente el script. Qué hace el script? En el anterior script lo que se realiza es una vista materializada con llave primaria seleccionando las tablas e insertando nuevos campos de tablas, el único fin es que se espera que en el usuario de Nyork12 se haya creado e insertado dicha vista materializada en tiempo real además de que se espera que sea consistente, así otorgando y verificando por parte del otro usuario que efectivamente se haya actualizado remotamente. / 10 D. En NYORKxx, a partir de los fragmentos de ASG (Asg1, Asg2) reconstruya la relación ASG Qué hace el script? • El script del usuario NYORK 12 realiza la creación de una vista materializada nombrada PROJ2, está vista se crea desde una tabla compartida desde el enlace generado anteriormente desde el dblink con la cuenta del usuario PARIS12, de igual manera se le asigna el procedimiento refresh fast, dado que desde el usuario parís se realiza un dml de insert de esta manera se puede actualizar los datos para la vista creada. • en la parte inferior del script se crea nuevamente otra vista, esta vez llamada PROJ, la cual resulta de realizar un join de tipo unión entre la vista materializada creada en el paso anterior la cual se nombró PROJ2, este fragmento se localizada en la instancia del usuario PARIS12; la otra parte del fragmento fue creado por el usuario NYORK12 tiene como nombre PROJ1, en realidad este procedimiento restaura en una vista la tabla con los datos formales; para finalizar se realiza un commit para confirmar las vistas creadas en la base de datos. • Se contempla creación completa respecto a la vista materializada. 11 8. Actualización asincrónica de copias controlada • Se realiza el mismo procedimiento para los fragmentos ASG1 Y ASG2 así se reconstruye la relación original ASG mediante la ejecución de una vista materializada. ● Se crea un procedimiento utilizando el API DBMS_JOB el cual actualiza las vistas realizadas en el punto 7 PROJ y ASG. 9. Actualización sincrónica de réplicas A. Revise los triggers tr0payparis y tr0payNY. Se intenta sincronizar los triggers con PAY que se encuentra en New York con la réplica en París. 12 ● Se realiza la sentencia correcta sincronizando los triggers con la tabla pay con el respectivo usuario NYORK12. ● se crea el trigger para la tabla emp desde el usuario PARIS12 para así dar una solución y sincronizar los Insert y Update. B. A partir de los triggers anteriores proponga una ● Se realiza la sentencia correcta sincronizando los triggers con PARIS12. solución para sincronizar los INSERT y UPDATE de la tabla EMP. 13 ● se crea el trigger para la tabla emp desde el usuario PARIS12 para así dar una solución y sincronizar los Insert y Update. 11. Escriba sus conclusiones y recomendaciones. ● Muy buen enfoque en cuanto a la fragmentación de datos entre la tablas de la bases de datos se aplica un buen ejercicio además de que se comprende cómo se lleva a cabo dicho procedimiento. ● Una conclusión quizás vital es que el tema de la sincronización en cuanto a las bases de datos posee bastante uso hoy día por las distintas organizaciones ya que se opta cada vez más tener información de distintas localizaciones de fuentes de datos. ● Respecto a las sintaxis de las vistas materializadas es que suelen variar dependiendo la base de datos y por lo tanto son muy apreciadas por los dba actuales para tener en cuenta en sus procesos cuando a optimización se trata. ● ● se crea el trigger para la tabla emp desde el usuario NYORK12 para así dar una solución y sincronizar los Insert y Update. En la dinámica organizacional actual donde existe una gran generación de datos, se buscan soluciones para dar una óptima recopilación de esta, es por esto que este tipo de estrategias tecnológica cumple de una manera dinámica y eficiente el aprovechamiento de la información. 14 12. Cibergrafia • https://docs.oracle.com/cd/B28359_01/n etwork.111/b28317/listener.htm#NETRF00 8 • https://docs.oracle.com/en/cloud/paas/a utonomous-data-warehousecloud/user/database-l inks.html • https://oracle-base.com/articles/misc/ma terialized-views • https://docs.oracle.com/en/cloud/paas/a utonomous-data-warehousecloud/user/database-l inks.html#GUID-28F06977-300F-4599-AD972 DEF67EF5FEA