El modulo, llamado mod_pagespeed, puede ser instalado y configurado en los servidores web Apache, el software más utilizado para el funcionamiento de sitios web. Una vez instalado, mod_pagespeed determina sobre la marcha la manera de optimizar el rendimiento de una web. Por ejemplo, comprime imágenes de manera más eficiente y cambia la configuración para que un mayor número de páginas se almacenen en el caché del navegador del usuario, de modo que los mismos datos no tengan que cargarse en varias ocasiones. El software se actualiza automáticamente, señala Richard Rabbat, gerente de producto para el nuevo proyecto. Afirma que esto significa que a medida que Google y otras terceras partes realicen mejoras, las personas que lo instalen se beneficiarán de dichas mejoras sin tener que realizar ningún cambio. "Creemos que hacer que toda la red sea más rápida es algo crítico para el éxito de Google", señala Rabbat. Hacer que la red sea más rápida debería animar a la gente a usarla más y aumentar la probabilidad de que usen los servicios y el software de Google. Rabbat señala la frustración que sienten los usuarios cuando hacen clic en un enlace o escriben una dirección URL y observan una página en blanco durante varios segundos. "En muchos casos," afirma, "personalmente abandono esa página cuando algo como eso ocurre". Google ya ofrece una herramienta llamada Page Speed, encargada de medir la velocidad a la que se carga una página web y sugerir formas de mejorarla. "Nos hicimos la siguiente pregunta: en lugar de simplemente decirle a la gente cuáles son los problemas, ¿podemos arreglarlos de forma
SQLeros HotSpot Creator
Se me ocurrió; por que para mi es tedioso estar haciendo los pasos citados aquí.
Ahora les presento unas pantallas:
[caption id="attachment_468" align="aligncenter" width="279" caption="Pantalla principal"]
[caption id="attachment_469" align="aligncenter" width="281" caption="Opciones del programa..."]
[caption id="attachment_470" align="aligncenter" width="300" caption="en la bandeja del sistema"]
[caption id="attachment_471" align="aligncenter" width="300" caption="Opciones del icono de notificación"]
Como pueden ver es algo sencillo pero funcional...
[caption id="attachment_472" align="aligncenter" width="219" caption="Red creada..."]
Bueno mis estimados lectores, les dejo el código del programa aquí.
Y también les mando un caluroso saludo,¡hasta otro post!
XSS - Cross-Site-Scripting I
El Cross-Site-Scripting, conocido también como XSS por sus siglas en ingles, es una vulnerabilidad que muchos desarrolladores dejan pasar por alto, quizás por falta de un planeamiento de análisis de riesgos en el proceso de diseño, desarrollo e implementación de sus aplicativos, o simplemente no lo vean como una falla que les va a presentar problemas en su aplicación, incluso por desconocimiento de esta vulnerabilidad.
El Kamasutra y La Criptografia
Ten en cuenta que este cuadro no es completo.
El primer texto escrito data de hace más de 6000 años. El arte del cifrado ha existido desde hace cerca de 3000 años.
| c. 1900 AC | En el antiguo Egipto se usaron símbolos que no eran los normales. |
| c. 1500 AC | Los fenicios diseñaron un alfabeto. |
| c. 1000 AC | Se usaron otros símbolos distintos a los normales en la antigua Mesopotamia. |
| c. 600 AC | En Palestina se cifran textos usando un algoritmo simple de sustitución monoalfabética Atbash. |
| c. 500 AC | Los espartanos cifran mensajes utilizando Scytale. |
| c. 400 AC | El Kamasutra describe un algoritmo de cifrado por sustitución monoalfabética. |
| c. 200 AC | El historiador griego Polybius describe el cifrado de Polybius por primera vez. |
| c. 100-44 AC | Julio César inventa un código para cifrar sus mensajes (el Código César). Éste es el algoritmo de sustitución monoalfabética más conocido. |
| c.500-1400DC | La "edad oscura de la criptografía" empieza en Europa: Durante este periodo la criptografía es considerada como magia negra y se pierde gran parte del conocimiento que se tenía hasta la época. Por otro lado, la criptografía florece en Persia. |
| 855 DC | Aparece el primer libro sobre criptografía en Arabia. Entre otras cosas, Abu 'Abd al-Raham al-Khahil ibn Ahmad ibn'Amr ibn Tammam al Farahidi al-Zadi al Yahamadi (Abu-Yusuf Ya’qub ibn Ishaq al-Kindi, conocido como Al-Kindi) describe orgulloso en su libro un mensaje griego descifrado que es deseado por el emperador bizantino. Su criptoanálisis se ha basado en un análisis de frecuencia ayudado con el conocimiento de una pequeña porción del comienzo del texto original -- este mismo criptoanálisis es el que se empleará en la Segunda Guerra Mundial contra Enigma. |
| 1379 | El papa Clemente VII ha escapado a Avignion y ha ordenado a su secretario, Gabrieli di Lavinde (Parma), diseñar un nuevo código para cifrar sus mensajes. Este código consiste en una combinación de sustituciones de letras individuales y palabras codificadas. Gabrieli ha creado una lista de las palabras más comunes que son sustituidas por combinaciones de dos letras y el resto de palabras que no están en la lista son cifradas utilizando sustitución monoalfabética. Debido a la sencillez de este código, será utilizado durante los próximos 450 años, sobre todo en los círculos diplomáticos. |
| 1412 | En Arabia se escribe una enciclopedia con 14 tomos en donde se explican conceptos de criptografía. En ella, además de las técnicas de sustitución y transposición, se explica un método consistente enrepetidas sustituciones de cada carácter del texto claro. Es la primera vez en la historia que habla de un método como éste. |
| Siglo XV | En Italia se produce un boom de la criptografía debido un alto desarrollo de la vida diplomática. |
| 1466 | Leon Battista Alberti, uno de las figuras líderes del Renacimiento Italiano, publica su libro "Modus scribendi in ziferas", en donde habla por primera vez del disco de Alberti, el primer sistema polialfabético que se conoce. Alberti es el secretario de un cuerpo oficial perteneciente a la corte papal que se encarga únicamente de labores relacionadas con la criptografía. Por todo esto, Alberti será conocido como el "padre de la criptografía". |
| 1518 | Se imprime el primer libro sobre criptografía cuyo título es "Polygraphia libri sex", escrito por el abad Johannes Trithemius en lengua alemana. En este libro también se describen cifrados polialfabéticos con las nuevas tablas de sustitución rectangulares. |
| 1563 | Giovanni Battista Porta publica "De Furtivis Literarum Notis", un libro en el que describe distintos métodos de cifrado y criptoanálisis. En él se menciona el primer cifrado por sustitución digráfica. |
| Finales del s.XVI | Francia toma la delantera en criptoanálisis. |
| 1577 | El brillante criptoanalista flamenco Van Marnix cambia el rumbo de la historia europea al descifrar una carta española en donde se explicaban los planes para conquistar Inglaterra enviando tropas desde los Países Bajos. |
| 1585 | El diplomático francés Blaise de Vigenère publica su libro "Tractié de Chiffre" en donde presenta el primer sistema polialfabético con autoclave, conocido como "Le chiffre indéchiffrable" aunque más adelante se le cambiará el nombre por el de el cifrado de Vigenère. La idea de la autoclave perdurará en el tiempo y se aplicará en los algoritmos futuros como el DES en los modos CBC y CFB. |
| 1586 | Se intenta llevar a cabo el complot Babington por el cual se asesinaría a la reina Elisabeth I de Inglaterra y se colocaría en el trono a Mary Stuart, Reina de Escocia. El "Servicio Secreto Británico" pone fin a esta trama y consigue los nombres de los conspiradores, condenando a Mary Stuart. Mary se comunicaba a través de cartas con sus conspiradores. Pero el mensajero, que era un espía de Elisabeth realizaba copias exactas de cada carta y las enviaba a Francis Walsingham, secretario del estado de Elisabeth, que a través de Thomas Phelippes consiguió descifrarlas revelando el complot. Pero la cosa no quedó ahí, Walsingham quería saber la identidad de los conspiradores por lo que hizo que Phelippes añadiera una posdata a una carta, de manera que en la respuesta a la carta, Mary incluyó el nombre de los implicados. |
| Siglo XVII | Comienza la era de las cámaras negras. La mayoría de los gobiernos disponen de departamentos en donde profesionales se encargan de romper los cifrados a los que tienen acceso. |
| 1623 | Sir Francis Bacon describe un método de esteganografía: cada letra del texto claro es reemplazada por un grupo de cinco letras formado por una combinación de las letras 'A' y 'B' que se intercalan en un texto normal con una fuente diferente. Este método es el precursor del que luego será conocido como codificación birania de 5 bits. |
| 1628 | Antoine Rissignol se convierte en el primer criptoanalista contratado a tiempo completo tras descifrar un mensaje del enemigo gracias al cual se puso fin al sitio que los hugonotes ejercían sobre Realmont. Desde entonces, el papel del criptoanalista ha sido fundamental en toda organización militar. |
| 1700 | El zar de Rusia utiliza una gran tabla de códigos de 2000-3000 sílabas y palabras para cifrar sus mensajes. |
| 1795 | Thomas Jefferson diseña el primer dispositivo de cifrado cilíndrico, conocido como la "rueda de Jefferson". Sin embargo, no lo utilizará nunca, por lo que caerá en el olvido o, más bien, no se llegará a hacer público. |
| 1854 | El matemático inglés Charles Babbage inventa un dispositivo de cifrado cilíndrico similar al de Jefferson. Además, descubre un método de criptoanálisis para romper el, hasta ahora conocido, "cifrado irrompible" que diseñó Vigenère. Es por ello que a partir de este momento se conocerá como el cifrado de Vigenère, aunque en realidad esto no se hará público hasta su muerte ya en el siglo XX. |
| Siglo XIX | La criptología encuentra un lugar en la literatura: Arthur Conan Doyle, Julio Verne, Edgar Allan Poe... |
| 1854 | El físico inglés Charles Wheatstone inventa un cifrado que utiliza una matríz de 5x5 como clave. Su amigo, Lord Lyon Playfair, barón de Saint Andrews lo hace público en círculos militares y diplomáticos y, por ello, se conocerá como el cifrado de Playfair. |
| 1863 | Friedrich Kasiski (1805-1881), un importante prusiano, desarrolla métodos estadísticos de criptoanálisis que fueron capaces de romper el cifrado de Vigenère. |
| 1883 | Se publica "La Cryptographie militaire" de Auguste Kerckhoff von Nieuwendhoff. Esto supondrá un hito en la criptografía telegráfica de la época. Contiene el "principio de Kerckhoff", que exige basar la seguridad de un método de cifrado únicamente en la privacidad de la clave y no en el algoritmo. |
| 1891 | El francés Etienne Bazeries inventa un dispositivo cilíndrico conocido como el cilindro Bazeries que, en principio, es similar a la rueda de Jefferson. Se publicará su diseño en el año 1901, después de que el Ejército francés lo rechace. |
| 1917 | El descifrado de los telegramas de Zimmermann por el Servicio Secreto Inglés provocó la crítica entrada de los EEUU en la Primera Guerra Mundial |
| 1917 | El americano Gilbert S. Vernam, empleado de AT&T, desarrolla la cinta aleatoria de un sólo uso, el único sistema criptográfico seguro. |
| 1918 | El criptoanalista francés, Lieutenant Georges Painvin rompe el cifrado ADFGVX, que es el que usaba el ejército alemán desde un poco antes del fin de la Primera Guerra Mundial. Este algoritmo consistía en un cifrado en dos pasos; primero se realizaba una sustitución (cada letra era sustituida por un bi-grama a través de una matriz que hacía de clave) y después, los bi-gramas se dividían en columnas que se reorganizaban. |
| 1918 | Arthur Scherbius y Richard Ritter inventan la primera Enigma. Al mismo tiempo, la máquina de rotores es inventada y patentada por Alexander Koch (Países Bajos) y Arvid Damm (Suecia). |
| 1920 | William F. Friedman (1891-1969), tras ser galardonado como el padre de la criptografía estadounidense, diseña (sin relación con Kasiski) métodos estadísticos para criptoanalizar el cifrado de Vigenère. |
| 1921 | El californiano Edward Hebern construye la primera máquina de cifrado basada en el principio de losrotores |
| 1922 | La rueda de Jefferson es redescubierta en los EEUU, cuyo cuerpo de marines la rediseña y la utiliza durante la Segunda Guerra Mundial. |
| 1923 | La máquina de rotores Enigma, diseñada por el alemán Arthur Scherbius, se revela en el International Post Congress. Además, Scherbius funda la compañía "Chiffriermaschinen AG" para comercializar Enigma en todo el mundo. |
| 1929 | Lester S. Hill publica el artículo "Cryptography in an Algebraic Alphabet". El cifrado de Hill aplica álgebra (multiplicación de matrices) para cifrar. |
| 1940 | Los espías alemanes utilizan micropuntos. |
| 1940 | Alan Turing rompe Enigma con la idea de la Bomba de Turing que concibió basándose en el trabajo deMarian Rejewski. |
| 1941 | Se descifran los mensajes con los que se comunicaban los japoneses en donde se hablaba del inminente ataque a Pearl Harbor. Esto es debido a la labor de un equipo dirigido por William Frederick Friedman, que rompió la máquina japonesa Purple. Muchos historiadores creen que el criptoanálisis acortó en una año la Segunda Guerra Mundial. |
| 1948/1949 | Claude Shannon establece la bases matemáticas de la teoría de la información y publica "Communication Theory of Secrecy Systems", en donde expone un algoritmo de cifrado teóricamente irrompible que debe satisfacer los requisitos de la cinta aleatoria de un sólo uso. |
| 1973 | David Elliott Bell y Len LaPadula desarrollan el modelo Bell-LaPadula que formaliza las normas de acceso a la información clasificada, con la intención de lograr la confidencialidad de los datos. |
| 1973-1975 | Ellis, Cocks y Williamson desarrollan un algoritmo de cifrado de clave pública para el gobierno británico (GCHQ). Este descubrimiento no será conocido públicamente hasta 1997. Debido a esto, los métodos de cifrado asimétrico serán nuevamente reconstruidos de forma independiente y, esta vez sí, públicamente por Diffie, Hellman, Rivest, Shamir y Adleman, que serán considerados los descubridores de la criptografía de clave pública. |
| 1975 | Diffie y Hellman describen que los procedimientos de clave pública son teóricamente posibles, a pesar de que se ha intentado demostrar lo contrario. |
| 1976 | Whitfield Diffie y Martin Hellman publican "New Directions in Cryptography". Que introduce un nuevo método de distribución de claves criptográficas, lo que era hasta la fecha uno de los problemas fundamentales de la criptografía. Este mecanismo será conocido como el protocolo Diffie-Hellman de intercambio de claves. |
| 1977 | El algoritmo inventado por IBM en 1975, DES (Data Encryption Standard), es elegido por el NIST (FIPS PUB-46) como el algoritmo de cifrado estándar de los EEUU. |
| 1977 | El algoritmo RSA, llamado así por sus desarrolladores, Ronald Rivest, Adi Shamir y Leonard Adleman, es publicado. RSA supone el primer procedimiento de clave pública utilizado en la práctica y ocupa el puesto de ser la contribución criptológica más innovadora del siglo XX. |
| 1979 | Los primeros cajeros automáticos (Automatic Teller Machines) utilizan DES para cifrar los códigos PIN. |
| 1982 | El físico Richard Feynman diseña el modelo teórico de una computadora cuántica. |
| 1984 | Charles H. Bennett y Gilles Brassard describen la criptografía cuántica (BB84 protocol). |
| 1985 | Goldwasser, Micali y Racoff descubren el procedimiento de conocimiento cero. |
| 1986 | De forma independiente, Neal Koblitz y Victor Miller proponen usar curvas elípticas como modelo de criptografía de clave pública. |
| 1991 | Xueija Lai y James Massey desarrollan el algoritmo IDEA en Suiza, que será usado en el software criptográfico PGP. |
| 1991 | DSA es elegido por el NIST como algoritmo estándar de firma digital. |
| 1991 | PGP (Pretty Good Privacy) es diseñado por Phil Zimmermann como un software gratuito y de código libre, con el fin de cifrar e intercambiar archivos con una gran seguridad. Esta es la primera vez que el cifrado híbrido (combinación de criptografía simétrica y asimétrica) es aplicada a un programa popular para usuarios finales. El objetivo principal era el de cifrar los archivos adjuntos del correo electrónico (que más tarde también fue cubierto por el estándar S/MIME). |
| 1994 | Peter Shor concibe un algoritmo para ordenadores cuánticos que permite la factorización de enteros largos. Este es el primer problema interesante para el que los ordenadores cuánticos han prometido una importante aceleración, y que, por lo tanto, genera un gran interés en este tipo de ordenadores. |
| Agosto 1994 | El protocolo de cifrado SSL 1.0 es publicado por Netscape Communications y es soportado por todos los navegadores web. No obstante, el protocolo de transporte de SSL (TLS) no se limita a la aplicación de HTTPS. |
| Octubre 1995 | S/MIME, un mecanismo estándar para la seguridad del correo electrónico, es publicado como RFC 1847 y cuenta con el apoyo de todos los clientes de correo electrónico. S/MIME (Secure/Multipurpose Internet Mail Extensions) describe una manera consistente para enviar y recibir mensajes de correo electrónico seguros (firmados y/o cifrados). Se basa en el estándar de Internet MIME. Sin embargo, S/MIME no sólo se limita al correo. S/MIME y SSL son los protocolos criptográficos que se utilizan con mayor frecuencia en Internet. |
| 17 de Julio de 1998 | El ingenio de la EFF conocido como Deep Crack, rompe una clave DES con un ataque de texto claro conocido en 56 horas (Los RSA Laboratories lanzan el desafío DES II). |
| 19 de Enero de 1999 | Deep Crack y distributed.net rompen una clave DES con un ataque basado en texto claro conocido en 22 horas y 15 minutos (Los RSA Laboratories lanzan el desafío DES III) |
| Octubre 2000 | Tras la competición pública que ha durado 5 años, el algoritmo Rijndael es elegido por el NIST como el sucesor de DES y pasa de denominarse AES (Advanced Encryption Standard). |
| Desde el 2000 | Weil Pairing es utilizada para los nuevos esquemas de compromiso como IBE (Identity Based Encryption, que resultó ser más interesante desde un punto de vista teórico que desde un punto de vista práctico). |
| Agosto 2004 | En la conferencia Crypto 2004, los investigadores chinos muestran debilidades estructurales en común de las funciones de hash (MD5, SHA), lo que las hace vulnerables a ataques de colisión. Estas funciones de hash todavía se usan en casi todos los protocolos criptográficos. Los investigadores chinos no publicaron todos los detalles. |
| Mayo 2005 | Jens Franke y otros factorizan un número RSA-200 de 663 bits de longitud. |
| Abril 2007 | El protocolo WEP de codificación en LAN inalámbrica fue roto por tres investigadores del TU Darmstadt. Asumiendo suficiente tráfico de datos en la red, sólo se tarda unos dos minutos en obtener el 95% de todas las claves de codificación utilizadas. |
| Agosto 2007 | En la conferencia Crypto 2007 se mostró un algoritmo para romper el sistema inmovilizador utilizado en millones de coches. Durante la presentación, Eli Biham, Orr Dunkelman,entre otros, pudieron mostrar un ejemplo donde una correspondiente llave de coche se copió en 48 horas con la potencia de computación de 50 PCs. |
| Agosto 2007 | David Hulton y Joshua Laykey rompieron el algoritmo de codificación A5, de marca registrada, usado por muchos operadores de GSM. Esto implica que en redes móviles afectadas, incluso las más cortas llamadas de voz o los mensajes SMS pueden descifrarse fácilmente por un PC normal, mostrando así que "seguridad por oscuridad" no es un buen enfoque. |
| Diciembre 2007 | Se descifró el algoritmo de autenticación de las tarjetas de chip Mifare, el cual se usa en miles de aplicaciones por un billon de tarjetas expedidas. Sin embargo, la última generación (Mifare DESFire), que utiliza DES/3-DES, no se ve afectada. |
| Diciembre 2009 | Chris Paget y Karsten Nohl dieron a conocer, que su Proyecto de crackeo A5/1 construyó las tablas de compromiso espacio-tiempo de 2 Terabyte. A5/1 fue ahora definitivamente quebrado. |
| Diciembre 2009 | Jens Franke et al. factorizaron el número RSA-768 de 768 bits de longitud. |
Algo muy interesante es que en el Kamasutra, exista una de las descripciones más antiguas de encriptación por sustitución, este texto fue escrito el siglo IV d.C. por el sabio hindú Vatsyayana (Cuyo nombre es muy parecido al de esta página. ñ_ñ), sin embargo basado en manuscritos datados de más de 800 años (séc. IV a.C..).
El Kama-Sutra recomienda que las mujeres estudien 64 artes, incluyendo la culinaria, la forma de vestir, masaje y la preparación de perfumes. La lista también incluye algunos artes menos obvios como prestidigitación, ajedrez, encuadernación de libros y carpintería.
En la lista, la de número 45 es la mlecchita-vikalpa, el arte de la escritura secreta, indicada para ayudar las mujeres a esconder los detalles de sus relaciones. Una de las técnicas recomendadas es la de formar pares aleatorios de letras del alfabeto y después sustituir cada letra del texto original por la correspondiente en el par.
Ahora un ejemplo en PHP. ñ_ñ
[sourcecode language="php"]
< ?php
//Cifrado KamaSutra: SQleros.Com.Ar
$letras=array( array('A','D','H','I','K','M','O','R','S','U','W','Y','Z'),
array('V','X','B','G','J','C','Q','L','N','E','F','P','T')
);
function kamasutra($texto,$letras)
{ $ArregloAuxiliar=array();
for($i=0; $i
$ArregloAuxiliar[$letras[1][$i]]=$letras[0][$i];
}
$result = "";
for($i=0; $i
}
$blog="SQLeros.Com.Ar";
echo "
Cifrado KamaSutra: $blog";
echo "Letras:
';
echo 'Texto sin cifrar: '.$blog.'
';
echo 'Texto cifrado: '.kamasutra($blog,$letras).'
';
?>
[/sourcecode]
El resultado: Aquí, Un Saludo. Y Claro comenten!
Encontrar el valor de un Window Message
De vez en cuando, si trabajamos con WinForms, nos puede surgir la necesidad de manejar un evento a muy bajo nivel y para hacerlo tenemos que interceptar los famosos Window Messages, o mensajes de ventana. Estos mensajes son el mecanismo que utiliza Windows para comunicarse con una aplicación. Cuando apretamos una tecla y nuestra aplicación responde, parece que es nuestra aplicación la que ‘atrapó’ el teclazo, pero en realidad es el Sistema Operativo (SO) el que lo atrapó (debido a que el SO es quien controla el puerto donde esta conectado el teclado) y este le envía un mensaje a nuestra aplicación para que responda al mismo, normalmente imprimiendo el caracter representado por la tecla presionada. Aunque no lo parezca, el SO es quien tiene control de todo lo que sucede y cuando nuestra aplicación responde a distintos inputs, es en realidad el SO el que le ordena que haga una cosa u otra.
Si tenemos un Form y el SO determina que es necesario que sea redibujado (porque cambio su contenido por ejemplo), entonces se envía un mensaje conocido como WM_PAINT (en .NET veremos que esto dispara el evento Paint), en cambio si presionamos la tecla ‘Q’ en el teclado, entonces el mensaje recibido por nuestra aplicación es WM_KEYDOWN (también tenemos el evento KeyDown en .NET, el cual es lanzado cuando se recibe un mensaje de este tipo). Cabe aclarar que el nombre de los mensajes es solo una ayuda para nosotros los humanos, ya que los mensajes en realidad no son más que un valor entero, y estos nombres son los nombres de las constantes asociadas a los mismos.
Para interceptar estos mensajes lo que se suele hacer comúnmente es sobrescribir el métodoWndProc definido en la clase Control de la siguiente manera:
1: ...2: private const int WM_PAINT = 15;
3:4: protected override void WndProc(ref Message m) {
5:6: if (m.Msg == WM_PAINT) {
7: // Atrapamos el mensaje...
8: } else{
9: // Ignoramos el mensaje y dejamos que siga su curso
10: base.WndProc(ref m);
11: } 12: 13: } 14: ...El método WndProc es el que se encarga de procesar todos los mensajes que recibe un Form y es por eso que ese es el punto indicado para atraparlos.
Ahora el problema esta en conocer el valor de los mensajes, ya que muchas veces uno sabe que mensaje procesar, pero no sabe cual es su valor. Estos valores están definidos en la claseSystem.Windows.Forms.NativeMethods y System.Design.NativeMethods, pero lamentablemente estas clases son internas y no tenemos acceso a ellas, por lo que vamos a tener que usar .NET Reflector para ver su contenido.
La info de este post fue sacada de aquí.
Saludos
Replicando Datos En Oracle
Introducción
El presente documento muestra la forma de replicar de manera sencilla los datos de una base de datos en oracle hacia otro servidor oracle, mediante el uso de vistas materializadas.
La replicación te permite tener una copia exacta de una base de datos alojada en un servidor (maestro) que se guardará en otro servidor (esclavo). Todas las modificaciones que se hagan en la base de datos del servidor maestro se actualizarán inmediatamente en el servidor esclavo.
Esto no es una copia de seguridad, ya que si borramos una fila en la base de datos maestra, también se borrará en la base de datos esclava.
A continuación tenemos los pasos para instalar y configurar nuestro servidor para replicar datos.
Instalando Oracle.
Para nuestro caso usaremos la de oracle llamada oracle Express Edition, la cual es gratuita para nuestro servidor. Nos dirigimos a la página:
http://www.oracle.com/technology/software/products/database/xe/htdocs/102xewinsoft.html
Y aceptamos los términos de licenciamiento del programa, en este momento descargaremos el producto para posteriormente instalarlo en nuestro sistema.
[caption id="attachment_51" align="aligncenter" width="300" caption="Descargando OracleXE"]
Una vez descargado lo instalaremos dando clic derecho en el instalador y eligiendo la opción, abrir.
[caption id="attachment_52" align="aligncenter" width="300" caption="Ejecutando el instalador"]
Esperamos un momento y podremos ver las opciones del programa.
[caption id="attachment_53" align="aligncenter" width="300" caption="Opciones de configuracion"]
[caption id="attachment_54" align="aligncenter" width="300" caption="Instalacion OracleXE"]
El programa de instalación nos muestra la pantalla de bienvenida para la instalación, en este momento tenemos que dar click en siguiente.
[caption id="attachment_55" align="aligncenter" width="300" caption="LicenciaDirectorio de instalacion"]
Aceptamos los términos y condiciones del programa y pulsamos siguiente, en seguida seleccionamos la ubicación de los archivos de instalación, si queremos instalarlos en otra ubicación podemos seleccionarla pulsando el botón Examinar, después de esto pulsamos siguiente.
[caption id="attachment_57" align="aligncenter" width="300" caption="Establecer contraseña"]
Ahora tecleamos una contraseña para los usuarios SYS y SYSTEM, los cuales son los usuarios (dba) administradores en oracle, y pulsamos en siguiente, ahora nos mostrara un resumen de la instalación si estamos de acuerdo con este daremos clic en instalar.
[caption id="attachment_58" align="aligncenter" width="300" caption="Instalacion"]
Configurando El Servidor
Ahora editaremos el archivo “C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora”, y agregaremos las siguientes líneas de configuración (resaltadas en cursiva y negrita) para que el servidor oracle reconozca nuestro servidor remoto, usando una resolución de nombres tns.
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = RAMMSCORP.gateway.2wire.net)
(PORT = 1522)
)
ORCL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = RAMMSCORP.gateway.2wire.net)
(PORT = 1522)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
YOS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = TCP)
(PROTOCOL = TCP)
(HOST = yosy1)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SID = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = IPC)
(KEY = EXTPROC1)
)
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Donde YOS es el nombre del servidor remoto que agregamos, es decir un alias, PROTOCOL es el protocolo de comunicación hacia el servidor, HOST es el nombre ó la dirección IP de la computadora que tiene el servidor, PORT indica el numero de puerto al cual se conectara el servidor y finalmente SID que es el nombre de servicio del servidor remoto.
De esta manera nos podremos conectar con el servidor remoto usando la nomenclatura de conexión:
Usuario/Password@Alias_Del_Servidor:[Puerto]
Donde Usuario es cualquier usuario valido del servidor remoto, Password es la contraseña del usuario remoto, @Alias_del_servidor es el nombre que hemos añadido en el archivo de configuración tnsnames.ora, y finalmente el Puerto que indica a que puerto se conectara este parámetro es opcional, por defecto las conexiones se realizan al puerto 1521.
Una vez editado y configurado archivo, tendremos que configurar nuestro servidor estableciendo un DBLink ó un enlace a base de datos.
Usando la siguiente instrucción:
Create database link "Nombre_Del_DBLink" connect to Usuario identified by "Password" using 'HOST[: PUERTO]/SID'De la siguiente instrucción tenemos Nombre_Del_DBLink el cual es un nombre cualquiera para identificar a que base de datos estamos ligados, Usuario el cual debe de ser un usuario remoto valido, Password es la contraseña del usuario remoto, HOST es el nombre ó dirección ip del servidor, PUERTO indica el numero del puerto al que se conectara el parámetro es opcional, el puerto por defecto es el 152, y por ultimo SID es el nombre del servicio al cual se conectara nuestro servidor.
La cual nos proporcionara la facilidad de hacer consultas del tipo:
Objeto@DBLink
Donde Objeto puede ser cualquier tipo de objeto en la base de datos remota y @DBLink es el enlace a la base de datos, de este modo podremos usar las tablas, vistas, triggers y demás objetos en el servidor.
Estos pasos de configuración se hacen en los dos servidores para que se puedan comunicar, es decir tenemos que dar de alta el servidor 1 en el servidor 2 y viceversa; además tenemos que dar de alta un DBLink para cada uno de ellos, una vez teniendo configurados los servidores podremos iniciar la replicación.
Replicando Datos
Ahora antes de replicar los datos tenemos que tener datos, necesitamos tener cuando menos una tabla en la base de datos, ahora crearemos una tabla para hacer esta práctica la cual llamaremos: COMPRAS; la cual estará en el servidor 1 (RAMMS) y será replicada hacia el servidor 2 (YOS). Utilizaremos las sentencias de SQL Plus para crear la tabla con los siguientes campos de la siguiente manera:
CREATE TABLE RAMMS.COMPRAS
(
CODIGO VARCHAR2 (8 BYTE) NOT NULL,
PROVEEDOR VARCHAR2 (30 BYTE) NOT NULL,
PRODUCTO VARCHAR2 (45 BYTE) NOT NULL,
PRECIOCOMPRA INTEGER NOT NULL,
PRECIOVENTA INTEGER NOT NULL,
CANTIDAD NUMBER NOT NULL
)Y posteriormente:
ALTER TABLE RAMMS.COMPRAS ADD (
PRIMARY KEY
(CODIGO)
USING INDEX
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
));Después de crear la tabla agregaremos datos en ella, quedando de la siguiente manera:
Ahora realizaremos una consulta desde el servidor 2 (YOS) usando los DBLink, quedando de la siguiente manera:
[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]
SELECT * FROM COMPRAS@DBLINKRAMMSArrojando la siguiente información:
[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]
Como podemos observar la consulta funciona es decir que podemos consultar objetos desde el servidor 2, ahora crearemos en el servidor 1 (RAMMS), una tabla LOG para la replicación de la tabla COMPRAS, con la siguiente instrucción:
CREATE MATERIALIZED VIEW LOG ON RAMMS.COMPRAS
NOCACHE
LOGGING
NOPARALLEL;Esta tabla guardara los datos cambiados y actualizara de manera instantánea todas las replicas de la tabla COMPRAS.
Ahora desde el servidor 2 (YOS) crearemos nuestra vista materializada para recibir los datos de la tabla original, a este procedimiento de replica se le denomina replica en forma de instantánea o de snapshot, lo haremos usando la siguiente instrucción.
CREATE MATERIALIZED VIEW RAMMS.COMPRAS
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT * FROM COMPRAS@DBLINKRAMMS;Ahora en el servidor 2 (YOS), ya disponemos de una copia exacta de la tabla compras del servidor 1 (RAMMS), y se actualizara automáticamente cuando se haga un commit en las transacciones, ahora podemos ejecutar la sentencia:
SELECT * FROM COMPRAS;E inmediatamente después podremos apreciar el resultado de la consulta, nótese que en el servidor 2,no existían datos para la tabla COMPRAS de hecho COMPRAS no es una tabla es una ¡vista!
[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]
De esta manera cualquier cambio realizado en el servidor 1, se verá reflejado inmediatamente en el servidor 2, de esta manera tenemos la información actualizada y lo más importante distribuida en varios nodos al mismo tiempo.
Conclusión
En esta práctica aprendimos a hacer una replicación de instantánea de una tabla en oracle usando dos servidores uno que es el servidor que tiene la tabla a replicar (RAMMS) y un cliente (YOS) el cual puede tener los datos de la tabla para consultar, cabe señalar que la vista materializada es de solo lectura, debido a que es una instantánea, también configuramos los accesos de los servidores mediante el archivo de configuración tnsnames.ora y dimos de alta los servidores en los archivos, lo que nos daba como resultado la comunicación entre ambos y logrando así poder generar el enlace de base de datos entre ellos. Teniendo la posibilidad de realizar consultas distribuidas entre los servidores. Finalizando en la creación de la tabla de LOGS y la vista materializada, para poder consultar los datos replicados de manera local.