oracle y postgres database
DESCRIPTION
El objetivo principal de esta guía es lograr la lectura de tablas y vistas de una base de datos Postgres desde Oracle, en consecuencia tendremos la puerta abierta para realizar diversas gestiones desde Oracle, como, procedimientos, vistas y funciones.TRANSCRIPT
Integregacion Oracle – Postgres Databases
2012
Paolo Jalón e-technology
Inte
grac
ion
Ora
cle
- P
ost
gres
; P
aolo
Jal
ón
; pao
lo.ja
lon
@e
-te
chn
olo
gy.c
om
.ec
Integracion Oracle - Postgres
Objetivo
El objetivo principal de esta guía es lograr la lectura de tablas y vistas de una base de datos Postgres desde
Oracle, en consecuencia tendremos la puerta abierta para realizar diversas gestiones desde Oracle, como,
procedimientos, vistas y funciones.
Escenario de ejemplo Realizaremos un pequeño taller, tenemos los siguientes elementos:
Nuestro servidor de base de postgres 8.3 instalado en un equipo Windows xp (32 bits), cuya
dirección ip es la 192.168.0.28
En Postgres tenemos una base llamada openbravopos.
Nuestro servidor Oracle 11.2.0.1 64bits Enterprise Edition, instalado sobre un equipo Linux Centos
6.2 64 bits.
En Oracle tenemos un esquema de usuario llamado mybweb
Requisitos Habilitar permisos desde consola de administración de Postgres en Windows para que la ip del
equipo centos lea la base openbarvopos. Para ello seleccione la base, dirigirse a:
Herramientas>Configuracion Servidor>pg_hba.conf.
Driver odbc para postgres sobre equipo Centos. Si no cuenta con este driver, descargarlo e
instalarlo desde la opción añadir o quitar programas de Centos:
Configurando el driver En el servidor Centos, abra /etc/odbcinst.ini / y verifique que el driver se encuentre establecido de la
siguiente manera:
Inte
grac
ion
Ora
cle
- P
ost
gres
; P
aolo
Jal
ón
; pao
lo.ja
lon
@e
-te
chn
olo
gy.c
om
.ec
Creando el odbc Desde el servidor Centos, configure /etc/odbc.ini con la Base de Datos que tiene que leer, el nombre del servicio tiene que ir entre corchetes.
[ODBC Data Sources] postg = PostgreSQL ODBC Driver [postg] Driver = /usr/lib64/psqlodbc.so # DSN = postg Trace = No Database = openbravopos Servername = 192.168.0.28 UserName = openbravopos Password = openbravopos Port = 5432 Protocol = 7.0 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No QuotedId = Yes
Probar con el comando isql –v nombre driver;
en este caso isql –v postg
Nos deberá mostrara conectado!!
Enlace odbc a Oracle En entorno Grafico de usuario oracle Nos dirigimos a:
/u01/app/oracle/product/11.2.0/dbhome_1/hs/admin
Inte
grac
ion
Ora
cle
- P
ost
gres
; P
aolo
Jal
ón
; pao
lo.ja
lon
@e
-te
chn
olo
gy.c
om
.ec
En dicho directorio encontraremos un archivo llamado initdg4odbc.ora, lo copiamos y luego lo pegamos en
el mismo directorio pero Lo renombramos a initpostg.ora.
Sobre initpostg.ora ingrese las siguientes líneas:
HS_FDS_CONNECT_INFO = postg HS_FDS_TRACE_LEVEL = off HS_FDS_TRACE_FILE_NAME = postg.trc HS_AUTOREGISTER = TRUE HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so set ODBCINI = /etc/odbc.ini set client_encoding = UTF8
A initpostg.ora establecer a usuario oracle y grupo oinstall como propietario del mismo.
Abra el archivo listener.ora e ingrese lo resaltado en rojo
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME=postg) (PROGRAM=dg4odbc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = svrtest)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /u01/app/oracle
Abra el archivo tsname.ora e ingrese lo resaltado con rojo
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. PROD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = svrtest)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prod) ) ) postg = (DESCRIPTION = (ADDRESS =(PROTOCOL = tcp)(HOST = svrtest)(PORT = 1521)) (CONNECT_DATA=(SID= postg)) (HS=OK) )
Inte
grac
ion
Ora
cle
- P
ost
gres
; P
aolo
Jal
ón
; pao
lo.ja
lon
@e
-te
chn
olo
gy.c
om
.ec
Para probar nuestro odbc con oracle, detenemos el listener, luego lo iniciamos de nuevo digitando desde
terminal de usuario root
[oracle@svrtest ~]$ lsnrctl start
Tendremos que observar que el sid postg haya sido iniciado satisfactoriamente. Si usted ha seguido
cuidadosamente los pasos de esta debería iniciar sin novedades , tal y como se muestra en la imagen de
abajo. Hasta pronto!
Desde el esquema de datos Oracle añadir el siguiente dblink
create public database link postgs connect to "openbravopos" identified by "openbravopos" using 'POSTG';
Probar el enlace teniendo en cuenta que los nombres de tabla deben ir entre comillas, ejemplo:
select distinct 1 codempresa, trunc(rec."datenew") as fecha_ingreso, round(sum(nvl(txl."base",0)+nvl(txl."amount",0) ),4) as "CAJA", round(sum(nvl(txl."base",0)),4) as "CNT_VENTAS_GENERAL", round(sum( nvl(txl."amount",0)),4) as "CNT_IVA_COBRADO" from "tickets"@postgs tk inner join "receipts"@postgs rec on tk."id" = rec."id" left outer join "taxlines"@postgs txl on txl."receipt"= rec."id" where trunc(rec."datenew") between to_date(&FECHAI,'dd/mm/yyyy') and to_date(&FECHAF,'dd/mm/yyyy') group by trunc(rec."datenew") order by trunc(rec."datenew") ASC;