El proceso de migración de un sistema gestor de bases de datos Oracle a otro con Microsoft Sql Server puede llegar a ser un trabajo muy tedioso si lo hacemos a mano. Tiempo atrás quizás no había más remedio que empezar migrando la estructura para hacer luego cargas manuales por tablas etc. Una manera de hacer podría ser haciendo un script PL-SQL de la estructura en Oracle para modificarlo y pasarlo a T-SQL para SQL Server. Con el paso del tiempo han ido in-crescendo aplicaciones de pago y gratuitas que ya hacen gran parte de nuestro trabajo. MS SQL Server Migration Assistant es una de ellas totalmente gratuita, creada por Microsoft que nos permite hacer gran parte del trabajo.
Microsoft SQL Server Migration Asistant for Oracle, además de migrar los datos propiamente dichos (estructura de tablas y su contenido), migra procedimientos almacenados, funciones, triggers, sinónimos y vistas. Aunque no lo migre todo, por ejemplo las secuencias, nos facilita la mayor parte del trabajo trivial. Una de las gracias también de esta herramienta es que funciona con proyectos, lo que permite probar y modificar las veces que queramos el traspaso de información al estilo prueba-error. Para el resto de cosas, lo básico sería generarnos un script y redefinirlo para SQL Server (sea lo que sea). Un buen complemento para centralizar el resto de la migración podría ser un paquete de SQL Server Integration Services.
Aunque en este post me centro en la versión que permite hacer la migración de Oracle a SQL Server, existen las siguientes versiones que permiten hacer la migración desde otros tipos de bases de datos:
- Microsoft SQL Server Migration Assistant for MySQL v5.2: Permite hacer la migración desde versiones de MySQL 4.1 y superiores a MS SQL Server 2005 y superiores. Se puede descargar desde aquí.
- Microsoft SQL Server Migration Assistant for Sybase v5.2: Permite hacer la migración desde Sybase Adaptive Server Enterprise (ASE) 11.9 y superior a SQL Server 2005 y superior. Se puede descargar desde aquí.
- Microsoft SQL Server Migration Assistant for Access v5.2: Permite hacer la migración de Microsoft Acces 97 y superiores a SQL Server 2005 y superior. Se puede descargar desde aquí.
Como instalar Microsoft SQL Server Migration Assistant for Oracle v5.2
Para empezar con la instalación descargaremos de este enlace el instalador. Una vez descargado el fichero .zip lo descomprimimos y ejecutamos el fichero SSMA for Oracle 5.2.exe para realizar la primera parte.
La segunda parte de la instalación consiste en copiar el segundo instalador, SSMA for Oracle 5.2 Extension Pack en el servidor SQL Server destino y ejecutarlo para completar todo el proceso. Este último crea una base de datos para uso propio de la aplicación y copia algunas librerías en la instalación de SQL Server. Durante alguno de los pasos nos pedirá un usuario de la base de datos con permisos para crear base de datos.
En nuestra primera ejecución nos pedirá el fichero de licencia. Pese a ser una aplicación gratuita, Ms nos pide tener en una ubicación un fichero de licencia para la versión concreta de nuestra aplicación. En el caso de la versión 5.2, independientemente de la versión de la base de datos origen nos la podemos descargar de este enlace.
Empezando a usarlo
Para ejecutarlo basta con buscarlo en el menú inicio. Nada más abrirlo, seleccionaremos del Menú File > New Project, donde elegiremos la ruta donde guardar el proyecto y seleccionamos la versión de SQL Server destino.
Las primeras pruebas son interesantes para hacerlas con los entornos de test o desarrollo que estén a nuestra disposición y en el peor de los casos, si solo tenemos entornos de producción probaremos con esquemas pequeños.
- Primero nos conectaremos a Oracle, el origen de los datos. En el dialogo elegimos entre el cliente Oracle Client provider o el proveedor OleDb y luego desplegaremos el Mode para especificar de distintas maneras los datos del servidor origen ya sea mediante cadena de conexión, TNSNAMES o Standard (campo a campo).
Una vez lo hagamos, la aplicación se conecta y descarga los metadatos para mostrarnos los esquemas visibles. Por cuestión clara de permisos, según el usuario que especifiquemos en la conexión veremos más o menos. Si queremos hacer una migración de todo podemos necesitar al usuario system de Oracle.
- El siguiente paso puede ser conectarnos al servidor destino. Para hacerlo elegimos la opción Connect to SQL Server de debajo del menú.
Por cierto, es posible que por algún motivo nos despistemos y no hayamos instalado en el servidor el "Extension Pack". Lo instalamos y solucionado. El error que veremos será como el de la siguiente imagen:
- Una vez conectados al servidor origen y destino es momento de empezar a jugar. En la parte superior tenemos primero el Oracle Metadata Explorer y una pestaña a su derecha que nos muestra la información relativa al origen. En la parte inferior tenemos el SQL Server Metadata Explorer que muestra lo mismo para el servidor destino. El "Metadata Explorer" es el árbol de objetos de cada servidor. Es como un Explorador de objetos para las dos bases de datos. Lo único a tener en cuenta es que mientras en Oracle hablamos de diferentes esquemas para una misma base de datos, en MS SQL Server vemos las diferentes bases de datos y los esquemas de seguridad que contiene cada una de ellas.
Para empezar a jugar y mover cosas de un lado al otro basta saber que tenemos que seleccionar en el árbol superior lo que queremos como en la imagen superior y hacerle clic con el botón derecho para poder ver el menú que permite ver que operaciones hacer con el: migrar, generar su script, informe de migración...
En conclusión...
... esta herramienta puede ser muy útil para simplificar el trabajo en migraciones de Oracle a SQL Server y otros tipos parecidos mientras el destino sea SQL Server. Como se puede ver en el blog de la gente que la mantiene (incluso tiene un blog!), está actualizada y se mantiene al día con las nuevas versiones de cada tipo de base de datos.
Me parece muy útil.