En la carpeta donde instalaste al Firebird, por ejemplo en C:\Archivos de Programa\Firebird\Firebird_2_5\ encontrarás un archivo llamado FIREBIRD.CONF, el cual sirve para configurar al Firebird.

¿Por qué necesitas configurar al Firebird?

Porque aunque las opciones que usa por defecto cuando lo instalas sirven para la mayoría de los casos a veces necesitarás cambiar esas opciones por defecto para mejorar el rendimiento o la seguridad.

¿Para qué sirve el símbolo de numeral #?

Si abres el archivo FIREBIRD.CONF con cualquier programa que te permite leer archivos de texto plano, como el Bloc de Notas del Windows, verás que en muchas líneas hay un símbolo # (numeral). Ese es el símbolo que se utiliza para indicar que lo que se encuentra a continuación es un comentario:

# Todo esto es un comentario porque está después del numeral

Si cambio algo en el archivo FIREBIRD.CONF, ¿cuándo esos cambios tienen efecto?

Solamente después que reinicias el Servidor del Firebird. Mientras no lo reinicies continuará con la configuración anterior.

¿Cómo se detiene y se reinicia el Servidor del Firebird?

Para detenerlo:

Inicio | Panel de Control | Firebird Server Manager | Stop

Para reiniciarlo:

Inicio | Panel de Control | Firebird Server Manager | Start

¿Para qué sirve la entrada RootDirectory?

Para especificar la carpeta raíz donde el Firebird está instalado. Se puede usar para reemplazar a la que determina el Sistema Operativo.

¿Para qué sirve la entrada DatabaseAccess?

Para determinar donde el Servidor del Firebird debe buscar a las bases de datos, sus tres posibles valores son:

Full. Las bases de datos pueden encontrarse en cualquier carpeta de cualquier disco duro de la computadora donde se instaló el Servidor del Firebird

Restrict. Las bases de datos pueden encontrarse en cualquiera de las carpetas especificadas a continuación, pero solamente en ellas. El Servidor del Firebird no se conectará a bases de datos que se encuentren en otras carpetas. Los nombres de las carpetas deben separarse con puntos y coma. Además, si el nombre de la carpeta tiene espacios en blanco, no se lo debe rodear con apóstrofos. Ejemplo:

DatabaseAcces = Restrict D:\MisDatos\Contabilidad;E:\Archivos\DB\Sueldos

None. El Servidor del Firebird solamente abrirá bases de datos que tengan alias, esos alias se especifican en el archivo ALIASES.CONF

¿Para qué sirve la entrada ExternalFileAccess?

Firebird tiene un mecanismo que le permite crear y abrir tablas externas. Una tabla externa es un archivo (generalmente de texto) que no está incluido en una Base de Datos. Por ejemplo el archivo C:\MisArchivos\MisClientes.txt puede ser tratado como una tabla externa.

Para que el Firebird pueda abrir una tabla externa se debe explícitamente especificar el parámetro ExternalFileAccess. Sus posibles valores son:

Full. La tabla externa puede encontrarse en cualquier disco duro y en cualquier carpeta. Esto es muy peligroso porque los intrusos podrían aprovecharse de esto para comprometer la seguridad del Servidor o del Host

Restrict. La tabla externa puede encontrarse en cualquiera de las carpetas listadas a continuación, pero solamente en ellas. El Servidor del Firebird no abrirá tablas externas que se encuentren en otras carpetas. Los nombres de las carpetas deben separarse con puntos y coma. Además, si el nombre de la carpeta tiene espacios en blanco, no se lo debe rodear con apóstrofos. Ejemplo:

ExternalFileAccess = E:\MisTablasExternas;F:\Ventas;F:\Cobranzas

None. Impida que puedan usarse tablas externas. Es la opción por defecto y la recomendada si no necesitas usar tablas externas.

¿Para qué sirve la entrada UdfAccess?

Para especificar los discos duros y las carpetas donde pueden encontrarse las librerías de UDF. Las siglas UDF significan User Defined Function (funciones definidas por el usuario) o sea, funciones que se encuentran en un archivo .DLL y que pueden ser usadas dentro de las bases de datos del Firebird. Esas librerías UDF pueden ser creadas con muchos lenguajes, por ejemplo con C, C++, Delphi, Visual FoxPro, etc. Además de UDF también se las conoce como “funciones externas”, porque son externas al Firebird, no están incluidas dentro de él. Las versiones anteriores del Firebird tenían muy pocas funciones internas entonces se crearon muchas UDF que proveían de funciones que eran muy necesarias. Ejemplos: Abs(), AddDay(), AddHour(), Ascii_char(), Ascii_val(), Log10(), Lower(), Upper(), etc. eran funciones externas. Pero las nuevas versiones del Firebird ya disponen de muchas funciones internas entonces la necesidad de utilizar librerías UDF para contar con funciones externas se redujo muchísimo.

Los valores posibles son:

Full. Los archivos .DLL pueden encontrarse en cualquier disco duro y en cualquier carpeta de la computadora donde se instaló el Servidor del Firebird. Este valor no se recomienda, es muy peligroso porque puede comprometer la seguridad del Servidor o del Host.

Restrict. Los archivos .DLL pueden encontrarse solamente en las carpetas especificadas a continuación. El Servidor del Firebird no utilizará archivos .DLL que se encuentren en otras carpetas. Los nombres de las carpetas deben separarse con puntos y coma. Además, si el nombre de la carpeta tiene espacios en blanco, no se lo debe rodear con apóstrofos. Ejemplo:

UdfAccess = Restrict D:\MisFunciones;E:\MisBasesDatos\MisDLL

None. El Servidor del Firebird no usará librerías UDF, o sea que no abrirá archivos .DLL y ninguna función externa podrá ser utilizada en las bases de datos.

¿Para qué sirve la entrada TempDirectories?

 Para especificar las carpetas en donde se guardarán los archivos temporales. El Firebird crea archivos temporales cuando realiza varias tareas, por ejemplo cuando indexa tablas o cuando realiza un backup. Por defecto, esos archivos temporales son creados en la carpeta TEMP del Windows pero se pueden especificar otras carpetas si se desea. Para obtener un mejor rendimiento se recomienda que la carpeta de los archivos temporales se encuentre en un disco duro distinto al disco duro donde se encuentran las bases de datos. Por ejemplo, si las bases de datos se encuentran en el disco D: que las carpetas temporales se encuentren en el disco E:

Se pueden especificar varias carpetas temporales, separadas por puntos y coma. Cuando la primera de ellas se queda sin espacio libre se usa la segunda y así sucesivamente.

TempDirectories = D:\MisTemp;E:\ArchivosTemporales;F:\MisArchivosTemp

¿Para qué sirve la entrada LegacyHash?

 Para usar la base de datos SECURITY.FDB, que era la usada con Firebird 1.x

Desde Firebird 2.0 los nombres y las contraseñas de los usuarios se encuentran en la Base de Datos llamada SECURITY2.FDB (anteriormente se encontraban en SECURITY.FDB) así que si las bases de datos que utilizas fueron creadas con Firebird 2.0 ó posterior, entonces no necesitas cambiar el valor de esta entrada.

Si por alguna razón necesitas usar SECURITY.FDB entonces debes ejecutar el script: SECURITY_DATABASE.SQL que encontrarás en la carpeta: C:\Archivos de Programa\Firebird\Firebird_2_5\misc\upgrade\security\

Si quieres impedir que los usuarios se conecten con sus nombres y contraseñas viejos (los que estaban guardados en el archivo SECURITY.FDB) entonces escribe:

LegacyHash = 0

¿Para qué sirve la entrada Authentication?

 Para especificar cual método de autenticación debe ser usado. Los valores posibles son:

Native. Usa el nombre de usuario y la contraseña guardados en el archivo SECURITY2.FDB

Trusted. Usa el nombre del usuario y la contraseña del Windows. Eso significa que para conectarse a la Base de Datos debes escribir solamente su nombre, sin necesidad de escribir ni el nombre del usuario ni la contraseña. Ejemplo:

CONFIG1

(haciendo clic en la imagen la verás más grande)

Como puedes ver, solamente se escribió el alias de la Base de Datos, nada más. Y la conexión se realizó con éxito.

Si no usas alias (¿por qué no los usas? deberías usarlos) podrías escribir algo así:

CONFIG2

Y también la conexión se realizó con éxito.

Mixed. Significa que cualquiera de los dos métodos anteriores puede ser usado.

¿Para qué sirve la entrada AuditTraceConfigFile?

 Para realizar auditoría con las nuevas características provistas por Firebird 2.5, si se deja en blanco entonces no se realizará la auditoría.

¿Para qué sirve la entrada MaxUserTraceLogSize?

 Para determinar el tamaño máximo de los archivos de log en cada sesión de trazado. El tamaño se especifica en megabytes.

¿Para qué sirve la entrada DefaultDbCachePages?

 Para establecer la cantidad de páginas que cualquier Base de Datos puede tener en la memoria caché. La memoria caché es una memoria muy rápida. Funciona de la siguiente manera: la Base de Datos está compuesta por muchas páginas, cada página puede tener un tamaño de 1.024 bytes, 2.048 bytes, 4.096 bytes, 8.192 bytes ó 16.382 bytes, según hayas especificado al crearla o al restaurarla. En la memoria caché siempre hay varias páginas de la Base de Datos porque el acceso a esas páginas es ultrarrápido entonces es conveniente tenerlas allí. ¿Cuántas páginas hay por defecto en la memoria caché?

– Classic: 75 páginas por cada conexión

– SuperServer: 2.048 páginas por cada Base de Datos

Si la computadora donde se encuentra el Servidor del Firebird tiene mucha memoria (“mucha memoria” significa al menos 4 veces más que el tamaño de todas las bases de datos abiertas) entonces es recomendable que aumentes el valor de esta entrada para que todas las operaciones con las bases de datos sean más rápidas. Ejemplo:

DefaultDbCachePages = 8192

¿Para qué sirve la entrada DatabaseGrowthIncrement?

Para establecer la cantidad del espacio reservado en el disco duro, en bytes. Al reservar espacio en el disco duro se reduce la fragmentación (que es una de las causas de accesos lentos) y además se puede continuar trabajando aún cuando el disco duro ya esté lleno, ya que la Base de Datos continuará teniendo espacio libre dentro de ella, justamente el espacio que se reservó.

Por ejemplo, si una Base de Datos tiene un tamaño de 50 Mbytes y el espacio que reservó es de 128 Mbytes, aún tiene 78 Mbytes disponibles para usarlos cuando los necesite (50 usados + 78 disponibles = 128 reservados). Así que, aunque los otros programas ya no puedan guardar sus archivos en el disco duro porque éste se quedó sin espacio, la Base de Datos aún tendrá 78 Mbytes libres y a su disposición.

El valor por defecto es de 134217728 (o sea, 128 Mbytes)

Si no quieres reservar espacio en el disco duro, ponle el valor 0 (cero) a esta entrada.

¿Para qué sirve la entrada FileSystemCacheThreshold?

 Es el valor límite que determina si Firebird usará el caché del sistema de archivos o no. El caché del sistema de archivos es usado si el tamaño del caché de la Base de Datos en páginas (configurado explícitamente en la cabecera de la Base de Datos o través del valor de DefaultDbCachePages) es menor que el valor de FileSystemCacheThreshold.

Para asegurarte de que siempre se use el caché del sistema de archivos ponle un valor muy alto a la entrada FileSystemCacheThreshold. Si quieres que ninguna Base de Datos use el caché del sistema de archivos ponle el valor de 0 (cero) a la entrada FileSystemCacheThreshold.

El valor por defecto es de 65536

¿Para qué sirve la entrada FileSystemCacheSize?

 Este valor controla la cantidad máxima de RAM usada por el caché del sistema de archivos en computadoras Windows XP de 64 bits, Windows Server 2003 SP1 o posteriores. No tiene efecto en Linux.

El menor número soportado es 10% y el mayor número es 95%. Si estableces un número afuera de ese rango, se lo pondrá al valor por defecto que es del 30%.

Puedes necesitar reiniciar la computadora para que este valor sea utilizado.

Si no quieres cambiar el porcentaje de RAM usada por el caché, establece este valor a 0 (cero) que es su valor por defecto.

¿Para qué sirve la entrada RemoteFileOpenAbility?

 Para remover la protección contra abrir bases de datos en volúmenes montados NFS en Linux/Unix y SMB/CIFS en Windows. También permite crear bases de datos shadows en discos de la red.

MUCHO CUIDADO: Esta opción remueve una muy importante característica de seguridad del Firebird y puede conducir a corrupción irrecuperable de las bases de datos. No uses esta opción a menos que entiendas demasiado bien los grandes riesgos a que te expones y estés dispuesto a aceptar la pérdida del contenido total de tus bases de datos.

Normalmente, el Servidor del Firebird solamente puede abrir bases de datos que se encuentran en discos que están físicamente en la misma computadora que el Servidor del Firebird.

Si se le solicita conectarse a una Base de Datos que está en un volumen NFS esa solicitud es redirigida a un Servidor del Firebird que se encuentre en la computadora que posee físicamente a ese disco duro. Esta restricción impide que dos copias diferentes del Firebird abran la misma base de datos sin coordinar sus actividades. El acceso no coordinado por dos o más copias del Firebird conducirán irremediablemente a corrupción de la base de datos.

En un sistema local no hay problema porque cuando una copia del Firebird realiza la conexión bloquea a esa Base de Datos para que no pueda ser conectada por otra copia del Firebird.

Como NFS no provee de una forma confiable de detectar si varios usuarios están usando un archivo en un disco NFS, si una segunda copia de Firebird se conecta a la Base de Datos, ésta será corrompida.

Bajo algunas circunstancias, ejecutar el Servidor del Firebird en una computadora que tiene discos NFS es inconveniente o imposible. Sin embargo, las aplicaciones que usan la variante “embedded” del Firebird y nunca comparten el acceso a una Base de Datos pueden usar esta opción para permitir el acceso directo a bases de datos que se encuentran en discos NFS.

La situación para SMB/CIFS es muy similar ya que no todas las configuraciones proveen mecanismos de bloqueo de archivos que son necesarios para una operación segura. Usando SuperServer con el servidor de archivos NT puede ser considerado relativamente seguro porque el bloqueo de archivos protege a la Base de Datos impidiendo que sea usada por varias copias del Firebird. Sin embargo, en caso de errores en la red o de corte de la energía eléctrica se puede tener una Base de Datos corrupta.

El único caso en que es seguro habilitar la entrada RemoteFileOpenAbility es cuando la Base de Datos está marcada como read-only (o sea, solo lectura) ya que entonces nada se grabará en ella y no podrá ser corrompida.

NO HABILITES ESTA OPCIÓN, A MENOS QUE ESTÉS TOTALMENTE SEGURO DE LO QUE ESTÁS HACIENDO.

RemoteFileOpenAbility = 0     # Valor por defecto, NO LO CAMBIES si no sabes lo que estás haciendo, o puedes meterte en graves problemas

¿Para qué sirve la entrada TempBlockSize?

 Se usa cuando se ordenan los resultados de los SELECT y también para guardar resultados temporarios.

Es el menor tamaño del bloque que se aloja en el almacenamiento temporal.

¿Para qué sirve la entrada TempCacheLimit?

 Es la cantidad máxima de espacio temporal que puede ser colocada en la memoria caché.

En Classic, su valor por defecto es de 8 Mb. Aunque puede ser incrementado, no te olvides que se aplica a cada conexión y por lo tanto consume mucha memoria.

¿Para qué sirve la entrada CompleteBooleanEvaluation?

 Si tu código SQL depende de una evaluación completa de los operadores AND y OR, aunque la expresión final pueda ser determinada al examinar solamente los valores del primer término, puedes necesitar habilitar esta opción.

¿Para qué sirve la entrada DeadlockTimeout?

 Determina la cantidad de segundos que el administrador de bloqueo esperará después que un conflicto haya sido encontrado antes de limpiar los bloqueos de procesos muertos y haciendo ciclos extra de examen de bloqueos mortales. El Servidor detecta los bloqueos mortales instantáneamente en todos los casos normales, así que este valor afecta cosas si algo ha salido mal. Si le pones un valor muy bajo, el rendimiento decaerá. Por defecto, su valor es de 10.

¿Para qué sirve la entrada MaxUnflushedWrites?

 Para determinar cuan frecuentemente las páginas son guardadas en el disco duro. Solamente se utiliza en las bases de datos cuyo valor de ForcedWrites está en OFF.

Por ejemplo, si su valor es 100 eso significa que 100 COMMIT no se guardarán físicamente en el disco duro y recién cuando ocurra el COMMIT número 101 esos 100 COMMIT anteriores se grabarán.

Mientras un COMMIT no esté guardado físicamente en el disco duro se corre el riesgo de perderlo si ocurre un corte de la energía eléctrica. En contrapartida, si no se lo guarda físicamente la velocidad es mucho mayor. Así que como ves, tiene sus ventajas y sus desventajas. En Windows se recomienda que ForcedWrites esté en ON porque si está en OFF el Windows no otorga seguridad.

Por lo tanto, si se incrementa este valor se aumenta la velocidad pero se disminuye la seguridad en caso de un corte de la energía eléctrica.

¿Para qué sirve la entrada MaxUnflushedWriteTime?

 Es la cantidad de segundos durante los cuales los COMMIT se acumularán antes de que sean grabados físicamente en el disco duro cuando ocurra el siguiente COMMIT. Por defecto su valor es de 5.

¿Para qué sirve la entrada ConnectionTimeout?

Los segundos que se deben esperar hasta concluir que el intento de conexión ha fallado. Por defecto es 180.

¿Para qué sirven las entradas RemoteServiceNameRemoteServicePort?

Para especificar el nombre del servicio o el número del puerto usado para conectar el Cliente a las bases de datos. Solamente es necesario cambiar una de las entradas, no ambas. Primero se evalúa RemoteServiceName (cuyo valor por defecto es gds_db) y después se evalúa RemoteServicePort (cuyo valor por defecto es 3050).

¿Para qué sirve la entrada RemoteAuxPort?

 Para especificar el número del puerto que se usará para notificar los eventos. Un valor de 0 (cero) significa que el número del puerto será elegido al azar.

¿Para qué sirve la entrada TcpRemoteBufferSize?

 Para especificar el tamaño del buffer TCP/IP que envían y reciben el Servidor y el Cliente. Cuanto mayor es el tamaño, mayor es la cantidad de datos enviados. El rango va de 1448 a 32767. Su valor por defecto es 8192.

¿Para qué sirve la entrada RemoteBindAddress?

 Para que solamente las conexiones provenientes de una específica tarjeta de red sean admitidas.

¿Para qué sirve la entrada CpuAffinityMask?

 Para especificar cuales CPU deben ser usadas (solamente en SuperServer y en Windows).

Si la computadora tiene varios procesadores, establece cuales de ellos serán usados por el Servidor del Firebird. El valor es tomado de un mapa de bits, en el cual cada bit representa a una CPU. Por lo tanto:

1 = CPU1

2 = CPU2

4 = CPU3

En consecuencia, si CpuAffinityMask es:

1 – Usará solamente el CPU1

3 – Usará el CPU1 y el CPU2

6 – Usará el CPU2 y el CPU4

El valor por defecto es 1.

¿Para qué sirve la entrada UsePriorityScheduler?

 Solamente se usa en Windows para habilitar/deshabilitar el planificador de los hilos de ejecución. Si el tiempo de respuesta es muy lento cuando realizas operaciones con las bases de datos (INSERT, UPDATE, DELETE, SELECT) ponle este valor en 0 (cero).

¿Para qué sirve la entrada PrioritySwitchDelay?

 Para establecer el tiempo de espera (en milisegundos) para que la prioridad de un hilo activo sea reducida a bajo (low)  y para que la prioridad de un hilo inactivo sea aumentada a alto (high).

¿Para qué sirve la entrada GCPolicy?

 Para establecer la política de recolección de basura. Los valores posibles son.

  • cooperative
  • background
  • combined

Classic y SuperClassic siempre usan “cooperative”. SuperServer puede usar cualquiera de los tres y por defecto usa “combined”

Anuncios