SlideShare a Scribd company logo
1 of 12
Download to read offline
Universidad Técnica de Ambato
         Facultad de Ingeniería en Sistemas,
               Electrónica e Industrial




     CARRERA DE INGENIERÍA EN SISTEMAS
                                 Informe
                                  Tema:
                   BDLINK – VISTAS MAERIALIZADAS




    Carrera Universitaria: Sistemas Computacionales e Informáticos


    Semestre:                     Sexto Semestre

    Alumno participante:
                                  Juan Carlos Calvache

    Módulo:

                                  Base de Datos Distribuidos
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial
OBJETIVO:

      Utilizar bdlink para la conexión de una base de datos desde un
       cliente a un servidor.
      Aplicar el conocimiento anterior y obtener vistas materializadas
       desde un cliente.



MARCO TEORICO:

                                       CREATE DATABASE LINK

El CREATE DATABASE LINK es una instrucció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 los objetos de otra base de datos. La
otra base de datos no tiene que ser un sistema de base de datos
Oracle. Sin embargo, para acceder a los sistemas Oracle no es necesario
utilizar los servicios de Oracle heterogéneos.

Una vez que haya creado un enlace de base de datos, se puede utilizar
para hacer referencia a las tablas y vistas de la base de datos. En las
sentencias de SQL, puede hacer referencia a una tabla o vista en la base
de datos distinta añadiendo @ dblink a la tabla o nombre de vista. Puede
consultar   una   tabla   o    vista   en   la   base   de   datos    con
el SELECT comunicado. También puede acceder a tablas remotas y vistas
usando cualquier INSERT, ACTUALIZACIÓN, DELETE, o LOCK TABLA comunicado.




AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial




Comandos varios que se utilizan para un dlink

CREATE DATABASE LINK local

    CONNECT TO nombre_usuario IDENTIFIED BY clave_usuario

    USING 'local'; ==> el nombre del sid en mi caso XE



SELECT * FROM employees@local;



INSERT INTO employees@local

    (employee_id, last_name, email, hire_date, job_id)

    VALUES (999, 'Claus', 'sclaus@oracle.com', SYSDATE, 'SH_CLERK');



UPDATE jobs@local SET min_salary = 3000

    WHERE job_id = 'SH_CLERK';



DELETE FROM employees@local

    WHERE employee_id = 999;



drop database link local o drop public database link local

                                      VISTAS MATERIALIZADAS

A diferencia de las vistas "normales" una vista materializada almacena
físicamente los datos resultantes de ejecutar la consulta definida en la
vista. Este tipo de vistas materializadas realizan una carga inicial de
los datos cuando se definen y posteriormente con una frecuencia
establecida se actualizan los datos de la misma.Con la utilización de
vistas   materializadas  logramos   aumentar   el  rendimiento  de   las
consultas SQL además de ser un método de optimización a nivel físico en
modelos de datos muy complejos y/o con muchos datos.

Una vez definida una vista materializada uno de los problemas que nos
encontramos es el de la actualización de los datos. Como se ha comentado
antes, estas vistas contienen fisicamente los datos de las "tablas
AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial
base", por lo que si cambian los datos de estas tablas no se reflejarán
en la vista materializada. Para ello necesitamos establecer un mecanismo
de resfresco automático en el que tendremos que definir el tipo y
la forma de refresco.

La sentencia SQL que             nos    permite        definir       una     vista       materializada        es
esta:

   1. CREATE MATERIALIZED VIEW nombre_vista
   2.   [TABLESPACE nombre_ts]
   3.   [PARALELL (DEGREE n)]
   4.   [BUILD {INMEDIATE|DEFERRED}]
   5.   [REFRESH {FAST|COMPLETE|FORCE|NEVER}|{ON COMMIT|ON DEMAND|[START WITH fecha_inicio] NEXT interva
      lo}]
   6.   [{ENABLE|DISABLE} QUERY REWRITE]
   7.   AS SELECT ... FROM ... WHERE ...




Con la palabra BUILD establecemos la forma de carga de datos en la
vista. Con la opción INMEDIATE (opción por defecto) se cargarán los
datos justo después de crear la vista, mientras que con la
opción DEFERRED se   definirá   la   vista   cuando   se   ejecute   la
sentencia SQL sin cargar ningún dato, que se cargarán cuando se realize
el primer refresco de la vista.

Con la palabra REFRESH definimos el método y la frecuencia de refresco
de los datos.

La palabra QUERY REWRITE establece si queremos que el optimizador de
nuestra base de datos pueda reescribir las consultas. El optimizador,
sabiendo que ya existe una determinada vista materializada, puede
modificar internamente nuestra consulta sobre una determinada tabla, de
tal forma que se mejore el rendimiento de la consulta devolviendo los
mismos datos que la consulta original.

Refresco

Como es entendible la política de refresco de cada vista repende
altamente de nuestras necesidades y requerimientos sobre la frecuencia
de actualización de los datos de las "tablas base".

Tipos de refresco

      COMPLETE: Se borrarán todos los datos de la vista y se volverá a
       ejecutar la consulta definida en la vista por lo que se recargarán
       físicamente los datos de las "tablas base".
      FAST: Podemos decir que este tipo de refresco es una actualización
       incremental, es decir, solo se refrescarán aquellos datos que se
       hayan modificado desde el último refresco. Evidentemente este tipo
       de refresco es mucho más fast que el complete. Pero, ¿cómo sabe la
       base de datos que datos se han modificado desde el último refresco?
       lo sabe gracias a que previamente hemos tenido que crear unos
AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial
       determinados log de la vista (VIEWLOG)                             sobre          cada   una    de    las
       "tablas base" de la vista materializada.



           1. CREATE MATERIALIZED VIEW LOG ON tabla_base
           2.   WITH PRIMARY KEY
           3.   INCLUDING NEW VALUES;




       Hay que decir que si usamos funciones sum, avg, max, min, etcétera,
       no vamos a poder usar este tipo de refresco.

      FORCE :     si se puede realizar el refresco tipo FAST se ejecuta, y
       sino se     realiza el refresco COMPLETE. Es el valor por defecto del
       tipo de     refresco.
      NEVER :     nunca se realizará un refresco de la vista.

Formas de refresco

      Refresco manual : mediante el paquete de PL/SQL DBMS_MVIEW podemos
       forzar a realizar un refresco usando para ello la función REFRESH.



           1. DBMS_MVIEW.REFRESH ('nombre_vista');
           2.




       Con la función REFRESH_DEPENDENT se refrescarán todas las vistas
       materializadas que tengan algunas de sus "tablas base" en la lista
       de tablas pasada como parámetro de entrada.



           1. DBMS_MVIEW.REFRESH_DEPENDENT ('tabla1, tabla2, tabla3, ... , tablaN');
           2.




       Con la función REFRESH_ALL_MVIEWS se refrescarán todas las vistas
       materializadas de nuestra base de datos.

      Refresco automático: este refresco automático podemos hacerlo
       usando la palabra ON COMMIT, con la que se fuerza al refresco de la
       vista en el momento en el que se haga un commit sobre una de las
       "tablas base" de dicha vista. Otro tipo de refresco automático es
       el llamado refresco programado, en el cual podemos definir el
       momento exacto en el que queremos que se refresque nuestra vista.
       Para   ello  tenemos   que  definir   la  fecha  del   refresco  en
       formate datetime y el intervalo de este.
AUTOR: Calvache Juan Carlos
                                                                                          juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial


PRACTICA:
Para la práctica siguiente hay que aclarar que se lo realizara en dos
máquinas virtuales las cuales se encuentran en red y con un sistema
operativo Windows 7 de 32 bits.

La máquina llamada Windows 7 sp2 se tomara como servidor mientras que la
máquina Windows 7 sp1 se utilizará como cliente.

Lo primero que se debe hacer es verificar la conexión entre el servidor
Oracle y el cliente.

Servidor ip = 192.168.1.5

Cliente ip = 192.168.1.6




Configuramos el tsnames en el cliente




AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial




Luego configuramos el listener




Nos conectamos desde el cliente al servidor y comprobamos la conexión
visualizando la tabla del servidor.




AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial




Como vemos el en servidor esta creada la tabla prueba con su único campo
llamado A de tipo number.

Observamos que el cliente, se conecta correctamente y describe la tabla
del servido.



Luego procedemos a insertar datos remotamente esto quiere decir desde el
cliente.




AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial
Verificamos si los datos se han insertado correctamente en el servidor.
Esta verificación la hacemos en el servidor utilizando un select simple.




A continuación vamos a crear el bdlink desde el cliente.




Comprobamos el bdlink y hacemos un select de la tabla prueba de la
siguiente manera.
AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial




Luego procedemos a crear la vista materializada de la siguiente manera.




Comprobamos la vista materializada haciendo un select.




AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                          Facultad de Ingeniería en Sistemas, Electrónica e Industrial




Probamos la vista materializada desconectándonos del servidor y conectándonos
localmente en el cliente como system, la comprobación la hacemos de la misma
manera con un select.




CONCLUSIONES:

Con la práctica realizada hemos comprobado que el bdlink sirve mucho para
hacer conexiones remotas entre cliente servidor, y así poder utilizar un select
sin la necesidad de hacer conexión al servidor.

Además con las vistas materializadas hacemos un select a una tabla en el
servidor y luego de desconectarnos los datos quedan grabados en el cliente y
podemos visualizarlos sin necesidad de conectarnos nuevamente al servidor.

BIBLIOGRAFÍA:
AUTOR: Calvache Juan Carlos
                                                                                         juankcalvache@hotmail.es
UNIVERSIDAD TECNICA DE AMBATO
                           Facultad de Ingeniería en Sistemas, Electrónica e Industrial
http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm

http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_5005.htm

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=vistasMaterializadas

http://www.oracleya.com.ar/temarios/descripcion.php?cod=248&punto=90




AUTOR: Calvache Juan Carlos
                                                                                          juankcalvache@hotmail.es

More Related Content

What's hot

Sap abap ale idoc
Sap abap ale idocSap abap ale idoc
Sap abap ale idoc
Bunty Jain
 

What's hot (20)

Version management of abap programs
Version management of abap programsVersion management of abap programs
Version management of abap programs
 
Exercise in alv
Exercise in alvExercise in alv
Exercise in alv
 
Introduction to fa and dfa
Introduction to fa  and dfaIntroduction to fa  and dfa
Introduction to fa and dfa
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Context free grammar
Context free grammarContext free grammar
Context free grammar
 
Computing Project
Computing Project Computing Project
Computing Project
 
Pseint
PseintPseint
Pseint
 
Technical Overview of CDS View - SAP HANA Part II
Technical Overview of CDS View - SAP HANA Part IITechnical Overview of CDS View - SAP HANA Part II
Technical Overview of CDS View - SAP HANA Part II
 
List Processing in ABAP
List Processing in ABAPList Processing in ABAP
List Processing in ABAP
 
Algoritmo enjambre de abejas
Algoritmo enjambre de abejasAlgoritmo enjambre de abejas
Algoritmo enjambre de abejas
 
dbms lab manual
dbms lab manualdbms lab manual
dbms lab manual
 
33 col2 301405
33 col2 30140533 col2 301405
33 col2 301405
 
Software engineering practical
Software engineering practicalSoftware engineering practical
Software engineering practical
 
Sap abap ale idoc
Sap abap ale idocSap abap ale idoc
Sap abap ale idoc
 
Analysis modelling
Analysis modellingAnalysis modelling
Analysis modelling
 
Workbench and customising request
Workbench and customising requestWorkbench and customising request
Workbench and customising request
 
Dialog Programming Overview
Dialog Programming OverviewDialog Programming Overview
Dialog Programming Overview
 
DBMS Assignments Questions
DBMS Assignments QuestionsDBMS Assignments Questions
DBMS Assignments Questions
 
Manuel torres mapa_mental
Manuel torres mapa_mentalManuel torres mapa_mental
Manuel torres mapa_mental
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 

Similar to bdlink vistas materializadas

Replicacion de datos en Oracle
Replicacion de datos en OracleReplicacion de datos en Oracle
Replicacion de datos en Oracle
Jenny Palma
 
curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2
greenpeans
 

Similar to bdlink vistas materializadas (20)

SNAPSHOT – MEZCLA - TRANSACCIONAL)
SNAPSHOT – MEZCLA - TRANSACCIONAL)SNAPSHOT – MEZCLA - TRANSACCIONAL)
SNAPSHOT – MEZCLA - TRANSACCIONAL)
 
Java con base de datos
Java con base  de datosJava con base  de datos
Java con base de datos
 
JDBC (Java Database Connectivity)
JDBC (Java Database Connectivity)JDBC (Java Database Connectivity)
JDBC (Java Database Connectivity)
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
JDBC
JDBCJDBC
JDBC
 
Replicacion de datos en Oracle
Replicacion de datos en OracleReplicacion de datos en Oracle
Replicacion de datos en Oracle
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012
 
curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2
 
Linq to sql 6
Linq to sql 6Linq to sql 6
Linq to sql 6
 
Entornos apex onpremise
Entornos apex onpremiseEntornos apex onpremise
Entornos apex onpremise
 
Linq to sql 2
Linq to sql 2Linq to sql 2
Linq to sql 2
 
Jdbc
JdbcJdbc
Jdbc
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Manual basico
Manual basicoManual basico
Manual basico
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
 
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
Fundamentos de Sistemas de Base de Datos (Capítulo 9 y 10)
 

Recently uploaded

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
NancyLoaa
 

Recently uploaded (20)

Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 

bdlink vistas materializadas

  • 1. Universidad Técnica de Ambato Facultad de Ingeniería en Sistemas, Electrónica e Industrial CARRERA DE INGENIERÍA EN SISTEMAS Informe Tema: BDLINK – VISTAS MAERIALIZADAS Carrera Universitaria: Sistemas Computacionales e Informáticos Semestre: Sexto Semestre Alumno participante: Juan Carlos Calvache Módulo: Base de Datos Distribuidos
  • 2. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial OBJETIVO:  Utilizar bdlink para la conexión de una base de datos desde un cliente a un servidor.  Aplicar el conocimiento anterior y obtener vistas materializadas desde un cliente. MARCO TEORICO: CREATE DATABASE LINK El CREATE DATABASE LINK es una instrucció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 los objetos de otra base de datos. La otra base de datos no tiene que ser un sistema de base de datos Oracle. Sin embargo, para acceder a los sistemas Oracle no es necesario utilizar los servicios de Oracle heterogéneos. Una vez que haya creado un enlace de base de datos, se puede utilizar para hacer referencia a las tablas y vistas de la base de datos. En las sentencias de SQL, puede hacer referencia a una tabla o vista en la base de datos distinta añadiendo @ dblink a la tabla o nombre de vista. Puede consultar una tabla o vista en la base de datos con el SELECT comunicado. También puede acceder a tablas remotas y vistas usando cualquier INSERT, ACTUALIZACIÓN, DELETE, o LOCK TABLA comunicado. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 3. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Comandos varios que se utilizan para un dlink CREATE DATABASE LINK local CONNECT TO nombre_usuario IDENTIFIED BY clave_usuario USING 'local'; ==> el nombre del sid en mi caso XE SELECT * FROM employees@local; INSERT INTO employees@local (employee_id, last_name, email, hire_date, job_id) VALUES (999, 'Claus', 'sclaus@oracle.com', SYSDATE, 'SH_CLERK'); UPDATE jobs@local SET min_salary = 3000 WHERE job_id = 'SH_CLERK'; DELETE FROM employees@local WHERE employee_id = 999; drop database link local o drop public database link local VISTAS MATERIALIZADAS A diferencia de las vistas "normales" una vista materializada almacena físicamente los datos resultantes de ejecutar la consulta definida en la vista. Este tipo de vistas materializadas realizan una carga inicial de los datos cuando se definen y posteriormente con una frecuencia establecida se actualizan los datos de la misma.Con la utilización de vistas materializadas logramos aumentar el rendimiento de las consultas SQL además de ser un método de optimización a nivel físico en modelos de datos muy complejos y/o con muchos datos. Una vez definida una vista materializada uno de los problemas que nos encontramos es el de la actualización de los datos. Como se ha comentado antes, estas vistas contienen fisicamente los datos de las "tablas AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 4. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial base", por lo que si cambian los datos de estas tablas no se reflejarán en la vista materializada. Para ello necesitamos establecer un mecanismo de resfresco automático en el que tendremos que definir el tipo y la forma de refresco. La sentencia SQL que nos permite definir una vista materializada es esta: 1. CREATE MATERIALIZED VIEW nombre_vista 2. [TABLESPACE nombre_ts] 3. [PARALELL (DEGREE n)] 4. [BUILD {INMEDIATE|DEFERRED}] 5. [REFRESH {FAST|COMPLETE|FORCE|NEVER}|{ON COMMIT|ON DEMAND|[START WITH fecha_inicio] NEXT interva lo}] 6. [{ENABLE|DISABLE} QUERY REWRITE] 7. AS SELECT ... FROM ... WHERE ... Con la palabra BUILD establecemos la forma de carga de datos en la vista. Con la opción INMEDIATE (opción por defecto) se cargarán los datos justo después de crear la vista, mientras que con la opción DEFERRED se definirá la vista cuando se ejecute la sentencia SQL sin cargar ningún dato, que se cargarán cuando se realize el primer refresco de la vista. Con la palabra REFRESH definimos el método y la frecuencia de refresco de los datos. La palabra QUERY REWRITE establece si queremos que el optimizador de nuestra base de datos pueda reescribir las consultas. El optimizador, sabiendo que ya existe una determinada vista materializada, puede modificar internamente nuestra consulta sobre una determinada tabla, de tal forma que se mejore el rendimiento de la consulta devolviendo los mismos datos que la consulta original. Refresco Como es entendible la política de refresco de cada vista repende altamente de nuestras necesidades y requerimientos sobre la frecuencia de actualización de los datos de las "tablas base". Tipos de refresco  COMPLETE: Se borrarán todos los datos de la vista y se volverá a ejecutar la consulta definida en la vista por lo que se recargarán físicamente los datos de las "tablas base".  FAST: Podemos decir que este tipo de refresco es una actualización incremental, es decir, solo se refrescarán aquellos datos que se hayan modificado desde el último refresco. Evidentemente este tipo de refresco es mucho más fast que el complete. Pero, ¿cómo sabe la base de datos que datos se han modificado desde el último refresco? lo sabe gracias a que previamente hemos tenido que crear unos AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 5. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial determinados log de la vista (VIEWLOG) sobre cada una de las "tablas base" de la vista materializada. 1. CREATE MATERIALIZED VIEW LOG ON tabla_base 2. WITH PRIMARY KEY 3. INCLUDING NEW VALUES; Hay que decir que si usamos funciones sum, avg, max, min, etcétera, no vamos a poder usar este tipo de refresco.  FORCE : si se puede realizar el refresco tipo FAST se ejecuta, y sino se realiza el refresco COMPLETE. Es el valor por defecto del tipo de refresco.  NEVER : nunca se realizará un refresco de la vista. Formas de refresco  Refresco manual : mediante el paquete de PL/SQL DBMS_MVIEW podemos forzar a realizar un refresco usando para ello la función REFRESH. 1. DBMS_MVIEW.REFRESH ('nombre_vista'); 2. Con la función REFRESH_DEPENDENT se refrescarán todas las vistas materializadas que tengan algunas de sus "tablas base" en la lista de tablas pasada como parámetro de entrada. 1. DBMS_MVIEW.REFRESH_DEPENDENT ('tabla1, tabla2, tabla3, ... , tablaN'); 2. Con la función REFRESH_ALL_MVIEWS se refrescarán todas las vistas materializadas de nuestra base de datos.  Refresco automático: este refresco automático podemos hacerlo usando la palabra ON COMMIT, con la que se fuerza al refresco de la vista en el momento en el que se haga un commit sobre una de las "tablas base" de dicha vista. Otro tipo de refresco automático es el llamado refresco programado, en el cual podemos definir el momento exacto en el que queremos que se refresque nuestra vista. Para ello tenemos que definir la fecha del refresco en formate datetime y el intervalo de este. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 6. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial PRACTICA: Para la práctica siguiente hay que aclarar que se lo realizara en dos máquinas virtuales las cuales se encuentran en red y con un sistema operativo Windows 7 de 32 bits. La máquina llamada Windows 7 sp2 se tomara como servidor mientras que la máquina Windows 7 sp1 se utilizará como cliente. Lo primero que se debe hacer es verificar la conexión entre el servidor Oracle y el cliente. Servidor ip = 192.168.1.5 Cliente ip = 192.168.1.6 Configuramos el tsnames en el cliente AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 7. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Luego configuramos el listener Nos conectamos desde el cliente al servidor y comprobamos la conexión visualizando la tabla del servidor. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 8. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Como vemos el en servidor esta creada la tabla prueba con su único campo llamado A de tipo number. Observamos que el cliente, se conecta correctamente y describe la tabla del servido. Luego procedemos a insertar datos remotamente esto quiere decir desde el cliente. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 9. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Verificamos si los datos se han insertado correctamente en el servidor. Esta verificación la hacemos en el servidor utilizando un select simple. A continuación vamos a crear el bdlink desde el cliente. Comprobamos el bdlink y hacemos un select de la tabla prueba de la siguiente manera. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 10. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Luego procedemos a crear la vista materializada de la siguiente manera. Comprobamos la vista materializada haciendo un select. AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 11. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial Probamos la vista materializada desconectándonos del servidor y conectándonos localmente en el cliente como system, la comprobación la hacemos de la misma manera con un select. CONCLUSIONES: Con la práctica realizada hemos comprobado que el bdlink sirve mucho para hacer conexiones remotas entre cliente servidor, y así poder utilizar un select sin la necesidad de hacer conexión al servidor. Además con las vistas materializadas hacemos un select a una tabla en el servidor y luego de desconectarnos los datos quedan grabados en el cliente y podemos visualizarlos sin necesidad de conectarnos nuevamente al servidor. BIBLIOGRAFÍA: AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es
  • 12. UNIVERSIDAD TECNICA DE AMBATO Facultad de Ingeniería en Sistemas, Electrónica e Industrial http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_5005.htm http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=vistasMaterializadas http://www.oracleya.com.ar/temarios/descripcion.php?cod=248&punto=90 AUTOR: Calvache Juan Carlos juankcalvache@hotmail.es