oracle y postgres database

5
Integregacion Oracle – Postgres Databases 2012 Paolo Jalón e-technology

Upload: paolo-jalon

Post on 03-Jan-2016

46 views

Category:

Documents


0 download

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

Page 1: Oracle y Postgres Database

Integregacion Oracle – Postgres Databases

2012

Paolo Jalón e-technology

Page 2: Oracle y Postgres Database

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:

Page 3: Oracle y Postgres Database

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

Page 4: Oracle y Postgres Database

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) )

Page 5: Oracle y Postgres Database

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;