Instalación Ora2PG: Migrar Oracle a Postgresql

Home  >>  Software  >>  Instalación Ora2PG: Migrar Oracle a Postgresql

Instalación Ora2PG: Migrar Oracle a Postgresql

18
May,2016

0

Introducción

Estos son los pasos que he tenido que seguir para conseguir que el programa Ora2PG de Gilles Darold para migrar automáticamente desde Oracle a Postgresql funcione. No garantizo que siguiendolos funcione en otro entorno, pero es un buen punto de partida. Al final de la entrada están listadas las web de las que me he valido para conseguirlo.

Entorno

Ora2PG lo he instalado en un Ubuntu 12.04 LTS.
La base de datos de Oracle esta en un RedHat, en otro servidor distinto. Es la versión 11g.
Finalmente la base de datos de Postgresql, con la que he probado, está en un Windows Server 2008 R2. Es la versión 9.4.

El primer paso sería instalar Perl pero Ubuntu ya viene con el de serie. Así que no hace falta este paso. Es más yo creo que es liar la cosa porque tendrías dos perl instalados.

Oracle

A continuación vamos a instalar el cliente de Oracle. En otros casos esto tampoco será necesario, especialmente si vamos a instalar Ora2PG en el servidor donde está Oracle. En mi caso he instalado dos cosas (aunque creo que con la segunda hubiera valido):

El cliente de Oracle: se puede descargar desde aquí. Debemos descargar la versión correcta, para ello tenemos que ejecutar:

  • select * from v$version

Con el número que nos sale buscamos en la lista y descargamos 3 ficheros: el basic, el sdk y el sqlplus. Mediante un cliente ftp como filezilla, nos conectamos al servidor donde vayamos a instalar ora2PG, creamos una carpeta en $HOME/opt/Oracle/packages (el $HOME será la home del usuario con el que estemos logueados) y transferimos los 3 ficheros. Acto seguido los descomprimimos en $HOME/opt/Oracle/ con:

  • $ unzip packages/basic-10.2.0.5.0-linux-x64.zip
  • $ unzip packages/sdk-10.2.0.5.0-linux-x64.zip
  • $ unzip packages/sqlplus-10.2.0.5.0-linux-x64.zip

La otra cosa a instalar es la Oracle database 11g Express Edition (también conocida como XE). Hay que descargarla de aquí.

Instalamos antes lo siguiente, haciendo uso del apt-get, por si fuera necesario:

  1. apt-get install unzip
  2. apt-get install alien
  3. apt-get install libaio1
  4. apt-get install unixodbc

Transferimos el fichero descargado de la XE, que se llamara algo parecido a oracle-xe-11.2.0-1.0.x86_64.rpm.zip, a un directorio del servidor. En mi caso el directorio Downloads. Descomprimimos con unzip. Nos aparece una carpeta que se llama Disk1, entramos con cd Disk1 y ejecutamos:

  • alien –scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

luego,

  • dpkg –install oracle-xe_11.2.0-2_amd64.deb

Cuando termine podemos comprobar que está instalado yendo al directorio de instalación: ls /u01/app/oracle/product/11.2.0/xe.

Para terminar con la parte de Oracle creamos un fichero que contenga las siguientes líneas:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_BASE=/u01/app/oracle

lo podemos llamar .oracle_profile y dejarlo en la $HOME. Recordad que para la instalación, y, para que el programa funcione hay que hacer:

  • source .oracle_profile

de esta manera los export del fichero se ejecutan. También se puede poner esa sentencia en el bashrc para que se ejecuten siempre que arranquemos.

Instalar Ora2PG

Descargamos los ficheros desde github, el fichero se llamara algo como ora2pg-17.4.tar.gz, dependiendo de la version de cada momento.

Ahora cuatro comandos en el shell

  1. tar xjf ora2pg-17.4.tar.bz2
  2. cd ora2pg-17.4
  3. perl Makefile.PL
  4. make && make install (estos dos se pueden ejecutar también separados)

Lo instala en /etc/ora2pg.

Modulos DBI y DBD de Perl

Para funcionar, el programa precisa de dos modulos para poder conectar con la base de datos de Oracle son DBI y DBD.

La manera de instalar DBI es simple, arrancamos CPAN con la instrucción (CPAN es un repositorio de módulos de perl listos para ser instalados),

  • # perl -MCPAN -e shell

y luego instalamos con (cpan> nos indica que estamos dentro de CPAN),

  • cpan> install DBI

Para instalar el segundo módulo es un poco más complicado. Sin salir de CPAN (si nos hemos salido volvemos a entrar con perl -MCPAN -e shell), escribimos:

  • get DBD::Oracle

y a continuación nos salimos con quit. Una vez fuera del shell de CPAN, hacemos:

  • cd ~/.cpan/build/DBD-Oracle*

Hacemos dos exports, para estar seguros de que las variables están bien asignadas (Podríamos hacer también source .oracle_profile, el fichero que habíamos creado, ¿recuerdas?). Los export son:

  • export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib
  • export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe

Lo siguiente como siempre:

  1. perl Makefile.PL
  2. make
  3. make install

Con esto ya estaría todo instalado. Ahora queda que funcione, y la configuración. Si habéis llegado hasta aquí, es la mitad del camino 🙂

Probar la conexión de base de datos (Oracle)

Para probar la conexión antes de empezar nada, lo mejor es este programa descargado de github.

Importante, tenemos que tener localizado nuestro fichero tnsnames.ora en el directorio TNS_ADMIN que hemos definido en el fichero .oracle_profile. Por tanto, habrá que hacer source .oracle_profile antes de ejecutar el programa de test. Yo le he dado el nombre de oracle.t.

No tenemos más que descargarlo, transferirlo via ftp a nuestro servidor, en el $HOME por ejemplo, y configurarlo. Solo hay que cambiar las líneas que vienen indicadas como Change me. Para ello:

my $user = ‘usuario-base-datos’;
my $pass = ‘contraseña-base-datos’;
my $conn = ‘nuestra conexion’;

Acerca de la conexión. Esta debe tener, al menos en mi caso, este formato:

  • DBI:Oracle:nombre-base-datos-en-tnsnames.ora

Una vez lo tenemos configurado podemos probar con (recordad ejecutar antes source .oracle_profile):

prove oracle.t

Debe salir algo como esto:

oracle.t .. ok
All tests successful.
Files=1, Tests=7, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.06 cusr 0.00 csys = 0.09 CPU)
Result: PASS

En caso contrario: revisad las credenciales, la conexión que este bien puesta (hay bases de datos que están configuradas de otra manera y hay que conectar a ellas con otra sintaxis), que las variables del oracle_profile están exportadas (esto se puede hacer con echo $nombre-variable), los permisos del fichero, etc…

Si funciona, ya por lo menos sabemos que podemos conectarnos a nuestra base de datos fuente.

En la siguiente entrada, explicaré la forma en la que configurar el programa. Pero de momento, lograr que funcione, ya es un logro en sí mismo, así que con esto ya hay para entretenerse un rato. Espero sea de utilidad 😉

Enlaces de interés

Using Ora2pg to migrate from Oracle to PostreSQL ():

https://www.linkedin.com/pulse/using-ora2pg-migrate-from-oracle-postresql-syed-shabbir

Página oficial de Ora2PG (Gilles Darold):

http://ora2pg.darold.net/documentation.html#installation

How to install DBD::Oracle:

http://g14n.info/2013/07/how-to-install-dbdoracle/

Video explicativo:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *