12 - ANEXOS – Especificaciones de SQL Firebird®.

El motor de Base de Datos esta basado en el  Open Source® de Interbase® de Borland® y se denomina Firebird®.

Las condiciones que hace que dicho motor sea aplicable a gran variedad de sistemas basados en x86 es la baja carga que presenta al CPU (pudiéndose implementar en maquinas con procesadores de baja velocidad) y su robustez.

Sus características principales son:
Arquitectura multigeneracional.- Aunque este nombre nos suene un poco raro y complicado, es la forma en que Firebird® administra la concurrencia en las actualizaciones en los datos, así como el manejo de las transacciones. Nos asegura que no habrán bloqueos a nivel de página de datos ni de registro, ya que cada vez que se abre una transacción, Firebird® genera una copia de los datos para ese usuario. Esto asegura que las transacciones nunca necesitarán bloquear los registros en uso, por lo que los usuarios que están consultando datos no bloquearán a los que están escribiendo datos.
Triggers, o disparadores.- Firebird® cuenta con una de las implementaciones de triggers más completas comparada con otras bases de datos. Los triggers permiten la realización de acciones cada vez que se agrega, modifica o elimina un registro. De esta manera, podemos implantar reglas de negocio desde el nivel de la base de datos, por ejemplo, actualizar totales en una tabla cuando se modifican datos en otra, o llevar un registro de acciones mediante una bitácora. Todo esto al nivel de base de datos, lo que asegura que los triggers se ejecutarán siempre, no importando desde dónde se acceda a la base de datos.
Procedimientos almacenados.- Funcionan de manera similar a los triggers, con la diferencia de que pueden ser ejecutados de manera independiente a las acciones que se ejecuten sobre los registros. También permiten regresar los datos mediante una orden SELECT de SQL, como si fuera una tabla, de tal manera que se pueden realizar complejas consultas y devolverlas como una tabla, simplificando los procedimientos de consultas en los programas clientes.
Eventos. Tanto los procedimientos almacenados como los triggers pueden disparar eventos que pueden ser monitoreados desde algún cliente sobre un puerto TCP/IP configurable para “bases activas”.
Backups en línea. No existe necesidad de bajar el motor de base de datos para realizar un  proceso de backup. Un backup toma una imagen del estado de la base en el momento que este comienza, pudiendo de esta forma el usuario continuar con su trabajo mientras corre dicho proceso. De esta forma permite una operación 7 x 24.
Integridad referencial.- Permite establecer reglas de integridad entre tablas, para que no violen los principios de las relaciones entre tablas maestro-detalle.
Seguridad integrada.- Firebird® mantiene su lista de usuarios, y es necesario que se registre el usuario cada vez que se conecta a la base de datos. Además, se pueden asignar permisos independientes de acceso, modificación inserción y eliminación a por tabla a cada usuario.
Lenguaje SQL compatible con SQL 92.- La implementación de SQL en Firebird® es una de las más completas, incluso mejor que algunos de sus competidores de código abierto, como Postgres y MySQL, lo que asegura que se pueden realizar complejas consultas anidadas, y utilizar funciones de conversión como CAST o extracción de las partes de las fechas, con EXTRACT.
Funciones definidas por el usuario (UDF).- Cuando se requiere de funciones no integradas al SQL, o relacionadas con matemáticas, manejo avanzado de fechas, etc., Firebird® permite la creación y uso de funciones externas, que al ser registradas pueden utilizarse en combinación con SQL. Esto asegura la extensibilidad de la base de datos. Además, existen algunas bibliotecas de funciones definidas por el usuario (UDF) las cuales pueden ser utilizadas sin costo alguno.

Firebird® cuenta con muchas más características, como los generadores de números consecutivos, excepciones definidas por el usuario, además de que funciona en varias plataformas (en estos momentos Linux, Solaris, Mac OSX, HP-UX y Windows) y se está portando a otras más, lo que la hacen una ganga dentro de las bases de datos.

Monitoreo de dispositivos / Mensajes de error

Monitor de Controladores

El monitor de controladores permite examinar a bajo nivel como se encuentra la conexión desde la entidad que este corre y los nodos del estacionamiento. Su función es vital para poder recopilar toda la información que se generan en los diferentes nodos (unidades expendedoras y unidades lectoras) para así poder almacenarlas y/o enviar las respuestas necesarias.
El monitor de controladores es el encargado de realizar las tareas de “polling” o encuesta a los distintos nodos que están distribuidos sobre la red multidrop RS-485.
Dicha aplicación debe correr SIEMPRE desde aquella entidad que se destine para tal tarea (generalmente el servidor del parking). Si la misma se encuentra inactiva los nodos pasan a funcionar bajo la modalidad off-line (fuera de línea).

Para acceder al Monitor de Controladores simplemente el usuario habilitado debe dirigirse al tray icon de la aplicación y desde ahí pulsar el botón derecho del Mouse seleccionando el ítem correspondiente.

De no encontrarse el tray icon de la aplicación el administrador debe ubicar el icono correspondiente (Sic Core) dentro del escritorio de Windows® y correrla.

Seguido a la selección aparecerá una ventana como la siguiente:

En ella se visualizan tres partes importantes: una a la izquierda que enumera todos los nodos que el sistema puede encuestar y cuales de ellos ya están configurados y siendo administrados por el monitor de controladores, la segunda es la parte mas amplia donde muestra los mensajes que fluyen del lado del monitor de controladores hacia el o los nodos y viceversa, y por ultimo la de abajo que muestra los refrescos de las variables locales de cada nodo y como van siendo chequeados y actualizados.

De existir un nodo siempre en color rojo significa que el monitor de controladores no esta recibiendo respuesta del mismo.

La raíz de esto puede ser:

-          Falla en la comunicación del controlador del nodo. Personal técnico autorizado debe examinar los drivers de comunicación de la placa del controlador.
-          Error en el seteo de los parámetros del nodo (se asigno en el sistema un valor de número interno que no tiene correspondencia con el asignado en la placa controladora del nodo).

Si la falla es correlativa a una serie de nodos es probable que la raíz del problema
sea:
-          Algún elemento conversor (por ejemplo F.O. a RS485) que este dañado y que de el cuelgue una sección de controladores dentro de toda la red RS-485.
-          Error en el seteo de los parámetros de dicho conjunto de nodos (se asigno en el sistema es valores de numero interno que no tiene correspondencia con los asignados en las placa controladoras de los distintos nodos de dicho grupo).

Si la falla es general (todos los nodos dentro de la red acusan anomalía) las probables causas pueden ser:
-          Falla en el conversor RS-232 a RS485 que se sitúa en el puerto serie de la entidad que corre el monitor de controladores
-          Falla o desperfecto en el puerto serie RS-232 de la entidad (PC).
-          Error en el seteo del puerto (numero de puerto) de comunicación de la entidad con la red de controladores. Cuando se ha definido la entidad no ha sido colocado el puerto serial correcto en el que existe el vinculo físico / conversor RS23 a RS485.

Con respecto a los mensajes que se visualizan son solo a los fines de las inspecciones técnicas cuando surge algún tipo de anomalía.
Por ultimo se visualizan un conjunto de botones y un check box.
Dentro del conjunto de botones se encuentra uno que especifica “Monitor Comm LAN” que se realizara una explicación en el siguiente punto. El otro botón es “Ocultar” y simplemente lo que hace es minimizar la ventana del Monitor de Controladores.
Por ultimo el botón “No situar en el último” permite congelar la pantalla para poder realizar un scrolling y ver más detenidamente los mensajes que hayan ocurrido. Dicho congelamiento no detiene la encuesta. Si el botón se pulsa nuevamente se observara que la pantalla comienza a refrescarse con las sucesivas encuestas.

Con respecto al Check Box que enuncia “Paso a Paso” es SOLO A LOS FINES DE SUPERVISION TECNICA AVANZADA. Si el administrador decide marcar dicha casilla para automáticamente el protocolo de comunicación con los nodos y habilita un nuevo botón que permite realizar las encuestas paso a paso. Es una herramienta para realzar debugging frente a situaciones especiales. Desde ya el administrador DEBE desactivar esta casilla cuando termina de realizar el análisis correspondiente. En el periodo que esta se encuentra activada, el Monitor de Controladores solo establecerá la comunicación cada vez que el Administrador pulse el botón  “Siguiente”. ES SOLO A LOS FINES DE INSPECCION Y NO DEBE EMPLEARSE ARBITRARIAMENTE.

Comunicaciones entre Sitios

Por medio del botón “Monitor Comm LAN” dentro del Monitor de Controladores como a través del menú Varios è Monitor Comunicaciones el operador puede acceder a una ventana que permite visualizar la comunicación TCP/IP que establecen las diferentes entidades.

El empleo del Monitor de comunicaciones es a los fines de visualizar cuales son las entidades que sufren de una conexión LAN deficiente o inadecuada.

También pueden observarse los paquetes transmitidos entre ellas como aquellos enviados al Monitor de Controladores para que este los transforme y dirija al nodo correspondiente.

 

 

Mensajes de error

Los mensajes de error que arroja el sistema frente a anomalías son los siguientes:

Error de configuración del DSN

Dicho error indica que la configuración del DSN apunta a una dirección incorrecta de la base de datos. Generalmente ocurre cuando se realiza la instalación en alguna entidad del sistema y no se corrige el DSN que instala por defecto el sistema.

 

 

 

Error de comunicación con el motor de base de datos

Dicho error especifica que no es posible establecer la comunicación con el motor. Si bien el enlace y la dirección en el DSN es correcta existe un impedimento que no permite establecer el protocolo entre el cliente y el motor. El mensaje de error enumera las posibles causas:

-          El servidor con la Base de Datos se encuentra apagado
-          El presente equipo o el servidor se hallan desconectados de la red local
-          La red local ha sido modificada
-          Existe un firewall que bloquea el puerto 3500 o 3050

 

 

 

 

Errores críticos de comunicación

Dichos errores se presentan cuando existen anomalías severas sobre la red LAN generando ciertos quiebres en la ejecución de la aplicación.

 

 

La figura de la derecha presenta un caso típico cuando la conexión Ethernet falla al inicio de la aplicación.

También si la aplicación esta corriendo ciertos procesos (por ej: algún tipo de listado) genera el error que aparece a la derecha si ocurre una perdida de comunicación

 

 

Errores de sentencias SQL o bloqueos de base

Si bien su ocurrencia es de muy baja probabilidad puede generarse debido a un acceso indebido algún tipo de bloqueo en el motor que arroje un error en alguna sentencia SQL que se encuentre en proceso o este por iniciar. Dichos errores son críticos provocando quiebres en la ejecución de la aplicación.


 

Respaldo y Recuperación

El presente anexo detalla las herramientas y/o comandos en línea que pueden ejecutarse y que garantizan las acciones de respaldo y restauración de la base de datos.

Respaldo (Backup) y Recuperación (Restore)

La distribución de Firebird contiene una utilidad para respaldar y recuperar sus bases de datos. Su nombre es gbak y se puede hallar en el subdirectorio bin de su instalación de Firebird. Las bases de datos de Firebird se pueden respaldar mientras hay usuarios conectados al sistema haciendo su trabajo normal. El respaldo será tomado de una instantánea del estado de la base de datos al momento de comienzo del mismo.

Hacer respaldos regularmente y ocasionales restauraciones usando gbak deberían ser tareas programadas de su actividad de administración de bases de datos.

Aviso No use utilidades externas de respaldo propietarias o herramientas de copia de archivos tales como WinZip, tar, copy, xcopy, etc., en una base de datos que esté en uso. No sólo el respaldo será poco confiable, también el bloqueo a nivel de disco usado por estas herramientas puede corromper una base de datos en marcha.

Función GBAK

GBAK es una herramienta de línea de comandos que permite realizar Respaldos y Recuperaciones en forma on-line (hot) de una base de datos completa.

Modo de uso

gbak <options> -user <username> -password <pwd> <source> <destination>

Respaldo (Backup)

Para respaldos (backups), en <source> se especifica la base de datos que uno desea respaldar, y <destination> es el nombre del archivo donde se respaldara. La extensión típica para un respaldo es .fbk para Firebird  .gbk para InterBase. 
Solo el propietario de la base de datos (por defecto SYSDBA) puede realizar las operaciones de respaldo. Para bases de datos de múltiples archivos, solo es necesario especificar el nombre del primer archivo como nombre de la base de datos.

Restauración (Restore)

Para restauraciones (restores), en <source> se especifica el nombre del archivo de respaldo y en <destination> se especifica el nombre de la base de datos con la que se reconstruirá del archivo respaldado. Debe especificarse con la opción –C para realizar la restauración.

Opciones generales

-pa[ssword] <password>

Database password

-role <role>

Connect as role

-se[rvice]
  <hostname>:service_mgr

Backup: Creates the backup file on the database server, using the Service Manager.
Restore: Creates the database from a backup file on the server, using the Service Manager.

-u[ser] <username>

Database user name

-v[erbose]

Verbose output of what GBAK is doing

-y <filename>

Redirect all output messages to <filename>
The file must not exist before running GBAK!

-y suppress_output

Quiet mode

-z

Show GBAK version and server version

Opciones para el respaldo

-b[ackup_database]    

Back up. This switch is optional.

-co[nvert]

Converts external tables to internal tables

-e[xpand]

Creates an uncompressed backup

-fa[ctor] n

Blocking factor for tape device

-g[arbage collect]

Does not perform garbage collection (sweeping) during backup

-ig[nore]

Ignores checksum errors while backing up

-l[imbo]

Ignores limbo transactions while backing up

-m[etadata]

Only backs up metadata (schema). No table data will be stored.

-nt

Non-transportable format (use only when you know you will restore on same platform and database version)

-t[ransportable]

Creates a transportable backup (transportable between platforms and server versions)

 

Opciones para la restauración

-bu[ffers]

Set cache size for restored database

-c[reate_database]

Restore (mandatory)

-i[nactive]

All indexes will be restored as INACTIVE

-k[ill]

Does not create shadows that are defined in the backup

-mo[de] read_write

Restores to a read/write database (This is the default)

-mo[de] read_only

Restores to a read-only database

-n[o_validity]

Does not restore validity constraints. So you can restore data that does not meet these constraints and could not be restored otherwise.

-o[ne_at_a_time]

Restores one table at a time. You can use this to partially restore databases with corrupt table data

-p[age_size] <size>

Sets page size of new database. <size> can be one of 1024, 2048, 4096, 8192. Default is 1024.

-r[eplace_database]

Restores over an existing database. This can only be performed by SYSDBA or the owner of the database that is overwritten. Do NOT restore over a database that is in use!

-use_[all_space]

Normally, on restore, database pages will be filled to about 80 %. With the use_all_space option, database pages will be filled to 100 %. (Useful for read-only databases which will see no more modifications)

 

Ejemplos Prácticos

Respaldo "normal"

gbak -v -t -user SYSDBA -password "masterkey" dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

Respaldo con generación de archivo de log

gbak -v -t -user SYSDBA -password masterkey -y c:\backups\warehouse.log dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

Restauración "normal"

gbak -c -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse2.fdb

Restauración sobre una base de datos existente

gbak -c -r -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse.fdb

Creación de una base de datos de “solo-lectura”

gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:\backups\warehouse.fbk c:\files\warehousedb.fdb

Respaldo de múltiples archivos

Sentencia para el respaldo

gbak [options] <database> <target file 1> <size 1> <target file 2> <size 2> ... <target file n>

NOTA: No debe especificarse un tamaño para el último archivo.  Este tomara el espacio necesario, sin importar cuan largo sea.

Los tamaños se pueden expresar en bytes (8192), kilobytes (1024k), megabytes (5m), o en gigabytes (2g).

Sentencia para la restauración

gbak -c [options] <source file 1> <source file 2> ... <source file n> <database>

Restaurando a una base de datos de múltiples archivos

gbak -c [options] <source file> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>

NOTA: No debe especificarse el tamaño de la ultima base de datos. Esta puede crecer en forma ilimitada de tal forma de ocupar el resto del espacio.

Los tamaños se pueden expresar en bytes (8192), kilobytes (1024k), megabytes (5m), o en gigabytes (2g).

Restaurando desde un respaldo de múltiples archivos a una base de datos de múltiples archivos

gbak -c [options] <source file 1> <source file 2> ... <source file n> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>

NOTA: DE ACUERDO AL TIPO DE BACKUP NECESARIO EL ADMINISTRADOR PUEDE REALIZAR UNA TAREA PROGRAMADA EN WINDOWS® Y ASI AUTOMATIZAR LA EJECUCION DEL COMANDO RESPECTIVO CON LA PERIOCIDAD REQUERIDA.