3. WHY MIGRATION
• WHY MIGRATION
• Because we have a new logo?
• Because we have written marvellous code?
• Because we have lowest price of the market?
• Because you have nothing else todo?
4. MIGRATION CHECKS
• USEFUL TIPS
• New features in Firebird often require changes to the
storage format of the database. Maintaining the ability to
access many different old versions of the database
structure complicates the code of the Firebird server.
• In order to use existing databases under Firebird 3, you
must convert them to the new storage format.
• FIRST check you can backup and restore DB
• Firebird 3 can access only ODS 12 databases
5. CHANGE ODS TO 12.0
• CHECKS
• Test the database integrity with gbak
gbak -user <user> -pas <password> -b -v -g -se <service_mgr> <database>
<backupfile>
• If the gbak backup fails indicating a possible corruption
gfix -v -full -user <user> -pas <password> <database>
• If gfix reports transactions in limbo
gfix -v -full –mend <user> -pas <password> <database>
• Once you have a good backup, restore it
gbak -user <user> -pas <password> -c -v -se <service_mgr> <backupfile>
<database>
6. CHARACTER ENCODING
• PROBLEM WITH CHARACTER ENCODING
• If you currently run Firebird 2.1 or later
• You should perform this check before starting to migrate
to Firebird 3
• Firebird uses the character set UNICODE_FSS to store the
data in the system tables (RDB$...)
• To solve the problem use gbak during restore
• -fix_fss_metadata or -fix_fss_data
7. METADATA CHECKS
• VALIDATING METADATA
• Firebird 3 has added reserved words
• The gbak restore recognizes table and column names that
are reserved words
• and changes them to quoted identifiers.
• However, triggers, stored procedures, validity constraints,
and even view definitions
• And gbak doesn’t recognize them
• EXPORT DATABASE TO SQL and run… so check errors!
8. BACKUP/RESTORE PROCESS
• SPEED UP BACKUP/RESTORE PROCESS
• Use the -g switch during the backup – no garbage
collection
• Use the -se service_mgr switch, for both the backup and
the restore - eliminating communication time
• Use SSD … naturally.. .or not?
• Increase the parameter SortMemSize in firebird.conf
temporarily
9. USERS ARE CHANGED!
• USERS ARE NOT MORE THE SAME!
• Firebird 3 have centralized users database
• The default name for the security database in Firebird 3 is
security3.fdb
• PRO: user management can be simpler
• CONS: all user can access to all DB on server…
• If he know path and name!
• You cannot migrate the security database of older
Firebird versions to Firebird 3.
10. LOCAL USERS
• LOCAL USERS
• Introduced the concept of local, per database, users
• You can change name of user database
• SecurityDatabase can also be set per database in the
databases.conf
base1 = c:databasesbase1.fdb
{
SecurityDatabase = c:dbUsersusers_base1.fdb
}
base2 = c:dbsbase2.fdb
{
SecurityDatabase = base2
}
base3 = c:dbsbase3.fdb
11. PASSWORDS
• USER PASSWORDS
• Firebird does not store users' passwords
….in the security database
• Firebird stores a hash of the password
• Remember that up to Firebird 2.5
only the first eight bytes of a password are considered in
the hash calculation
• Firebird 3 uses up to 255 bytes of a password for hash
calculation!
12. INITIALIZING SECURITY DB
• Initializing the security database
• There are two ways
• Make sure that the Firebird process is not running
• Open a command prompt and, in the Firebird 3 root
directory, type:
gsec -user SYSDBA
gsec>add SYSDBA -pw masterkey
gsec>quit
• But… gsec is deprecated in firebird 3.0
13. INITIALIZING SECURITY DB
• Initializing the security database
• 2 mode
• Make sure that the Firebird process is not running
• Open a command prompt, and call isql like this:
isql -user SYSDBA employee
SQL>create user SYSDBA password 'masterkey'; SQL>commit;
SQL>quit;
• 3. Start Firebird
14. MANAGING USERS WITH SQL
• Managing users using SQL
CREATE USER name {PASSWORD ‘apassword’} [ options ]
[ TAGS ( tag [, tag [, tag ...]] ) ] [USING PLUGIN name]
ALTER USER name SET [PASSWORD ‘apassword’] [ options ]
[ TAGS ( tag [, tag [, tag ...]] ) ] [USING PLUGIN name]
ALTER CURRENT USER SET [PASSWORD ‘apassword’] [ options ]
[ TAGS ( tag [, tag [, tag ...]] ) ] [USING PLUGIN name]
CREATE OR ALTER USER name SET [PASSWORD ‘apassword’] [options]
[ TAGS ( tag [, tag [, tag ...]] ) ] [USING PLUGIN name]
DROP USER nome [USING PLUGIN name];
15. LEGACY APPLICATION
• Firebird 3 introduces a new C++ object oriented API
• While maintaining full compatibility with the legacy API.
• .NET applications
• NET Provider did not yet support the new communication protocol encryption or SRP
authentication
• set the following parameters in firebird.conf:
WireCrypt = enabled (accept unenctpted connection)
• Jaybird applications
• Java Provider did not yet support the new communication protocol encryption or SRP
authentication
WireCrypt = Enabled
AuthServer = Srp, Win_Sspi, Legacy_Auth
UserManager = Srp, Legacy_UserManager