######################################### # # Firebird version 5.0 configuration file # ######################################### # Comments # -------- # The # character is used for comments and can be placed anywhere on a # line. Anything following the # character on a line is considered a # comment. # # Examples: # # # This is a comment # DefaultDbCachePages = 2048 # This is an end-of-line comment # # Entries # ------- # The default value for each entry is listed to the right of the "=". # To activate an entry, remove the leading "#"s and supply the desired # value. # # By default, a number of the values are specified in **Bytes** (Not KB). # You may add obvious abbreviations k, m and g in the end of a number to specify # kilobytes, megabytes and gigabytes. # # There are three types of configuration values: integer, boolean and string. # # Integer # ------- # Integers is what they sound like, an integral value. Examples: # 1 # 42 # 4711 # 24M # 24 * 1024 * 1024 # # Boolean # ------- # Boolean is expressed as integer values with 0 (zero) being "false" and # non-zero is taken to mean "true". For consistency we recommend you # only use 0/1. Also strings 'y', 'yes' and 'true' stand for "true". # # String # ------ # Strings are also what they sound like, strings. Example: # RemoteServiceName = gds_db # # Scopes # ------ # Some parameters are marked as per-database / per-connection configurable. # Per-database configuration is done in file databases.conf (former aliases.conf). # Per-connection configuration is primarily client tool and done using # isc_dpb_config parameter in DPB (isc_spb_config for services). # Configuration data, added to parameters block, has the same format as this file. # Pay attention that since Firebird 3.0 there is no hard limit of 255 bytes per entry # provided you are using isc_dpb_version2 format of DPB. The simplest way to create # DPB/SPB is to use IXpbBuilder - when needed you will have >255 bytes entries in # parameters block. Notice that per-database entries also may be tuned using DPB # in case of embedded engine when attaching to database first time. # # Macro substitution # ------------------ # There is a number of predefined macro commands, that can be used in config # files where directory name is needed. They are available using $(name) syntax. # The complete list of them as follows: # root - root directory of Firebird instance # install - directory where Firebird is installed # this - directory where current configuration file is located # dir_conf - directory where firebird.conf and databases.conf are located # dir_secDb - directory where default security database is located # dir_plugins - directory where plugins are located # dir_udf - directory where UDFs are located by default # dir_sample - directory where samples are located # dir_sampleDb - directory where sample DB (employee.fdb) is located # dir_intl - directory where international modules are located # dir_msg - directory where messages file (firebird.msg) is located # Like the rest of config internals, macros are case-insensitive. # Capital letters here are used only for better human readability. # # Includes # -------- # One can include one config file into another one. # When relative path is used, it's treated relative to current config file. # I.e. when # include some_file.conf # is used in /opt/config/master.conf, we include /opt/config/some_file.conf. # Traditional wildcards * and ? may be used in include operator. In this case # all matching files will be included in undefined order. Example: # include $(dir_plugins)/config/*.conf # # Portions of this file have been reproduced/made available with the # permission of Ann Harrison @ IBPhoenix. # ---------------------------- # Database Paths/Directories # # DatabaseAccess may be None, Full or Restrict. If you choose Restrict, # provide ';'-separated trees list, where database files are stored. # Relative paths are treated relative to the root directory of Firebird. # Default value 'Full' gives full access to all files on your system. # To specify access to specific trees, enumerate all required paths # (for Windows this may be something like 'C:\DataBase;D:\Mirror', # for unix - '/db;/mnt/mirrordb'). If you choose 'None', then only # databases listed in databases.conf can be attached using alias. # # Note: simple quotation marks shown above should *NOT* be used when # specifying values and directory path names. Examples: # # DatabaseAccess = None # DatabaseAccess = Restrict C:\DataBase # DatabaseAccess = Restrict C:\DataBase;D:\Mirror # DatabaseAccess = Restrict /db # DatabaseAccess = Restrict /db;/mnt/mirrordb # DatabaseAccess = Full # # UNCONTROLLED DATABASE ACCESS MAY COMPROMISE YOUR SYSTEM! # IT IS STRONGLY RECOMMENDED THAT THIS SETTING BE USED TO LIMIT # DATABASE LOCATIONS! # # Type: string (special format) # #DatabaseAccess = Full # ---------------------------- # Ability to access databases remotely # # RemoteAccess may be true or false (1/0, Yes/No) - it's a boolean value. # By default RemoteAccess to all databases except security DB is enabled. # If you plan to use more than one dedicated security database, it's # recommended to disable remote access to them in databases.conf. # However, as an additional method to have secure enhanced Firebird # installation, one can disable remote access globally and re-enable # in databases.conf only for specific databases. # # Per-database configurable. # # Type: boolean # #RemoteAccess = true # ---------------------------- # External File Paths/Directories # # ExternalFileAccess may be None, Full or Restrict. If you choose # Restrict, provide ';'-separated trees list, where external files # are stored. Relative paths are treated relative to the root directory # of Firebird. Default value 'None' disables any use of external files # on your site. To specify access to specific trees, enum all required # paths (for Windows this may be something like 'C:\ExternalTables', # for unix - '/db/extern;/mnt/extern'). # # Per-database configurable. # # NOTE: THE EXTERNAL TABLE ENGINE FEATURE COULD BE USED TO COMPROMISE # THE SERVER/HOST AS WELL AS DATABASE SECURITY! # # IT IS STRONGLY RECOMMENDED THAT THIS SETTING BE USED TO LIMIT # EXTERNAL TABLE LOCATIONS! # # Type: string (special format) # #ExternalFileAccess = None # ---------------------------- # External Function (UDF) Paths/Directories # # UdfAccess may be None, Full or Restrict. If you choose # Restrict, provide ';'-separated trees list, where UDF libraries # are stored. Relative paths are treated relative to the root directory # of Firebird. # # The default value is None. Set it to 'Restrict UDF' to have the same # restriction as in Firebird 3 and earlier. To specify access to specific # trees, enumerate all required paths (for Windows this may be something # like 'C:\ExternalFunctions', for unix - '/db/udf;/mnt/udf'). # # NOTE: THE EXTERNAL FUNCTION ENGINE FEATURE COULD BE USED TO COMPROMISE # THE SERVER/HOST AS WELL AS DATABASE SECURITY! # # IT IS STRONGLY RECOMMENDED THAT THIS SETTING REMAINS NONE! # # Type: string (special format) # #UdfAccess = None # ---------------------------- # Temporary directories # # Provide ';'-separated trees list, where temporary files are stored. # Relative paths are treated relative to the root directory of Firebird. # Default value is determined using FIREBIRD_TMP, TEMP or TMP # environment options. Once the first specified directory has no # available space, the engine will switch to the next one, and so on. # # E.g.: # TempDirectories = c:\temp # or # TempDirectories = c:\temp;d:\temp # # Type: string (special format) # #TempDirectories = # ---------------------------- # Directory to put data of temporary tables and blobs # # When empty, not exists or not accessible, the default directory will be used # as determined by FIREBIRD_TMP, TEMP or TMP environment variables. # # Per-database configurable. # # Type: string # #TempTableDirectory = # ---------------------------- # Trace configuration file for system audit # # Empty value means that system audit is turned off. # # Type: string # #AuditTraceConfigFile = # ---------------------------- # Maximum summary size of each user trace session's log files in MB. # When log files size reach this limit, trace session automatically # suspends until an interactive user service reads and deletes log files. # # Type: integer # #MaxUserTraceLogSize = 10 # ---------------------------- # Number of cached database pages # # The number of pages from any one database that can be held in cache # at once. If you increase this value, the engine will allocate more # pages to the cache for every database. By default, SuperServer # allocates 2048 pages for each database and Classic and SuperClassic # allocate 256 pages per client connection per database. # # Per-database configurable. # # Type: integer # #DefaultDbCachePages = 2048 # ---------------------------- # Disk space preallocation # # Sets the amount of preallocated disk space in bytes. Disk space # preallocation reduces physical file fragmentation and can allow databases # to work in out of disk space conditions. With preallocation enabled, # the engine allocates 1/16nth of already allocated disk space at a time, but # not less than 128KB and no more than DatabaseGrowthIncrement (128MB by # default). To disable preallocation, set DatabaseGrowthIncrement to zero. # Shadow database files are not preallocated. # # Per-database configurable. # # Type: integer # #DatabaseGrowthIncrement = 128M # ---------------------------- # File system cache usage # # Determines if Firebird will use the file system cache for database files. # # Type: boolean # # Per-database configurable. # #UseFileSystemCache = true # ---------------------------- # File system cache threshold # # The threshold value that determines if Firebird will use the file system # cache. File system caching is used if database cache size in pages # (configured explicitly in the database header or via DefaultDbCachePages setting) # is less than the value of FileSystemCacheThreshold. # # To always use the file system cache, set FileSystemCacheThreshold to a large value. # To bypass the file system cache for all databases, set FileSystemCacheThreshold to # zero. # # CAUTION! # This setting is deprecated and will be removed in future Firebird versions. # Consider using UseFileSystemCache setting instead. # If UseFileSystemCache is set, the value of FileSystemCacheThreshold is ignored. # If UseFileSystemCache is not set, and FileSystemCacheThreshold is set, the value # of FileSystemCacheThreshold is in use and accounted by the engine. # # Type: integer, measured in database pages # # Per-database configurable. # #FileSystemCacheThreshold = 64K # ---------------------------- # File system cache size # # This setting controls the maximum amount of RAM used by Windows file system # cache on a 64-bit Windows host. It has no effect for Unix hosts in this release yet. # # Note that the lowest number presently supported is 10%, and the highest number # is 95%; numbers outside these limits will apply a default value of 30%. # # If the cache size has already been selected when the engine starts, the host # setting will not be changed. Thus you may need to reboot the host for the # change of this setting to have effect. # # To leave host caching settings unchanged, set this parameter to 0. This is # the default parameter value. # # Security note # To adjust the setting, the engine needs the SeIncreaseQuotaPrivilege right. # Built-in service accounts and administrators have it by default. The installer # grants this right to the Firebird service account. If the engine fails to adjust # the cache size setting, it will log a warning message to the firebird.log and # continue. # # Type: integer, measured in % of total physical RAM # #FileSystemCacheSize = 0 # ---------------------------- # Remove protection against opening databases on NFS mounted volumes on # Linux/Unix and SMB/CIFS volumes on Windows. # # This also permits creating database shadows on mounted network volumes. # # ***WARNING*** ***WARNING*** ***WARNING*** ***WARNING*** # # This option removes an important safety feature of Firebird and can # cause irrecoverable database corruption. Do not use this option unless # you understand the risks and are prepared to accept the loss of the # contents of your database. # Unless this configuration option is changed from 0 to 1, Firebird can # open a database only if the database is stored on a drive physically # attached to the local computer - the computer running that copy of # Firebird. Requests for connections to databases stored on NFS mounted # drives are redirected to a Firebird server running on the computer that # "owns" the disk. # This restriction prevents two different copies of Firebird from opening # the same database without coordinating their activities. Uncoordinated # access by multiple copies of Firebird will corrupt a database. On a local # system, the system-level file locking prevents uncoordinated access to # the database file. # # NFS does not provide a reliable way to detect multiple users of a file on # an NFS mounted disk. If a second copy of Firebird connects to a database on # an NFS mounted disk, it will corrupt the database. # Under some circumstances, running a Firebird server on the computer that # owns NFS mounted volumes is inconvenient or impossible. Applications that # use the "embedded" variant of Firebird and never share access to a database # can use this option to permit direct access to databases on NFS mounted # volumes. # # The situation for SMB/CIFS is quite similar to NFS with not all configurations # providing file locking mechanisms needed for safe operation. Using SuperServer # engine with the database on a Windows Server file server may be considered # relatively safe as file locking protects the database from being used by # several engines. The network stack can still change order of writes, so you # may get a corrupted database in case of network errors or power outage. # # The useful and safe case is working with a shared database marked read-only. # # DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING. # # Type: boolean # #RemoteFileOpenAbility = 0 # ============================ # Temporary space management # ============================ # ---------------------------- # Temporary storage is used by the sorting module, it's also # intended to store temporary datasets etc. # # The parameters below handle the allocation and caching policy # for the temporary space manager. In previous Firebird versions, # they were prefixed with "SortMem" instead of current "Temp". # # The smallest block size being allocated in the temporary storage. # This value reflects the allocation granularity. # # Type: integer # #TempBlockSize = 1M # ---------------------------- # The maximum amount of the temporary space that can be cached # in memory. # # For Classic servers, this setting is defaulted to 8 MB. # Although it can be increased, the value applies to each client # connection/server instance and thus consumes a lot of memory. # # Per-database configurable. # # Type: integer # #TempCacheLimit = 64M # ---------------------------- # Maximum allowed identifier name length in bytes # # Sets a limit for the number of bytes in an identifier. # # Set to 31 to limit as Firebird 3.0 and previous versions. Setting # this value for all databases (including the security database) may # cause problems. # # Per-database configurable. # # Type: integer # #MaxIdentifierByteLength = 252 # ---------------------------- # Maximum allowed identifier name length in characters # # Sets a limit for the number of characters in an identifier. # # Setting this value for all databases (including the security database) # may cause problems. # # Per-database configurable. # # Type: integer # #MaxIdentifierCharLength = 63 # ---------------------------- # Threshold that controls whether to store non-key fields in the sort block or # refetch them from data pages after sorting. # # Defines the maximum sort record size (in bytes) that can be stored inline, # i.e. in the sort block. Zero means that records are always refetched. # # Per-database configurable. # # Type: integer # #InlineSortThreshold = 1000 # ---------------------------- # Defines whether queries should be optimized to retrieve the first records # as soon as possible rather than returning the whole dataset as soon as possible. # By default retrieval of all rows is implied by the optimizer. # # Can be overridden at the session level using the SET OPTIMIZE statement # or at the SQL statement level by using the OPTIMIZE FOR clause. # # Per-database configurable. # # Type: boolean # #OptimizeForFirstRows = false # ---------------------------- # Defines whether OUTER joins are attempted to be converted into INNER joins, # provided that such a transformation is possible from the query result perspective. # # Enabled by default. Disable to simplify the migration path if OUTER joins # are used intentionally in SQL queries (e.g. as optimizer hints) even if # they are known to be semantically equivalent to INNER joins. # # CAUTION! # There is no guarantee that this setting will be available in future Firebird # versions. # # Per-database configurable. # # Type: boolean # #OuterJoinConversion = true # ---------------------------- # Defines whether subqueries inside IN/EXISTS predicates are attempted to be merged # with the outer query and converted into semi-joins, if possible. # # Being an experimental feature, it's disabled by default. # Enable to give it a try for a possibly better performance due to subquery being # evaluated just once and then cached. # # CAUTION! # There is no guarantee that this setting will be available in future Firebird # versions. Once this feature is proved to be superior in most use cases, # this setting will be removed and this conversion will become unconditional. # # Per-database configurable. # # Type: boolean # #SubQueryConversion = false # ============================ # Plugin settings # ============================ # # This group of parameters determines what plugins will be used by Firebird. # Format of string is the list of plugins, separated by space, ',' or ';'. # Plugins will be tried in an order, specified here. # In many cases correct order is important! # # Type: string # ---------------------------- # AuthServer and AuthClient determine which authentication methods will be used # by network server and client redirector. The Secure Remote Password plugin # using SHA-256 for the client proof is the default for both client and server. # Additionally, the default client configuration (AuthClient) also supports old Srp # plugin using SHA-1 for the client proof. This enables backwards compatibility # with old Firebird 3.0 servers, but does not comply with NIST security requirements. # Srp plugins using other SHA algorithms (SHA-224, SHA-384 & SHA-512) are also # implemented and may be used (names are Srp224, Srp384 & Srp512 respectively). # # The default client configuration (AuthClient) also supports the pre-Firebird 3.0 # legacy authentication protocol (Legacy_Auth). This is again for backwards # compatibility, but has many known weaknesses and is deprecated. # # The default Windows client configuration (AuthClient) also includes support for # the Win_Sspi plugin. This implements windows trusted authentication and is backward # compatible with 2.1 and 2.5 clients and servers running on Windows. # # Per-database configurable. # #AuthServer = Srp256 # Per-connection and per-database configurable. # #AuthClient = Srp256, Srp, Legacy_Auth #Non Windows clients #AuthClient = Srp256, Srp, Win_Sspi, Legacy_Auth #Windows clients # If you need to use server plugins that do not provide encryption key (Legacy_Auth is the # only such standard plugin) you should also turn off required encryption on the wire with WireCrypt # configuration parameter except when working with the XNET protocol which is never encrypted. # ---------------------------- # UserManager sets the plugins used to work with the security database. If more than # one plugin is given, the first plugin from the list is used by default. If you # need to manage legacy logins using legacy tools set it to Legacy_UserManager. # Other managers may be chosen in create/alter/drop user commands. # # Per-database configurable. # #UserManager = Srp # ---------------------------- # Default profiler plugin used to profile connections using the RDB$PROFILER package. # # Per-database configurable. # #DefaultProfilerPlugin = Default_Profiler # ---------------------------- # TracePlugin is used by Firebird trace facility to send trace data to the user # or log file in audit case. # #TracePlugin = fbtrace # ---------------------------- # Wire crypt plugins are used to encrypt data transferred over the wire. # By default, data is encrypted using ChaCha#20 (32/64 bit counter variants) # or Alleged RC4. Key must be generated by auth plugin. # For chacha we are using 16 or 32 bytes key (depends upon what is provided # by auth plugin), 12 (8) bytes nonce and 4 (8) bytes counter, 20 (10 + 10) # rounds are made. # # Per-connection configurable. # #WireCryptPlugin = ChaCha64, ChaCha, Arc4 # ---------------------------- # Key holder is a kind of temp storage for DB crypt keys. # There is no default for this kind of plugins. # #KeyHolderPlugin = # ---------------------------- # Ability to use encrypted security database # # If one relies on network encryption with the encryption key generated by # the authentication plugin (like SRP does) to transfer database encryption # keys over the wire, use of encrypted security databases is a kind of vicious # circle. In order to send the DB encryption key over the wire in a secure way, # wire transfers should be already encrypted, but this requires a wire encryption # key from the authentication plugin, which needs to open the security database # for hash validation which in turn requires the DB encryption key. Luckily, in # most cases there is no big need to encrypt security database - it protects # itself quite well if you use high quality passwords. But in some cases, it is # necessary to have the security database encrypted, for example if one wants to # use the self security database feature for an encrypted database. In that case, # special care should be taken to encrypt that key before passing it to server # using a callback. # Make sure your keys are well encrypted before enabling this parameter. Take into # account that with AllowEncryptedSecurityDatabase=TRUE, unencrypted key transfer # may take place even when the security database is not encrypted. # This feature is not supported by legacy authentication plugin - if you care # about security please never use legacy authentication. # # Type: boolean # # Per-database configurable. # ######################################################################### # Please understand what are you doing before enabling this feature !!! # ######################################################################### # #AllowEncryptedSecurityDatabase = false # ---------------------------- # This parameter determines what providers will be used by Firebird. # Format is the same as for the list of plugins (see above). Internally, # a provider is just a kind of plugin. # # Type: string # # Per-database & per-connection configurable. # #Providers = Remote,Engine13,Loopback # ---------------------------- # Determines the number of seconds that the lock manager will wait after a # conflict has been encountered before purging locks from dead processes # and doing an extra deadlock scan cycle. The engine detects deadlocks instantly # in all normal cases, so this value affects things only if something goes # wrong. Setting it too low may degrade system performance. # # Per-database configurable. # # Type: integer # #DeadlockTimeout = 10 # ---------------------------- # Set number of seconds after which statement execution will be automatically # cancelled by the engine. Zero means no timeout is set. # # Per-database configurable. # # Type: integer # #StatementTimeout = 0 # ---------------------------- # Set number of minutes after which idle attachment will be disconnected by the # engine. Zero means no timeout is set. # # Per-database configurable. # # Type: integer # #ConnectionIdleTimeout = 0 # ---------------------------- # Set number of seconds after which ON DISCONNECT trigger execution will be # automatically cancelled by the engine. Zero means no timeout is set. # # Per-database configurable. # # Type: integer # #OnDisconnectTriggerTimeout = 180 # ---------------------------- # How often the pages are flushed on disk # (for databases with ForcedWrites=Off only) # # Number of unflushed writes which will accumulate before they are # flushed, at the next transaction commit. For non-Windows ports, # the default value is -1 (Disabled) # # Per-database configurable. # # Type: integer # #MaxUnflushedWrites = 100 # Number of seconds during which unflushed writes will accumulate # before they are flushed, at the next transaction commit. For non-Windows # ports, the default value is -1 (Disabled) # # Per-database configurable. # # Type: integer # #MaxUnflushedWriteTime = 5 # ---------------------------- # This option controls whether to call abort() when an internal error or BUGCHECK # is encountered, thus invoking the post-mortem debugger which can dump core # suitable for off-line analysis. When disabled, the engine tries to minimize damage # and continue execution. # # Setting this option to 1 makes the engine produce traceable coredumps when # something nasty like SIGSEGV happens inside UDF. On Windows, enabling this option # makes the engine invoke the JIT debugger facilities when errors happen. # # For debugging builds (DEV_BUILD), default value is 1 (Enabled) # # Type: boolean # #BugcheckAbort = 0 # ---------------------------- # Relaxing relation alias checking rules in SQL # # Since Firebird 2.0, strict alias checking rules were implemented in the SQL # parser to accord with the SQL standard requirements. This setting allows # these rules to be relaxed in order to allow legacy applications to run on # Firebird 2.0. # A setting of 1 (true) allows the parser to resolve a qualified column reference # using the relation name, where an alias has been specified for that relation. # # For example, it allows a query such as: # SELECT TABLE.X FROM TABLE A # # It is not recommended to enable this setting. It should be regarded as an # interim workaround for porting untidy legacy code, until it is possible to # revise such code. # # CAUTION! # There is no guarantee that this setting will be available in future Firebird # versions. # # Type: boolean # #RelaxedAliasChecking = 0 # ---------------------------- # The engine currently provides statement-level read consistency in READ COMMITTED # mode by default. In this mode, rec_version/no_rec_version transaction flags have # no effect. Setting this parameter to 0 effectively reverts the engine to legacy # behavior. # # Type: boolean # #ReadConsistency = 1 # ---------------------------- # The engine provides a number of new datatypes unknown to legacy clients. # To simplify use of old applications set this parameter to the Firebird version # matching the datatype compatibility you need. Currently two values are # supported: 3.0 & 2.5. # More precise (including per-session) tuning is possible via SQL and DPB. # # Per-database configurable. # # Type: string # #DataTypeCompatibility = # =========================== # Client Connection Settings (Basic) # =========================== # ---------------------------- # Seconds to wait before concluding an attempt to connect has failed. # # Per-connection configurable. # # Type: integer # #ConnectionTimeout = 180 # ---------------------------- # Should connection over the wire be encrypted? # Has 3 different values: Required, Enabled or Disabled. Enabled behavior # depends on the other side's requirements. If both sides are set to Enabled, # the connection is encrypted when possible. Note that Wirecrypt should be set # to Enabled when running a Firebird server with legacy authentication. # # Attention: default depends upon connection type: incoming (server) # or outgoing (client). # # Per-connection configurable. # # Type: string (predefined values) # #WireCrypt = Enabled (for client) / Required (for server) # ---------------------------- # Should connection over the wire be compressed? # Client only value - server should follow client setting if connecting using # correct protocol (>=13). # # Per-connection configurable. # # Type: boolean # WireCompression = true # ---------------------------- # Seconds to wait on a silent client connection before the server sends # dummy packets to request acknowledgment. # # NOTE: This option may not prevent eventual inactive client disconnection. # # Normally, Firebird uses SO_KEEPALIVE socket option to keep track of # active connections. If you do not like its default 2-hour keepalive timeout, # then adjust your server OS settings appropriately. On UNIX-like OS's, # modify contents of /proc/sys/net/ipv4/tcp_keepalive_*. On Windows, # follow instrutions of this article: # https://learn.microsoft.com/en-us/troubleshoot/windows-client/networking/tcpip-and-nbt-configuration-parameters # # Per-connection configurable. # # Type: integer # #DummyPacketInterval = 0 # ---------------------------- # Buffer size (in bytes) used by the client connection to accumulate output # messages before sending them to the server using the Batch API. # # Per-connection configurable. # # Type: integer # #ClientBatchBuffer = 131072 # ---------------------------- # Default session or client time zone. # # If empty, the default is the OS time zone. # When set in the server, it defines the default session time zone for attachments. # When set in the client, it defines the default time zone used with client-side API functions and # the default value of isc_dpb_session_time_zone. # # Type: string # #DefaultTimeZone = # =========================== # TCP Protocol Settings # =========================== # ---------------------------- # The TCP Service name/Port number to be used for client database # connections. # # It is only necessary to change one of the entries, not both. The # order of precendence is the 'RemoteServiceName' (if an entry is # found in the 'services.' file), then the 'RemoteServicePort'. # # Per-connection configurable. # # Type: string, integer # #RemoteServiceName = gds_db #RemoteServicePort = 3050 # ---------------------------- # The TCP port number to be used for server Event Notification # messages. The value of 0 (Zero) means that the server will choose # a port number randomly. # # Per-database configurable. # # Type: integer # #RemoteAuxPort = 0 # ---------------------------- # TCP/IP buffer size for send and receive buffers of both the client # and server. The engine reads ahead of the client and can send # several rows of data in a single packet. The larger the packet size, # the more data is sent per transfer. Range is 1448 to 32767 (MAX_SSHORT). # # Type: integer # #TcpRemoteBufferSize = 8192 # ---------------------------- # Either enables or disables Nagle algorithm (TCP_NODELAY option of # socket) of the socket connection. # # Per-connection configurable. # # Type: boolean # #TcpNoNagle = 1 # ---------------------------- # Allows setting of IPV6_V6ONLY socket option. If enabled, IPv6 sockets # allow only IPv6 communication and separate sockets must be used for # IPv4 and IPv6. Default is false. # # Type: boolean # #IPv6V6Only = 0 # ---------------------------- # Allows incoming connections to be bound to the IP address of a # specific network card. It enables rejection of incoming connections # through any other network interface. By default, connections from any # available network interface are allowed. # If you are using Classic Server, this setting is for Windows only. # Under Linux, BSD or macOS, with Classic server, use xinetd or launchd # configuration file (bind parameter). # # Type: string # #RemoteBindAddress = # =========================== # Locking and shared memory parameters # =========================== # ---------------------------- # Bytes of shared memory allocated for lock manager. # The size is an allocation unit. The table expands dynamically in # increments of this allocation unit, up to 2 GiB - 1, or the limit of # memory. # # Per-database configurable. # # Type: integer # #LockMemSize = 1M # ---------------------------- # In Classic, only one client process may access the lock table at any # time. Access to the lock table is governed by a mutex. The mutex can # be requested conditionally - a wait is a failure and the request must # be retried - or unconditionally - the request will wait until it is # satisfied. This parameter establishes the number of attempts that # will be made conditionally. Zero value means unconditional mode. # # Per-database configurable. # # Type: integer # #LockAcquireSpins = 0 # ---------------------------- # Tune lock hash list; more hash slots mean shorter hash chains. Only # necessary under very high load. Prime number values are recommended. # # Per-database configurable. # # Type: integer # #LockHashSlots = 8191 # ---------------------------- # Bytes of shared memory allocated for event manager. # The size is an allocation unit. The event manager expands dynamically in # increments of this allocation unit, up to the limit of memory. # # Per-database configurable. # # Type: integer # #EventMemSize = 64K # ---------------------------- # Bytes of shared memory allocated for snapshots management. # This will grow automatically unless you use an exotic platform # that is neither Windows nor supports mmap system call. # Each active snapshot uses 16 bytes of memory. # The size is an allocation unit. The snapshot table expands dynamically in # increments of this allocation unit, up to the limit of memory. # # Per-database configurable. # # Type: integer # #SnapshotsMemSize = 64K # ---------------------------- # Bytes of shared memory allocated for each block of the TIP cache. # The reason to reduce this value is if you have a small TIP and # want to conserve some memory. The reason to increase this # value is if you need a very large cache and approach limits # on kernel objects allocated for each block (files, mutexes, etc). # Each cached transaction uses 8 bytes of memory. # # Per-database configurable. # # Type: integer # #TipCacheBlockSize = 4M # ---------------------------- # File to redirect stdout and stderr output of server # # Default '/dev/null' for *nix and 'nul' for Windows # Empty value or '-' keeps stdout and stderr as is. # # Type: string # #OutputRedirectionFile = /dev/null # =========================== # Engine Settings # =========================== # ---------------------------- # Which CPUs should be used (Windows Only) # # Sets which processors can be used by the server. The value is taken # from a bit map in which each bit represents a CPU. Thus, to use only # the first processor, the value is 1. To use both CPU 1 and CPU 2, # the value is 3. To use CPU 2 and CPU 3, the value is 6. # The default value is 0 - no affinity will be set. # # About systems with heterogeneous (Efficient/Performance) set of cores: # on Windows 10 and later, if affinity is not set nor by CpuAffinityMask, # nor by the caller process, then the server tries to exclude efficient cores # from its own affinity mask, i.e. default affinity mask includes performance # cores only. # # Type: integer # #CpuAffinityMask = 0 # ---------------------------- # Garbage collection policy # # Defines how engine does garbage collection. Valid values are: # cooperative # background # combined # # Superserver has by default "combined" policy # Classic has by default "cooperative" policy. # Other values are ignored by Classic server # # Per-database configurable. # # Type: string (special format) # #GCPolicy = combined # ---------------------------- # Maximum statement cache size # # The maximum amount of RAM used to cache unused DSQL compiled statements. # If set to 0 (zero), statement cache is disabled. # # Per-database configurable. # # Type: integer # #MaxStatementCacheSize = 2M # ---------------------------- # Security database # # Defines the location of the security database (one that stores logins # and passwords), used by server to validate remote connections. # # Per-database configurable. # # Type: string (pathname) # #SecurityDatabase = $(dir_secDb)/security5.fdb # ============================ # Settings for parallel work # ============================ # ---------------------------- # Limits the total number of parallel workers that can be created within a # single Firebird process for each attached database. # Workers are accounted for each attached database independently. # # Valid values are from 1 (no parallelism) to 64. All other values # silently ignored and default value of 1 is used. # Per-process. # # Type: integer # #MaxParallelWorkers = 1 # ---------------------------- # Default number of parallel workers for a single connection. For more details # see doc/README.parallel_features. # # Valid values are from 1 (no parallelism) to MaxParallelWorkers (above). # Values less than 1 are silently ignored and default value of 1 is used. # Per-process. # # Type: integer # #ParallelWorkers = 1 # ============================== # Settings for Windows platforms # ============================== # ---------------------------- # Does the guardian restart the server every time it crashes? # 0 - only start the engine/service once # 1 - always restart the engine/service if it terminates # # Type: integer/boolean # #GuardianOption = 1 # ---------------------------- # Priority level/class for the server process. # # The values are: # 0 (Zero) - normal priority, # positive value - high priority (same as -B command line option) # negative value - low priority. # # Note: All changes to this value should be carefully tested to ensure # that engine is more responsive to requests. # # Type: integer # #ProcessPriorityLevel = 0 # ---------------------------- # Local Connection Settings # # The name of the shared memory area used as a transport channel in local protocol. # # Please note that the server can only register objects in Global\ kernel namespace # if it runs under the account with SE_CREATE_GLOBAL_NAME privilege. # This means that if you run the server under a restricted account, it will not be # accessible using the local protocol from other sessions. # # Per-connection configurable. # # Type: string # #IpcName = FIREBIRD # ============================ # Settings for Unix/Linux platforms # ============================ # ---------------------------- # Remove protection against redirecting requests to other servers # # ***DEPRECATED*** ***DEPRECATED*** ***DEPRECATED*** # # This feature was partially broken in Firebird 3 with early (in remote listener) # user authentication. Not all plugins can be used with Redirection. # No matter of that we did not receive related bug reports, i.e. it's unused. # Therefore Redirection is declared DEPRECATED in Firebird 5 and will be removed # in Firebird 6. # # ***WARNING*** ***WARNING*** ***WARNING*** ***WARNING*** # # Ability to redirect requests to other servers was initially present # in Interbase, but was broken by Borland in Interbase 6.0, when # they added SQL dialects. Request redirection was fixed in Firebird 2.0, # but today such behaviour (proxy) seems to be dangerous from security # point of view. Imagine, you have one carefully protected Firebird server, # access to which is possible from global net. But in case when this server # has access to your internal LAN (may and should be restricted, # but often possible), it will work as a gateway for incoming requests like: # firebird.your.domain.com:internal_server:/private/database.fdb # It's enough to know name/IP of some internal server on your LAN, and for # this connection, one even need not know login/password on external server. # Such gateway easily overrides firewall, installed to protect your LAN # from outside attack. # # DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING. # # Type: boolean # #Redirection = 0 # ---------------------------- # Settings for Architecture Configuration # # Controls the method Firebird engine uses to work with databases and # related Firebird server startup parameters. # # The values are: # Super / ThreadedDedicated - databases are opened exclusive by a single server process, # attachments share single DB pages cache inside process # SuperClassic / ThreadedShared - databases are opened by a single server process, # but it does not prevent opening them in other processes (embedded access), # each attachment has its own DB pages cache # Classic / MultiProcess - for each attachment to the server, a separate process is # started, each database may be opened by multiple processes (including local ones for # embedded access), each attachment (process) has its own DB pages cache # # Type: string # #ServerMode = Super # ============================ # Settings of External Connections Pool # ============================ # ---------------------------- # Sets the maximum number of inactive (idle) external connections to retain at # the pool. Valid values are between 0 and 1000. If set to zero, the pool is disabled, # i.e. external connection is destroyed immediately after the use. # # Type: integer # #ExtConnPoolSize = 0 # ---------------------------- # Sets the time before destroying inactive external connection, seconds. # Valid values are between 1 and 86400. # # Type: integer # #ExtConnPoolLifeTime = 7200