Inserción desde ORACLE 9i a AS400 mediante DATABASE LINK. Da Error SQL Code 266

Marcel
03 de Noviembre del 2003
Inserción desde ORACLE 9i a AS400 mediante DATABASE LINK. Da Error SQL Code 266

El error completo que da el Driver ODBC (HIT ODBC AS400) es el siguiente:

The following error has occurred:

ORA-28500: la conexión de ORACLE a un sistema no Oracle ha devuelto este mensaje:
[Generic Connectivity Using ODBC][HiT][HiT ODBC Server/400][SQL/400][ODBS Error]AASPRO1 de DC@TRELIB no válido para la operación. (SQL State: HY000; SQL Code: 266)
ORA-02063: 2 lines precediendo a GW_AS400
ORA-06512: en "PROD00.P_SYNC_AASPRO", línea 42

Manny
03 de Noviembre del 2003
Hi, Marcel

Tienes que verificar una serie de parametros, pienso
que estas haciendo conexiones heterogenes, seguidamente debes de haber configurado el TNSNAMES.ORA, LISTENER.ORA, parametro HS en el init.ora de tu instancia, SQLNET.ORA.

En concepto conexiones Heterogenias (HS), son aquellas que no pertenecen a oracle, pero se apoyan a productos de treceros para poder llegar a intercambiar informacion con otros database.
Puedes verificar para el soporto del driver ODBC en esta pagina:

http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/server.920/a96544/toc.htm.


Hay varias maneras que tu puedes instalar y configurar un usuario con conectividad genérica dependiendo de requisitos de la seguridad. Un
mecanismo seguro se contornea bajo:

1. Crear un sinónimo PÚBLICO incluyendo la información QUE USA tomada del archivo de TNSNAMES.ORA. Es posible substituir esto por una
referencia directa a la secuencia de la conexión para quitar la necesidad de la entrada de TNSNAMES.ORA.

2. Crear un sinónimo PRIVADO que incluya el username y la contraseña para la fuente de datos alejada. La idea está para que cada usuario de ORACLE tenga un usuario de la fuente de datos de ODBC que empareja para preservar la seguridad en la fuente de datos alejada.

3.- Recuerde modificare el parameter GLOBAL_NAMES a FALSE, en tu init.ora. (TRELIB).

Ejemplo:
1.- Tengo un usuario llamado PIPPO con los objectos en IBM AS/400 , defino mi TNSNAMES.ORA, en ORACLE:

OASSIS.lo.oracle.com =
(DESCRIPTION= (ADDRESS=
(PROTOCOL=tcp(HOST=bspw123
(PORT=1522))
(CONNECT_DATA=(SID=LocalServer))
(HS=OK))

2.- Hago la conexion como SYSTEM y creo un DBLINK PUBLIC, sin meter la conexion.

create public database link As400 using 'OASSIS.lo.oracle.com';

3.- Proximamente, creo el DBLINK PRIVATE , pero esta vez incluyendo la CONNECT,

create database link AS400 connect to PIPPO identified by PIPPO;

3.- Haz la prueba primero de usar il ODBC.
Dale un ojo a la pagina que te senale, para ver si soporta la version que tienes del drivers ODBC.

Suerte.