Gfix - Management and bug fixes

Gfix - Management and bug fixes

GFIX is Firebird's command line tool for administration issues like data repair, sweeping, etc.

General Syntax

gfix [options] -user  -password   [options]
 
-user 
Database user name
-pas[sword] 
Database password
-fet[ch_password] 
Instead of -password: Fetch password from the file so it is not visible in the command line. When is stdin, the user will be prompted for the password. [Firebird 2.5]

Database Shutdown

When a database has been shut down, only SYSDBA and the database owner are able to connect to the database in order to perform administrative tasks.

Options

-at[tach] 
Used with the -shut option. Waits seconds for all current connections to end. If after seconds there are still connections open, the shutdown will be cancelled and return an error.
-f[orce] 
Used with the -shut option. Waits seconds for all connections and transactions to end. After this time, all connections and transactions are cancelled and the database is shut down. Use with caution.
-o[nline]
If a -shut operation is pending, it is cancelled. Otherwise, takes a database back online
-sh[ut]
Shut down database. Must be used together with -attach, -force or -tran
-shut {normal | multi |
single | full}
-online {normal | multi |
single | full}
 
Firebird 2.0 and later: New shutdown modes:

NORMAL: Database is active and online
MULTI: Only connection from SYSDBA and the Database Owner will be allowed (compatible mode with Firebird 1.0/1.5)
SINGLE: Only one SYSDBA or Database Owner connection will be allowed
FULL: Exclusive shutdown: Database is completely offline, no connections will be allowed (it is now possible to access the database file safely on a file basis, e.g. for backups)

Use -shut to "go down" the scale of shutting down and -online to "go up" that scale.

-tr[an] 
Used with the -shut option. Waits seconds for all running transactions to end. If after seconds there are still running transactions, the shutdown will be cancelled.

Examples

Shut down database, wait 60 seconds until all connections are closed

gfix -user SYSDBA -password "masterkey" dbserver:/db/mydb.fdb -shut -attach 60

Note that GFIX will terminate with an error if there are still connections open after 60 seconds.

Shut down database, force shutdown after 60 seconds

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut -force 60

Shut down database, force shutdown NOW

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut -force 0

Put database online again

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -online

Examples for Firebird 2.0

Shut down database to single user mode

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut single -force 60

Put database online again

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -online normal

Shut down database, force shutdown NOW, allow no subsequent connections, even from SYSDBA or Owner

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut full -force 0

Database Repair, Sweeping

Options

-f[ull]
Use with the -v option. Checks all records and pages and releases unassigned record fragments
-h[ousekeeping] 0
Switch off automatic sweeping
-h[ousekeeping] 
Set Sweep Interval to transactions (default is 20000)
-i[gnore]
Ignores checksum errors during a validate or sweep
-m[end]
Marks corrupt records as unavailable so they are skipped on a subsequent backup
-n[o_update]
Use with the -v option. Checks all records and pages and reports errors but does not repair them
-sweep
Forces an immediate sweep
-v[alidate]
Check database for validity. At the same time, errors are reported and repaired

Examples

Validate Database

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -v -f

Sweep Database now

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -sweep

Set Sweep Interval to 50000 transactions

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -h 50000

Switch off Automatic Sweeping

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -h 0

Misc

Options

-a[ctivate]
Activate Shadow file for database usage
-b[uffers] 
Default cache buffers for the database will be set to pages
-c[ommit] 
Commits limbo transaction specified by the given
-c[ommit] all
Commits all limbo transactions
-l[ist]
Display IDs of all limbo transactions and what would happen to each transaction if you would use -t on it
-mo[de] read_write
Set mode of database to read/write (default). Requires exclusive access to database (shutdown)
-mo[de] read_only
Set mode of database to read-only. Requires exclusive access to database (shutdown)
-pa[ssword] 
Database password
-p[rompt]
Use with -l. Prompts for action.
-r[ollback] 
Rolls back limbo transaction specified by the given
-r[ollback] all
Rolls back all limbo transactions
-s[ql_dialect] 1
Sets SQL dialect 1 for the database
-s[ql_dialect] 3
Sets SQL dialect 3 for the database
-t[wo_phase] 
Performs automated two-phase recovery for limbo transaction with the given
-t[wo_phase] all
Performs automated two-phase recovery for all limbo transactions
-user 
Database username
-w[rite] sync
Enables Forced Writes
-w[rite] async
Disabled Forced Writes
-z
Show GFIX and server version

Examples

Set Database to Read-Only

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut -attach 60
gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -shut -force 0
gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -mode read_only
gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -online

Set Database to SQL Dialect 3

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -sql_dialect 3

Enable Forced Writes

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -write sync

Disable Forced Writes

gfix -user SYSDBA -password masterkey dbserver:/db/mydb.fdb -write async



Source
:
http://www.destructor.de/firebird/gfix.htm