Ir al contenido



Foto

dbx oracle en red


  • Por favor identifícate para responder
10 respuestas en este tema

#1 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 17 enero 2011 - 03:59

Hola a todos,

  A ver si me podéis decir lo que me esta ocurriendo.
Tengo delhi 2007 y XP.  Estoy haciendo unas pruebas con oracle 10g xe.
Uso los componentes DBX.


delphi
  1. procedure ConectarOracle(serv, db, user, pass: string);
  2. begin
  3.   with form1.SQLConnection1 do
  4.   begin
  5.  
  6.     ConnectionName := 'OracleConnection';
  7.     DriverName := 'Oracle';
  8.     LibraryName := 'dbxora30.dll';
  9.     VendorLib := 'oci.dll';
  10.     GetDriverFunc := 'getSQLDriverORACLE';
  11.     Params.Clear;
  12.     Params.Add('HostName=' + serv);
  13.     Params.Add('Database=' + db);
  14.     Params.Add('User_Name=' + user);
  15.     Params.Add('Password=' + pass);
  16.     try
  17.       Open;
  18. //      ShowMessage('Conexión valida');
  19.     Except
  20.       ShowMessage('Falla la conexión');
  21. //      CodError := 4;
  22.     end;
  23.   end;
  24. end;






delphi
  1. ConectarOracle(Edit1.Text, 'xe', 'xxxx', 'xxxx');



Pongo localhost en el edit y se conecta sin problemas

Ahora esto lo llevo a un pc remoto (en red) con Windows 7 poniendo
en el edit el nombre del pc con XP (donde esta la base) y NO se conecta.
En el Windows 7 tengo instalado el Cliente de Oracle xe sin tocar nada.

Y en la carpeta de la aplicación he puesto la dlls dbxora30.dll y oci.dll

Y he deshabilitado los cortafuegos.

A ver si alguien sabría algo de esto

Muchas gracias a todos

  • 0

#2 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 260 mensajes
  • LocationMedellín Colombia

Escrito 17 enero 2011 - 07:17

Hola,
tengo entendido que en el equipo cliente, hay que escribir el nombre del SID de Oracle XE, en este caso seria XE, por allí tendrías que buscar algo sobre los archivos de configuración del cliente de Oracle, creo que son *.ora

Saludos
  • 0

#3 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.079 mensajes
  • LocationRepública Dominicana

Escrito 18 enero 2011 - 06:12

Hola,
tengo entendido que en el equipo cliente, hay que escribir el nombre del SID de Oracle XE, en este caso seria XE, por allí tendrías que buscar algo sobre los archivos de configuración del cliente de Oracle, creo que son *.ora

Saludos


Saludos.

Añadiendo a lo anterior, ¿Probaste a conectarte directamente a través de otra aplicación?.
  • 0

#4 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 18 enero 2011 - 12:03

Hola a todos,

  Gracias por contestarme. Me pude conectar en red con mysql después de darle privilegios a root.
A través de http puerto 8080 si he conseguido conectarme al apex del servidor de oracle. Pero ahí me he quedado.

Gracias y saludos


  • 0

#5 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 18 enero 2011 - 01:14

Hola de nuevo,

  He puesto en el Tnsnames.ora que se encuentra en el servidor lo siguiente;

CONEX_DESDE_HPI3=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.140)(PORT = 1521))
(CONNECT_DATA = (SID = XE))
)

CONEX_DESDE_HPI3 es el nombre del alias
192.168.1.140 es la IP del pc que tiene el servidor de Oracle xe
y el puerto habilitado en el cortafuegos.

ahora lo que no se es como llamar a ese alias desde el cliente con dbx

gracias a todos


  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.133 mensajes

Escrito 18 enero 2011 - 02:17

Lee este hilo  http://www.delphiacc...php?topic=360.0 de pronto te puede servir.
  • 0

#7 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 18 enero 2011 - 05:49

Hola de nuevo,
 
  Ahora si que ya no se que puede pasar. Tengo en Delphi;



delphi
  1. procedure ConectarOracle(serv, db, user, pass: string);
  2. begin
  3.   with form1.SQLConnection1 do
  4.   begin
  5.  
  6.     ConnectionName := 'OracleConnection';
  7.     DriverName := 'Oracle';
  8.     LibraryName := 'dbxora30.dll';
  9.     VendorLib := 'oci.dll';
  10.     GetDriverFunc := 'getSQLDriverORACLE';
  11.     Params.Clear;
  12. //    Params.Add('HostName=' + serv);
  13.     Params.Add('Database=' + db);
  14.     Params.Add('User_Name=' + user);
  15.     Params.Add('Password=' + pass);
  16.  
  17.     Params.Add('rowsetsize=20');
  18.     Params.Add('blobsize=-1');
  19.     Params.Add('localecode=0000');
  20.     Params.Add('oracle transisolation=ReadCommited');
  21.     Params.Add('os authentication=False');
  22.     Params.Add('multiple transaction=False');
  23.     Params.Add('trim char=False');
  24.     Params.Add('decimal separator=.');
  25.  
  26.  
  27.  
  28.  
  29. //    Params.Add(
  30. //    'ConnectionString=DriverName=Oracle,DataBase=CONEX,' +
  31. //    'User_Name=javier, Password=javier,RowsetSize=20,BlobSize=-1,' +
  32. //    'ErrorResourceFile=,LocaleCode=0000,' +
  33. //    'Oracle TransIsolation=ReadCommited,' +
  34. //    'OS Authentication=False,Multiple Transaction=False,' +
  35. //    'Trim Char=False,Decimal Separator=.');
  36.  
  37. //    try
  38.       Close;
  39.       Open;
  40.       ShowMessage('Conexión valida');
  41. //    Except
  42. //      ShowMessage('Falla la conexión');
  43. //      on E: Exception  do
  44. //      Application.MessageBox( PChar( E.ClassName + ': ' + E.Message ),
  45. //                            'Error', MB_ICONSTOP );
  46.  
  47. //      CodError := 4;
  48. //    end;
  49.   end;
  50. end;




En el tnsnames.ora tengo;

BASE_XE=
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = pc3)(PORT = 1521))
  )
#  (SERVICE_NAME = XEXDB)
  (SID = XE)
)


En database pongo BASE_XE

En service_name funciona con XEXDB y con XE
y si pongo el SID=XE tambien funciona
y si pongo los dos el service_name y el sid tambien funciona

Esto funciona en local.

En remoto me salta un error  DBXerror  error code -1

Y aquí si que ya no se que hacer, pues esto parece un error de dbexpress
y no de oracle. Debe faltar algo que el pc local tiene y el remoto no lo tiene.
Copie los ini de dbexpress al directorio de la aplicacion remota y nada


Gracias a todos
Mañana será otro día que aquí ahora son la 0:50 de la madrugada


  • 0

#8 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 490 mensajes
  • LocationEspaña

Escrito 24 enero 2011 - 01:10

Yo tuve algunos problemas parecidos hasta que me di cuenta de dos cosas:

1.- Cuando cambiaba de ordenador, en el nuevo no tenía entrada en el fichero "hosts" (en c:\windows\system32\drivers\etc) al nombre del servidor de Oracle, y claro, no lo encontraba y no se conectaba

2.- En algunos ordenadores que otros compañeros habían instalado otras cosas, me buscaba el servidor desde otro TNSNAMES.ORA diferente. Para que busque por defecto el tnsnames de alguna ubicación es necesario añadir una variable de sistema llamada TNS_ADMIN, donde le dices la carpeta de instalación de dicho fichero.

Prueba a ver y nos comentas
Un saludo
  • 0

#9 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 25 enero 2011 - 08:05

Hola a todos
 
  Gracias por responderme. He estado haciendo las pruebas que me dijistes ELKurgan y he conseguido
algo.

  Teniendo dos ordenadores con Oracle 10g server instalado en cada uno de ellos y con el siguiente
tnsnames.ora en el que hace de cliente y sin modificar el fichero host;


XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HPI3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


BASE_XE=
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = pc3)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = XE)
#  (SID = XE)
  )
)


Desde uno de ellos que hace de cliente con windows7 sin modificar el fichero host,
SI consigo que se conecte al pc que hace de servidor de oracle y puedo hacer consultas.


Ahora en un XP virtualizado que esta en el PC que hace de cliente,
que accede bien al otro XP donde se encuentra el servidor Oracle, instalo el Oracle 10g Client.

Este Oracle 10g Client no trae ningún fichero tnsnames.ora ni ningún fichero .ora.
Entonces copio el tnsnames.ora anterior cambiando HOST=HPI3 por HOST=hpi3vm que
es el nombre del pc virtualizado, el otro HOST=pc3 lo dejo igual, que es el nombre del pc
donde esta el servidor de oracle. Aquí el fichero HOST del etc lo modifico poniendo
192.168...... pc3 que es donde se encuentra el servidor de oracle. También pongo
en la variable de entorno de sistema TNS_ADMIN=$path;c:\xeclient que es donde he
copiado el fichero tnsnmaes.ora. 


Entonces ejecuta el programita que he hecho de conexión y nada, es que ni intenta conectarse creo,
por lo rápido que me dice que falla la conexión.

También copie el listener.ora y nada.

Con el software de Oracle 10g Client cuando lo instale en el pc que hacía de cliente sin estar virtualizado
tampoco me funcionaba.

Muchas gracias a todos y a  ELKurgan por ayudarme. A ver si se consigue que funcione el Oracle 10g Client

Saludos

  • 0

#10 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 25 enero 2011 - 10:53

Se me olvidaba, tanto el Oracle 10g server como el Oracle 10g client son los dos las versiones express

  • 0

#11 jaimeh

jaimeh

    Member

  • Miembros
  • PipPip
  • 18 mensajes

Escrito 26 enero 2011 - 04:14

Hola a todos,

  Al final no conseguí hacer funcionar al Oracle 10g client express, con lo cual,
instalé el Oracle 10g Client, la estandar edición y fué mejor.
  Esta versión no crea el fichero tnsnames.ora, así que copié el mismo que
había en el oracle del servidor, a la carpeta  C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
del pc del cliente, que en la versión del Oracle 10g Client express no existía nada parecido a esta ruta.

  El tnsname.ora en cuestión era el siguiente;

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = pc3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


BASE_XE=
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = pc3)(PORT = 1521))
  )
  (SERVICE_NAME = XE)

)

  Donde pc3 es el nombre del pc donde se encuentra el servidor Oracle. Al no poner
la dirección IP del HOST en número, entonces hay que añadir al fichero Hosts de
c:\windows\system32\drivers\etc  una línea que ponga la dirección IP del pc
del servidor Oracle y el nombre del pc de dicho servidor que en este caso es pc3.

No hace falta poner la variable de entorno del sistema TNS_ADMIN.

Y con esto ya puedo acceder a la base de datos del servidor.

El paramétro Database puede ser en este caso tanto XE como BASE_XE
funciona con los dos.

Muchas gracias a todos.

Saludos
  • 0