Paralelismo con Oracle Datapump - Newsletter

Transcripción

Paralelismo con Oracle Datapump - Newsletter
Newsletter – Enero 2013
Paralelismo con Oracle Datapump
Contenido
Página:
1 Paralelismo con Oracle
Datapump
3 Descargar un archivo en el
cliente con ADF 11g
7 Topologías de Oracle
Por Ing. Manuel Carrillo
[email protected]
A partir de la versión 10g, Oracle Enterprise Edition provee la capacidad de
paralelizar los procesos encargados de carga y descarga de datos y metadatos de
una base de datos a otra. Éstas son algunas de las características y
recomendaciones de dicha función.
Características
Oracle Datapump crea un proceso maestro (MCP) de control cuando se especifica
el parámetro “PARALLEL” ya sea en export o import. Dicho proceso controla todo
el trabajo de export/import, incluyendo la comunicación con el cliente, el inicio y
control del spool de procesos de tipo “worker process”, y otros.
Coherence Parte 1
5a. Ave. 5-55 Zona14,Edificio Euro Plaza Torre II, Nivel 12
Editores
Generales
Teléfono:
(502)2364-5300Fax:
(502)2364-5311
Pagina 1/10
[email protected]
Deiby Mauricio Gómez
Px1
Alejandro Lau
Debbie Morán
Autores
Contribuyentes
PXn
Master
Coordinator
Process
PX2
Manuel Carrillo
Jonathan Morales
Deiby Gómez
PX3
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 1
El proceso maestro creará un spool de procesos de tipo “worker process (PX)” acorde al número
especificado por el parámetro “PARALLEL” en la sintaxis de datapump. El nivel de paralelismo
puede ser incrementado o disminuido de manera dinámica en cualquier punto del trabajo. Esto se
hace desde la línea de comando de Oracle Datapump.
Si se cuenta con un entorno RAC, tanto los procesos de tipo “worker” como el coordinador de los
mismos sólo pueden ser creados en la instancia en donde el trabajo inició originalmente.
Recomendaciones


Coloque el grado de paralelismo a dos veces el número de CPUs, luego puede mejorarse a
partir de este punto.
Para el Export Datapump, el parámetro PARALLEL debe ser menor o igual al número de
archivos DMP a utilizar, un ejemplo es el siguiente:
expdp user=orcl parallel=4 DIRECTORY=dir DUMPFILE=expdata%U.dmp
En este caso, se generarán 4 archivos “.dmp” en el directorio especificado por la cláusula
“DIRECTORY”.

Para el caso de Import Datapump, el parámetro PARALLEL no debería ser mucho mayor al
número de archivos obtenidos con Export.
Tip técnico del día:
¿Sabía que cuando realiza una instalación con Oracle Universal Installer (OUI) de tipo
“Personalizada”, la versión que se instala es “Enterprise Edition”?
Por Ing. Deiby Gómez
[email protected]
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 2
Descargar un archivo en el cliente con ADF 11g
Por Ing. Jonathan Morales
[email protected]
Una tarea muy común en las aplicaciones web es la descarga de archivos en la máquina del
usuario. Estos archivos pueden ser plantillas, formularios, documentos informativos, etc., los cuales
pueden ser de diverso tipo (xls, pdf, doc, txt, etc.). La generación de los mismos puede ser
dinámica, o puede ya existir alguna carpeta a la cual se tiene acceso desde el servidor de
aplicaciones donde está desplegada la aplicación que ofrecerá la funcionalidad de descarga.
Existen diversas formas de llevar a cabo esta tarea; en esta ocasión se presenta una forma sencilla
y rápida de realizar la descarga de archivos con Oracle ADF 11g, mediante el componente
fileDownloadActionListener, el cual nos ofrece esta facilidad.
A continuación se mostrará como implementarlo para descargar un archivo de MS Excel (.xls)
desde el navegador del usuario, pero puede aplicarse para diversas extensiones o tipos de
archivos.
Asunciones y consideraciones:


Se asume que el archivo para descargar ya existe en el servidor. Para efectos de ejemplo el
archivo ya ha sido creado y está ubicado en “C:\prueba.xls”, pero puede crearse
dinámicamente dependiendo de la lógica de la aplicación. El uso de archivos estáticos es
común para aplicaciones que desean descargar formularios o archivos informativos.
El archivo puede residir en cualquier ubicación, pero debe tenerse acceso a él desde el
servidor de aplicaciones.
Procedimiento
1. Se utilizará un af:commandButton para invocar la descarga del archivo.
2. Se agrega el listener para descarga en el botón recién creado. Para ello, click derecho en el
botón -> Insert inside Button -> ADF Faces.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 3
3. Se abrirá una ventana para elegir el componente para insertar, debe seleccionarse File
Download Action Listener, tal como se muestra a continuación.
4. Una vez agregado el fileDownloadActionListener al botón, se utilizarán tres propiedades de
este componente:
a. ContentType: el tipo de archivo que será reconocido al descargarse.
b. Filename: el nombre del archivo con el que se descargará (notar que puede ser distinto al
nombre del archivo origen que existe en el servidor).
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 4
c.
Method: el método que devuelve el archivo como un outputStream. Este método tiene la
forma:
public void descargarDocumento(FacesContext facesContext,
OutputStream outputStream) throws
IOException {
…..
}
5. Para obtener el archivo, se tiene un backing bean, con lo siguiente:
DescargaBean.java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.faces.context.FacesContext;
public class DescargaBean {
private String fileName;
public DescargaBean() { }
public void setFileName(String fileName) {
this.fileName = fileName; }
public String getFileName() {
return "archivoDescarga.xls";
}
public void descargarDocumento(FacesContext facesContext,
OutputStream outputStream) throws
IOException {
String filename = "C:\\prueba.xls";
System.out.println("Descargando archivo ... " + filename);
File f = new File(filename);
FileInputStream fis;
byte[] b;
try {
fis = new FileInputStream(f);
int n;
while ((n = fis.available()) > 0) {
b = new byte[n];
int res = fis.read(b);
outputStream.write(b, 0, b.length);
if (res == -1)
break;
}
} catch (IOException e) {
e.printStackTrace();
}
outputStream.flush();
}
}
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 5
6. Ya creados los métodos anteriores, las propiedades de fileDownloadActionListener se
colocan como sigue:
a. ContentType: application/vnd.ms-excel, ya que en este ejemplo el archivo es de MS
Excel (xls).
Para otros formatos debe colocarse el ContentType correspondiente al archivo para
descargar, esto es debido a que si el usuario elige abrir directamente el archivo se lance la
aplicación correspondiente para ejecutarse.
b. Filename: se obtiene del backing bean.
c. Method: Para esta propiedad se elige Edit, con lo que puede seleccionarse el método que
devuelve el archivo.
7. Listo, al ejecutarse la aplicación y presionar el botón, descargará el archivo en la máquina del
usuario dependiendo de las configuraciones del navegador web (descarga directa a un
directorio o preguntar si desea guardarse o abrirse).
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 6
Topologías de Oracle Coherence Parte 1
Por Ing. Deiby Gómez
[email protected]
Introducción a Oracle Coherence
Oracle Coherence es un producto dentro de Fusion Middleware que permite crear redes de datos
en memoria para agilizar las lecturas/escrituras de nuestros objetos, esto sin descuidar la
confiabilidad, accesibilidad y seguridad de los datos. Coherence también es una solución
escalable, la capacidad de memoria puede llegar a ser tan grande como se requiera, solo es
necesario agregar más nodos a la configuración.
¿La disponibilidad es importante?
El tema de la disponibilidad se subestima en la vida real, esto es un error. La disponibilidad de
nuestros datos debe ser un tema de mucha importancia, podemos establecer la disponibilidad
como un “todo”, a esto le llamaremos la "Disponibilidad del Sistema".
La disponibilidad del sistema puede ser definida como el producto de la disponibilidad de cada
componente que está dentro de nuestro sistema.
DS=DC1*DC2*DC3*….*DCn
Donde:
DS = Probabilidad de Disponibilidad del Sistema
DC1 = Probabilidad de Disponibilidad del Componente 1
DCn = Probabilidad de Disponibilidad del Componente n
Por ejemplo, si tuviéramos los siguientes componentes:



Servidor Web
Servidor de aplicaciones
Servidor de base de datos
Y cada uno de los anteriores componentes tuviera una disponibilidad del 99%, entonces se espera
que la Disponibilidad del Sistema (DS) sea la siguiente:
DS = 0.99*0.99*0.99 = 0.97 = 97%
Si usted considera que su empresa puede tolerar un sistema con disponibilidad del 97%, está bien.
Sin embargo, debe tomar en cuenta que 3% sin disponibilidad equivale a 11 días al año. ¿Acepta
su empresa 11 días al año sin servicio?
Existen dos maneras de mejorar la disponibilidad de nuestro sistema:
1. Desacoplar componentes: Para tener componentes aislados dentro de nuestro sistema, de
tal manera que si un componente falla no afecte a los demás y en consecuencia … no afecte
al sistema.
Coherence logra tener componentes desacoplados introduciendo el concepto de operaciones
asincrónicas. Esto permite que aunque la capa de datos este inaccesible, Coherence seguirá
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 7
aceptando operaciones de lectura/escritura. Las escrituras las irá encolando de tal manera
que cuando la capa de datos este nuevamente disponible se realicen las operaciones sobre
ella. Esto trae como beneficio que una falla de base de datos sea totalmente transparente al
usuario final.
Sin embargo, hay que tomar en cuenta los siguientes puntos:

La base de datos no debe ser usada por más de una aplicación. Al tener las escrituras de
manera asíncronas puede haber conflictos entre las escrituras de las demás aplicaciones.

Cada vez que un usuario necesite consultar datos “viejos”, se deben refrescar esos
elementos de manera síncrona, lo cual agrega un pequeño costo a la lectura.

Si toda la configuración de Coherence se cae, las operaciones asíncronas encoladas se
perderán pues todo está en memoria. Entiéndase “toda” la configuración como todas las
maquinas virtuales de java en todos los servidores involucrados en la configuración de
Coherence, incluidos sus backups. Esto es muy poco probable, sin embargo, es necesario
dejarlo claro.
2. Redundancia en los componentes: Si usted quiere alcanzar una alta disponibilidad de
manera síncrona, la única alternativa es aumentar la redundancia de los componentes.
Sin embargo, la redundancia no es suficiente para lograr una disponibilidad del 100%. Para
comprobar esto calculemos la probabilidad de falla de todo un conjunto de componentes
redundantes:
FCC = FC1*FC2*…*FCn
donde
FCC = Probabilidad de Falla del Conjunto de Componentes redundantes
FC1 = Probabilidad de Falla del Componente 1
FCn = Probabilidad de Falla del Componente n
Haciendo uso del dato “Disponibilidad de un Componente” podemos calcular su Probabilidad
de Falla:
FC = 1 - DC
donde
FC = Probabilidad de Falla de un Componente
DC = Probabilidad de Disponibilidad de un Componente
Por ejemplo, nuestro componente Servidor de Aplicaciones tiene una disponibilidad del 99%,
entonces su Probabilidad de Falla es:
FC = 1 - 0.99 = 0.01
Si a este componente le agregamos un Servidor de Aplicaciones de tal manera que nuestro
componente ahora sea redundante, tendríamos la siguiente Probabilidad de Disponibilidad:
DC = 1 - (0.01*0.01) = 1 - 0.0001 = 0.9999 = 99.99%
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 8
Si a cada uno de los dos componentes restantes que tenemos en nuestro Sistema (Servidor
Web y Servidor de Bases de Datos) le agregamos un servidor de tal manera que sean ahora
redundantes, la disponibilidad de cada componente quedaría de la siguiente manera:



Servidor Web
Servidor de Aplicaciones
Servidor de Base de Datos
=
=
=
99.99%
99.99%
99.99%
Entonces la Disponibilidad de todo nuestro Sistema quedaría de la siguiente manera:
DS = 0.9999*0.9999*0.9999 = 0.9997 = 99.97%
Y la probabilidad de falla de todo nuestro Sistema quedaría así:
FS = 1 - 0.9997 = 0.0003 = 0.03%
Conclusión:


Sin redundancia, nuestro sistema tendría 11 días sin servicio al año.
Con redundancia (un componente más), nuestro sistema tiene solamente 2.6 horas al año
sin servicio.
Reestructuro mi pregunta anterior: ¿Acepta su empresa 2.6 horas al año sin servicio?
2.6 horas al año sin servido es un dato relativamente aceptable, sin embargo ¡no es 100% de
Disponibilidad!
Por intuición vemos que el 100% de Disponibilidad lo vamos alcanzando proporcionalmente a
la redundancia que se le dé a cada componente, pero así ya tendríamos que involucrar el
factor costo. ¿Existe alguna alternativa que nos alivié la compra de N componentes
redundantes? ¡Sí, Oracle Coherence!
Arquitectura de Oracle Coherence:
Oracle Coherence trabaja con una arquitectura de “Cluster”.
Esta definición ya es muy conocida, sin embargo, a continuación expongo la definición formal:
Cluster: Es un conjunto de componentes interconectados entre sí trabajando como uno solo.
Un cluster de Oracle Coherence está formado por varios “servidores Coherence” que no son más
que instancias de maquinas virtuales java.
Cada una de estos servidores puede alojar datos de varias maneras, las cuales dependen de los
siguientes factores principales:





¿Sus aplicaciones realizan muchas lecturas?
¿Sus aplicaciones realizan muchas escrituras?
¿Sus aplicaciones toleran leer datos que no están a la fecha?
¿Sus aplicaciones necesitan tener los datos altamente seguros?
¿Es muy grande la cantidad de datos que manejan sus aplicaciones?
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 9

¿Utiliza SUN JDK u Oracle JRockit?
Dependiendo de las respuestas que se les dé a cada una de las preguntas anteriores, se puede
elegir entre las siguientes topologías básicas de Coherence:
NOTA: Las tres topologías presentadas a continuación no son las únicas de las cuales dispone
Oracle Coherence. Las topologías son muy personalizables.
1. Topología de Replicación
2. Topología Particionada
3. Near-Cache
En la siguiente parte del articulo, “Topologías de Coherence Parte 2”, estaré tratando la topología
de replicación, sus ventajas y desventajas.
5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12
PBX (502) 2364-5300 Fax (502) 2364-5311
[email protected]
Página 10

Documentos relacionados