Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Oracle y ZeosDBO
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Oracle y ZeosDBO

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Oracle y ZeosDBO Responder citando

Hola a tod@s, soy nuevo por aquí por lo que aprovecho para saludaros icon_lol.gif

¿Podeis decirme como se configura una conexión (TZConnection) para trabajar con Oracle?

Utilizo D-7, Oracle 10g Express y Zeos 6.6.4-stable

Gracias de antemano
salvica
MensajePublicado:
Mar Ene 20, 2009 7:36 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



salvica escribió:
Hola a tod@s, soy nuevo por aquí por lo que aprovecho para saludaros icon_lol.gif

¿Podeis decirme como se configura una conexión (TZConnection) para trabajar con Oracle?

Utilizo D-7, Oracle 10g Express y Zeos 6.6.4-stable

Gracias de antemano
salvica


Hola Salvica, a continuación te mostramos un enlace para que puedas descargar "AjpdSoft Monitor Espacio Oracle" que utiliza TZConnection para conectar mediante Delphi 6 y ZeosDBO 6.5.1 a Oracle 10g:

http://www.ajpdsoft.com/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=227

Aunque las versiones no son idénticas a las que tú utilizas, son muy parecidas.

Esta aplicación realiza una conexión a Oracle 10g y ejecuta algunas consultas SQL mostrando el resultado en un TDBGrid mediante TDatasource y TZReadOnlyQuery.

Para conectar el TZConnection con Oracle tienes que iniciar las siguientes propiedades, con el siguiente código (más o menos):

Código:

    conexionBD.Disconnect;
    conexionBD.User := txtUsuario.Text;
    conexionBD.Password := txtContrasena.Text;
    conexionBD.Database := txtBD.Text;
    conexionBD.HostName := txtServidor.Text;
    conexionBD.Port := StrToInt(txtPuerto.Text);
    try
      conexionBD.Connect;
    except
      raise;
    end;


Donde "conexionDB" es un componente de tipo TZConnection.
MensajePublicado:
Jue Ene 22, 2009 2:10 am
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Responder citando

Hola alonsojpd, gracias por responder.

He bajado el proyecto que indicas y nada icon_redface.gif sigo sin poder conectarme
El mensaje en cuestión que me da es:
SQL Error: ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado

He probado a poner de todoXE, tnsnames.ora (con el path completo y sin él), las IP de todas las formas en el TConnection pero siempre consigo el mensaje anterior (incluso me creé una variable de entorno)

Por si sirve de algo, los valores de configuración de la Base de Datos son:
Código:

[size=18]Versión[/size]

Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

[size=18]Base de Datos[/size]
NAME   XE
CREATED   24/12/08 14:57:47
RESETLOGS_TIME   24/12/08 14:57:50
PRIOR_RESETLOGS_CHANGE#   1
PRIOR_RESETLOGS_TIME   07/02/06
LOG_MODE   NOARCHIVELOG
CHECKPOINT_CHANGE#   1492250
ARCHIVE_CHANGE#   1451745
OPEN_RESETLOGS   NOT ALLOWED
VERSION_TIME   24/12/08 14:57:47
OPEN_MODE   READ WRITE
PROTECTION_MODE   MAXIMUM PERFORMANCE
PROTECTION_LEVEL   UNPROTECTED
REMOTE_ARCHIVE   ENABLED
DATABASE_ROLE   PRIMARY
ARCHIVELOG_CHANGE#   213419
SWITCHOVER_STATUS   SESSIONS ACTIVE
DATAGUARD_BROKER   DISABLED
GUARD_STATUS   NONE
FORCE_LOGGING   NO

Agradecido por tu tiempo
salvica
MensajePublicado:
Jue Ene 22, 2009 1:19 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Responder citando

salvica escribió:
Hola alonsojpd, gracias por responder.

He bajado el proyecto que indicas y nada icon_redface.gif sigo sin poder conectarme
El mensaje en cuestión que me da es:
SQL Error: ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado

He probado a pone...


¿Qué puerto estás poniendo? para el Oracle XE suele ser el 1521. Asegúrate de esto y nos cuentas. En la aplicación que te hemos indicado el puerto que aparece por defecto es el 1021, cámbialo a 1521.
MensajePublicado:
Jue Ene 22, 2009 4:43 pm
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Responder citando

alonsojpd escribió:
¿Qué puerto estás poniendo? para el Oracle XE suele ser el 1521. Asegúrate de esto y nos cuentas. En la aplicación que te hemos indicado el puerto que aparece por defecto es el 1021, cámbialo a 1521.

He probado desde el inicio con el 1521, con el CERO (por si acaso), y nada.

Hay una cosa que me extraña (bueno, dos en realidad)

1º - Si en el ZConnection utilizo ADO en vez de ORACLE como protocolo me conecto sin problemas icon_question.gif pero no me deja crear tablespaces, (cuando pongo la ruta me dice que tengo un carácter inválido)
Código:

******* cadena de conexión con ADO *******
{ comprobar la conexión }
  with ZConnection do begin
       Connected:= false;
       HostName := '';
       User     := '';
       Password := '';
       Protocol := 'ado';
       Port     := 0;
       Database := 'Provider=OraOLEDB.Oracle.1;'+
                   'Persist Security Info=True;'+
                   'Data Source='+Edit_HOST.Text+';'+
                   //'Mode=ReadWrite;'+
                   'User ID='+Edit_ADMIN_USER.Text+';'+
                   'Password='+Edit_ADMIN_PASS.Text+';';
       try
         BitBtn_CONNECT.Enabled := false;
         Connect;
         Disconnect;
       except
       end;
       //Database := MYSQL_DBF;
  end; { del with ZConnection do }

******* crear el TABLESPACE con ADO *******
  with Query do begin
       Active := false;
       SQL.Clear;
       SQL.Add( 'CREATE TABLESPACE '+USER_TBSPACE+' LOGGING' );
       SQL.Add( '       DATAFILE   ''G:\Oracle-v10g\Servidor\oradata\XE\'+USER_TBSPACE+'.dbf''' );
       SQL.Add( '       SIZE 50M'      );
       SQL.Add( '       AUTOEXTEND ON' );
       SQL.Add( '       NEXT 10M'      );
       SQL.Add( '       MAXSIZE 100M' );
       try
         ExecSQL;
       except
         SQL.SaveToFile( 'ERROR_CREATE_ORACLE_tablespace_'+USER_TBSPACE+'.sql' );
       end;
  end; { del with Query do }

esto dice que tiene un caracter erróneo
SQL.Add( ' DATAFILE ''G:\Oracle-v10g\Servidor\oradata\XE\'+USER_TBSPACE+'.dbf''' );

2º - En el directorio del programa hay un fichero llamado sqlnet.log donde dice que hay un error en el acceso de un programa en Delphi (el propio Delphi), pero pone el usuario del ordenador no el que intenta conectarse ¿esto tiene que ser asi?
Código:

***********************************************************************
Fatal NI connect error 12541, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC-SALVADOR)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)(CID=(PROGRAM=C:\Program Files\Borland\Delphi7\Bin\delphi32.exe)(HOST=PC-SALVADOR)(USER=Salvador))))

  VERSION INFORMATION:
   TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
   Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
  Time: 21-ENE-2009 11:04:42
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12541
    TNS-12541: Message 12541 not found; No message file for product=NETWORK, facility=TNS
    ns secondary err code: 12560
    nt main err code: 511
    TNS-00511: Message 511 not found; No message file for product=NETWORK, facility=TNS
    nt secondary err code: 61
    nt OS err code: 0

Lamento el rollo que te he largado, pero creo que eres mi última esperanza (provengo de MySql y parece que las cosas son más fáciles)

Saludos
salvica
MensajePublicado:
Jue Ene 22, 2009 10:31 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



salvica escribió:
He probado desde el inicio con el 1521, con el CERO (por si acaso), y nada.

Hay una cosa que me extraña (bueno, dos en realidad)

1º - Si en el ZConnection utilizo ADO en vez de ORACLE como protocolo me conecto sin problemas icon_question.gif pero no me deja crear tablespaces, (cuando pongo la ruta me dice que tengo un ca...


No nos ha dado tiempo a revisar tu post completo pero te comentamos algunas cosas, por si acaso:

1. Hemos realizado unas pruebas y a nosotros nos funciona el programa que te comentamos, AjpdSoft Monitor Espacio Oracle, poniendo en la propiedad "Protocol" el valor "oracle-9i", no "oracle" ni "ado". Se nos conecta perfectamente a Oracle Database 11g y a Oracle Database 10g Express Edition (XE).

2. Te recomendamos, que en vez de pasarle los valores variables concatenando texto con el SQL lo hagas utilizando parámetros. Es decir, en vez de utilizar la línea:

Código:

tcTablespaces.SQL.Add( ' DATAFILE ''G:\Oracle-v10g\Servidor\oradata\XE\'+USER_TBSPACE+'.dbf''' );


Utilices esto otro:
Código:

    SQL.Add( ' DATAFILE :pFicheroDatos');
    ParamByName('pFicheroDatos').DataType := ftString;
    ParamByName('pFicheroDatos').AsString :=
        '"G:\Oracle-v10g\Servidor\oradata\XE\' +
        USER_TBSPACE + '.dbf"');


3. Asegúrate de que tengas correctamente el fichero tnsnames.ora y el fichero listener.ora de Oracle XE, un ejemplo del contenido de estos ficheros:

* tnsnames.ora (de Oracle XE instalado en GNU Linux Fedora, para Windows es el mismo):

Código:

# tnsnames.ora Network Configuration File:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = pcservidor)(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)
    )
  )



* listener.ora (de Oracle XE instalado en Windows XP):

Código:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = pcservidor)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)




4. Lo que nos comentas del usuario del sistema operativo es relativamente normal, Oracle admite tanto autenticación por usuarios creados en el propio Oracle como usuarios del sistema operativo, con lo cual puede ser normal.


5. Si ves que no lo consigues con ZeosDBO, existen componentes gratuitos para conexión nativa a Oracle, uno de ellos, con el que hemos trabajado bastante y funciona perfectamente, es NCOCI, aquí te mostramos cómo instalarlo:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=224#NCOCI8

Y en esta web hay varios programas que lo utilizan con el código fuente disponible.


Ultima edición por alonsojpd el Jue Ene 22, 2009 11:48 pm, editado 1 vez
MensajePublicado:
Jue Ene 22, 2009 11:21 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



Por cierto, prueba esto otro, si te es posible: abre una ventana de MS-DOS y ejecuta el siguiente comando:

Código:

tnsping XE


Si tienes bien configurado el fichero tnsnames.ora te devolverá algo así:

C:\oraclexe\app\oracle\product\10.2.0\server\BIN>TNSPING XE
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 23-ENE-2
009 01:41:40
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Archivos de parßmetros utilizados:
C:\oraclexe\app\oracle\product\10.2.0\server\network\admin\sqlnet.ora
Adaptador TNSNAMES utilizado para resolver el alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = pcalonso
2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
Realizado correctamente (30 mseg)
C:\oraclexe\app\oracle\product\10.2.0\server\BIN>


Si no te devuelve algo así, indicando "Realizado correctamente (xxx mseg)" es porque tienes algún problema de configuración.
MensajePublicado:
Jue Ene 22, 2009 11:44 pm
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Responder citando

Agradecido por vuestra respuesta y por el tiempo dedicado.

Hoy me tocan 24 horitas de trabajo, mañana cuando salga lo pruebo y os comento.

Salvica
MensajePublicado:
Vie Ene 23, 2009 3:49 pm
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



alonsojpd escribió:
Por cierto, prueba esto otro, si te es posible: abre una ventana de MS-DOS y ejecuta el siguiente comando:

Código:

tnsping XE


Si tienes bien configurado el fichero tnsnames.ora te devolverá algo así ....

Bueno, pues eso está correcto, por lo que desinstalé Oracle y lo he vuelto a instalar y ... icon_razz.gif icon_razz.gif icon_razz.gif ¡FUNCIONA! icon_razz.gif icon_razz.gif icon_razz.gif

Como la instalación ha sido la misma, (no cambié nada), estoy por jurar que el problema viene porque también estaba instalado el Cliente icon_question.gif

Ahora, cuando ejecuto vuestro programa Monitor AjpdSoft Espacio Oracle, se conecta y rellenas las pestañas Tablespaces y Ficheros de Datos, la pestaña Conexiones - Programas la deja en blanco, y la pestaña Conexiones - Usuarion no la trata. Recibo el mensaje SQL Error: OCI_SUCCESS_WITH_INFO, aunque este es otro tema y ya veré si lo recibo con mi aplicación.

Gracias por todo
Salvica
MensajePublicado:
Dom Ene 25, 2009 1:04 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



salvica escribió:
Bueno, pues eso está correcto, por lo que desinstalé Oracle y lo he vuelto a instalar y ... icon_razz.gif icon_razz.gif icon_razz.gif ¡FUNCIONA! icon_razz.gif icon_razz.gif icon_razz.gif

Como la instalación ha sido la misma, (no cambié nada), estoy por jurar que el problema viene porque también estaba instalado el Cliente icon_question.gif

Ahora, cuando ejecuto vuestro programa Monitor AjpdSoft Espacio Oracle, se conecta y rellenas las pestañas Tablespaces y Ficheros de Datos, la pestaña Conexiones - Programas la deja en blanco, y la pestaña Conexiones - Usuarion no la trata. Recibo el mensaje SQL Error: OCI_SUCCESS_WITH_INFO, aunque este es otro tema y ya veré si lo recibo con mi aplicación.

Gracias por todo
Salvica


Estupendo, nos alegramos de que te funcione.

El error que nos comentas, hemos estado comprobando el componente ZeosDBO con Oracle y, efectivamente, a veces da ese error, inexplicablemente. Ocurre aleatoriamente, por lo que será más difícil de averiguar el motivo.

Normalmente, en nuestros desarrollos, siempre utilizamos el componente NCOCI8 para la conexión con Oracle desde Delphi.
MensajePublicado:
Dom Ene 25, 2009 9:01 pm
Top of PageVer perfil de usuario
salvica
Excelente usuario


Registrado: Jan 20, 2009
Mensajes: 16

Asunto: Re: Oracle y ZeosDBO Responder citando



Anuncios



alonsojpd escribió:
Normalmente, en nuestros desarrollos, siempre utilizamos el componente NCOCI8 para la conexión con Oracle desde Delphi.

Me he acostumbrado a Zeos con la ventaja de que sirve para Win$ y Linux icon_wink.gif así que seguiré con ellos (no es por despreciar).

Por cierto, ya que estoy en el foro mato dos pájaros de un tiro icon_razz.gif icon_razz.gif icon_razz.gif
¿Sabes como se crea una tabla de FoxPro o dBase (DBF) con comandos SQL? Estoy haciendo Diseño de Aplicaciones Informáticas (DAI) y una de las prácticas incluye eso (aunque con Ado y VB)

Saludos, por cierto, por lo pronto (aunque lento) Oracle va como un tiro
Salvica
MensajePublicado:
Mar Ene 27, 2009 10:17 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+