Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   BBDD Firebird Abierta (https://www.clubdelphi.com/foros/showthread.php?t=63953)

madmai 10-03-2009 18:29:06

BBDD Firebird Abierta
 
Como puedo saber si una base de datos firebird esta abierta? gracias de antemano, algun truco ?

duilioisola 10-03-2009 18:36:04

Desde dónde? (tu aplicación, el sistema operativo, una aplicación externa)

Desde el sistema operativo puedes ver las conexiones al puerto 3050, por ejemplo.
(netstat -n en dos/win/linux)

Código:

Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Duilio>netstat -n

Conexiones activas

  Proto  Dirección local        Dirección remota      Estado
  TCP    127.0.0.1:1049        127.0.0.1:1050        ESTABLISHED
  TCP    127.0.0.1:1050        127.0.0.1:1049        ESTABLISHED
  TCP    127.0.0.1:1051        127.0.0.1:1052        ESTABLISHED
  TCP    127.0.0.1:1052        127.0.0.1:1051        ESTABLISHED
  TCP    127.0.0.1:1053        127.0.0.1:1054        ESTABLISHED
  TCP    127.0.0.1:1054        127.0.0.1:1053        ESTABLISHED
  TCP    127.0.0.1:1062        127.0.0.1:1063        ESTABLISHED
  TCP    127.0.0.1:1063        127.0.0.1:1062        ESTABLISHED
  TCP    127.0.0.1:2340        127.0.0.1:62514        ESTABLISHED
  TCP    127.0.0.1:2343        127.0.0.1:62514        ESTABLISHED
  TCP    127.0.0.1:2344        127.0.0.1:62516        ESTABLISHED
  TCP    127.0.0.1:2345        127.0.0.1:62516        ESTABLISHED
  TCP    127.0.0.1:5152        127.0.0.1:1059        CLOSE_WAIT
  TCP    127.0.0.1:62514        127.0.0.1:2340        ESTABLISHED
  TCP    127.0.0.1:62514        127.0.0.1:2343        ESTABLISHED
  TCP    127.0.0.1:62516        127.0.0.1:2344        ESTABLISHED
  TCP    127.0.0.1:62516        127.0.0.1:2345        ESTABLISHED
  TCP    192.168.152.200:445    192.168.152.26:1722    ESTABLISHED
  TCP    192.168.152.200:3050  192.168.152.252:2541    ESTABLISHED
  TCP    192.168.152.200:3345  192.168.152.252:139    ESTABLISHED
  TCP    192.168.152.200:4539  72.14.247.18:80        TIME_WAIT
  TCP    192.168.152.200:4544  62.43.189.164:119      ESTABLISHED
  TCP    192.168.152.200:4547  69.63.186.12:80        ESTABLISHED
  TCP    192.168.152.200:4565  192.168.152.252:23    ESTABLISHED
  TCP    192.168.152.200:4567  216.239.122.102:80    TIME_WAIT
  TCP    192.168.152.200:4568  216.239.122.178:80    TIME_WAIT
  TCP    192.168.152.200:4569  216.239.122.227:80    TIME_WAIT
  TCP    192.168.152.200:4570  216.239.122.178:80    TIME_WAIT
  TCP    192.168.152.200:4571  216.239.122.227:80    TIME_WAIT
  TCP    192.168.152.200:4575  168.75.68.60:80        TIME_WAIT
  TCP    192.168.152.200:4576  209.85.133.83:80      ESTABLISHED
  TCP    192.168.152.200:4579  69.63.176.167:80      ESTABLISHED

C:\Documents and Settings\Duilio>

Puedes ver los servicios abiertos con un top en linux.
Código:

top - 18:42:52 up 18 days,  3:32,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  89 total,  1 running,  88 sleeping,  0 stopped,  0 zombie
Cpu(s):  0.0% us,  0.1% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:  1024588k total,  838460k used,  186128k free,    33096k buffers
Swap:  2064376k total,      160k used,  2064216k free,  674580k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2818 canna    16  0 29616  25m  572 S  0.0  2.6  0:00.49 cannaserver
22827 firebird  16  0 22804  19m 2736 S  0.0  1.9  0:01.38 fb_inet_server
22846 firebird  16  0 19448  15m 2612 S  0.0  1.6  0:00.30 fb_inet_server
2934 root      16  0 19220 6756 1580 S  0.0  0.7  1:36.19 hald
22841 firebird  16  0  8876 6532 2412 S  0.0  0.6  0:00.08 fb_inet_server
22763 firebird  16  0  7840 5764 2668 S  0.0  0.6  0:00.53 fb_inet_server
2727 ntp      16  0 18544 5288 4216 S  0.0  0.5  0:00.22 ntpd
22824 root      16  0 88172 4860 2980 S  0.0  0.5  0:19.51 smbd
 2392 root      15  0 66412 4460 3248 S  0.0  0.4  4:20.68 procfgd
22840 root      16  0 71500 3832 2844 S  0.0  0.4  0:02.82 smbd
22828 root      16  0 76828 3820 2928 S  0.0  0.4  0:00.07 smbd
22875 root      16  0 72408 3688 2908 S  0.0  0.4  0:00.00 smbd
 2756 root      16  0 27916 3624 2200 S  0.0  0.4  0:00.02 sendmail
 2806 htt      18  0 36512 3344 2696 S  0.0  0.3  0:00.00 htt_server
 2764 smmsp    16  0 27768 3140 2068 S  0.0  0.3  0:00.00 sendmail
22825 firebird  16  0  5840 3072 2036 S  0.0  0.3  0:00.00 fb_inet_server
2870 root      16  0 69548 2920 2232 S  0.0  0.3  0:00.53 smbd
 2879 root      18  0 69544 2868 2184 S  0.0  0.3  0:00.00 smbd

Desde tu aplicación podrías ver la propiedad del componente DataBase
Código Delphi [-]
   if (DataBase.Active) then ...

madmai 11-03-2009 08:33:53

EL problema reside en....
 
dos aplicaciones, una hace copia de seguridad de la base de datos, y la otra lee la base de datos pues bien mientras esta haciendo copia de seguridad no puede leer la base de datos, alguna solucion?

duilioisola 11-03-2009 08:52:44

Pues entonces estás haciéndolo mal. (Espero no te ofenda el comentario...)

Mediante GBAK debes hacer un backup de la base de datos y eso es lo que debes copiar en tu copia de seguridad.

GBAK funciona sin importar otras conexiones.

Yo tengo automatizada un GBAK cada noche o cada mediodía en los clientes.
Los clientes hacen copia de sus datos y del directorio c:\backup en donde les dejo backups de las bases.
Si es en Windows, hago 5 tareas programadas. Las llamo una cada día para que generen el backup del día.

Por ejemplo:
Código:

backup_lunes.bat

gbak -t BASE.FDB BASE_LUNES.FBK -user SYSDBA -pass masterkey
copy BASE_LUNES.FBK DIRECCION_DESTINO_COPIA_SEGURIDAD

backup_martes.bat

gbak -t BASE.FDB BASE_MARTES.FBK -user SYSDBA -pass masterkey
copy BASE_MARTES.FBK DIRECCION_DESTINO_COPIA_SEGURIDAD

...


madmai 11-03-2009 09:55:32

utilizo el copyfile
 
es decir hago copia de seguridad del fichero GDB de la base de datos y si esta abierta por cualquier otro programa me da un error.

duilioisola 11-03-2009 10:49:16

Pues como he dicho antes. Es una práctica equivocada!

Debes hacer un backup (que genera un archivo GBK o FBK o con la extensión que quieras) y hacer copia de eso.

Nunca se debe copiar la GDB directamente. No garantizas que no haya nada abierto, en proceso o alguna otra cosa rara.

madmai 11-03-2009 11:26:38

ya pero lo hago asi
 
Se te ocurre algo de como puedo hacerlo para que no me interrumpa el proceso de copia mientras lee el otro programa, gracias de antemano. o detectar que esta copiando el archivo para asi interrumpir el proceso de lectura del otro programa.

duilioisola 11-03-2009 11:48:15

Ahora entiendo menos que antes...
¿Qué programa interrumpe a cuál?
¿Qué es lo que estás copiando?

¿Estos dos programas son tuyos?
Postea el código de como haces el backup y la copia. Quizás logremos entender qué es lo qué quieres.

¿El programa de copias de seguridades de terceros? ¿Cuál?
- Si es de terceros, supongo que tiene una hora a la que hace la copia. De ser así, debes generar tu backup un poco antes.
- Algunos programas de Backup pueden ejecutar procesos antes de empezar. Si es así, puedes decirle que haga un "gbak -t ..."

Si das una explicación detallada, te podremos ayudar. De lo contrario, ...

madmai 11-03-2009 12:46:29

UN Programa (primero) hace copia de seguridad de la base de datos copyfile y el otro accede(segundo) a la bbdd por lo tanto si accede el segundo programa la copia del primer programa se interrumpe, lo que quiero es que en el segundo programa detecte que el primero esta haciendo copia de seguridad para asi que no lea hasta que no acabe de hacer la copia de seguridad o avisar que el otro programa esta haciendo copia de seguridad, gracias.

cdac901 22-03-2009 06:51:08

Que tal, por experiencia propia no se deberia hacer copias a traves de un copy, me ha pasado que se han dañado datas de clientes por este motivo (te dire es un poco tedioso y complicado recuperar datas con las herramientas que se ofrecen en el mercado pero lo he logrado :)) pero esto acarrea costos adicionales y molestias a los clientes, en esto momentos utilizamos las herramienta FIBS 2.02 nos a ahorrado muchos dolores de cabeza. Espero que te sirva mi recomendación.


La franja horaria es GMT +2. Ahora son las 15:50:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi