SlideShare a Scribd company logo
From Firebird 1.5 to 2.5
How to migrate 75Gb database, with
564 tables, 5000+ stored procedures,
 813 triggers, which is working 24x7,
with ~400 users in less than 4 months
About IBSurgeon

                        • Tools and consulting
                        • Platinum Sponsor of
                          Firebird
                        • Founded in 2002: 9 years of
                          Firebird recoveries and
                          consulting
                        • Based in Moscow, Russia
                        • In Brazil – Firebase.com.br
       www.ib-aid.com    www.ibsurgeon.com
Team
Our chiefs




Our consultants




   Yemanov          Khorsun   Peshkoff
About Profitmed
• http://www.profitmed.net/
• Pharmaceutical distributor Russia
• 24x7 work mode for 2 warehouses (16000 sqm +
  7000 sqm)
• 12x7 work mode for office
• 400 peak users
• 75 Gb database size
• 64 Gb RAM, RAID 10 (Dell Storage), Xeon 4x6
  cores
Why to migrate?
• From Firebird 1.5
  – Old (2004), no professional support
  – Bad memory management for huge queries
  – Slow garbage collection (1.5 hour+)
  – Slow backup (2 hours)
  – Firebird Classic 1.5 [actually] does not use more
    than 6 CPU cores
               All together = SLOW.
Simple approach is impossible


Stop operations   Perform migration   Run operations




The only available timeframe for switch to
the new version – Christmas & New Year Eve
Special approach needed

   Fork database   Prepare patch    Apply patch




                   Business logic    Performance
Metadata changes
                     changes         optimization
Infrastructure for migration
• 2 servers (similar)
  – Production is 64Gb RAM, Dell Storage
  – Test is 32Gb RAM, RAID1
• Tools to verify the migration
  – SQL queries compatibility
  – SQL queries plans - performance
Steps
1. Prepare metadata
2. Test convert data to 2.5
3. Application migration
  1.   Check SQL queries in applications for compatibility,
  2.   Change SQLs if necessary
  3.   Check execution plans of SQL queries
  4.   Change plans if necessary
4. Test run
5. Final run
Step 1: Prepare metadata
1. Extract metadata from Firebird 1.5 to script
  Isql –x (or using GUI tools)
2. Run metadata script in Firebird 2.5
3. Get output as “errors.txt” and analyze it
4. Patch 1.5 database (should be compatible
   with 1.5 and 2.5), and external script

                  Metadata                               Errors
Fb15    Extract
                   TEXT       Apply     Fb25   Export
                                                          Log
       Metadata              Metadata          Errors
 Db                 File                 Db             TEXT File
Errors in pure metadata – part 1
1. Ambiguous field name between table          ~40%
   X and table Y (need to use aliases!)
2. Data type unknown. Blob sub_types
   bigger than 1 (text) are for internal use   ~10%
   only. (wrong sub_type in BLOB
   definitions)
3. Attempt to update read-only column          ~7%
   (changes in AFTER UPDATE/AFTER
   DELETE triggers)
Errors in pure metadata – part 2
4. In 1.5 – function TRIM was in UDF,     ~5%
   now it’s embedded function with
   different parameters
5. Expression evaluation not supported.   ~1%
   Strings cannot be multiplied in
   dialect 3 (explicit casting needed).
6. New Keywords (GLOBAL)                  ~1%
7. Other errors
Summary of Step 1
• 800+ errors
• 2 weeks to fix
• Scripts:
  – Fixes in existing Firebird 1.5 database
  – Patch25.sql - External script to patch 2.5 database



Next: we are ready to convert data to
Firebird 2.5
Step 2: Test convert data to 2.5
1. Backup patched 1.5 database
2. Restore with –fix_fss_metadata and –
   fix_fss_data options
3. Apply Patch25.sql script to restored database
4. Backup/restore under 2.5


Backup – 2 hours, restore - 6 hours.
Summary of step 2
• 2 days
• We have database in 100% Firebird 2.5
  compatible format


• Next: need to check and change SQL
  queries in all our applications
Step 3: Application migration
1. Check SQL queries in applications for
   compatibility,
2. Change SQLs if necessary
3. Check execution plans of SQL queries
4. Change plans if necessary


This is the most complex step!
How to check SQL queries for
             compatibility
• We needed to log all SQL queries from all
  applications
  – Own-written applications
  – Closed-source application
Tip: logging is complicated
• MON$ tables does not help – they are
  snapshots (and in 2.1+ only) and make the
  heavy load
• FBTrace API is 2.5+ only and it also loads the
  server

• FBScanner is IBSurgeon’s commercial tool
  which analyze the network traffic and stores
  the full log, it’s the only true logging solution
FBScanner logged SQL queries
                           Computer1


                                   FBScanner


                                   3050

       Server

                                                 Firebird clients
                                                 (applications),
                Firebird                       connected through
                                                       TCP
           3050


Several workstations were run through FBScanner one by one to reduce
performance impact and make log more “linear”.
All SQL queries were stored to the log


               FBScanner




                             Complete SQL
                             texts with
                             parameters and
              Log database   (optionally)
                             plans!
SQL log
To find incompatible SQLs
We need to “play” log to the copy of 2.5
database
• Make prepare
• Try to execute
• Catch exceptions/errors if any
• Log SQL execution plans
• Log SQL execution times
    Find the differences in plans and delays
FBScanner played the log

 FBScanner


                   Copy of
                 database (in
                 2.5 format)

Log database
Differences in plans and execution times
  between 1.5 and 2.5 are highlighted
Play log results
•   We had ~55000 queries to analyze
•   Only 280 has different plans
•   ~400 has slower Execution time at 2.5 than 1.5
•   ~50 queries raised exceptions


    Only ~750 queries from 55000 required
                investigation.
Sorted log was exported to Excel
Plan problem example (simplified)
select agb.eid, agb.kollast, agb.eid5, agb.first_eid,
agb.did3, agb.did4, agb.marker, agb.place, agb.mnp
from p101_ant_goods_balance agb
where agb.ddate <= :i$ddate and agb.l800 = :i$l800 and
agb.did3 = rf2_abs(3409) and agb.marker = :i$marker and
agb.did <> :i$did

• 2.5 PLAN (AGB INDEX
  (IDX$AGB_L800_DDDATE_ECON_EMP))
• 1.5 PLAN (AGB INDEX
  (IDX$AGB_L800_DDDATE_ECON_EMP, IX$AGB_DID3))
Another problems
• New Firebird keywords in closed-sourced
  software
  – Was hacked 
• UDF rFunc for 64-bit Windows and Linux
Results of migration
• At Firebird 2.5
  – Better performance in queries
  – Fast garbage collection (20 minutes instead of 1.5
    hours)
  – Backup time reduced (1.5 hour instead of 2 hours)
  – Better use of multi-CPU hardware
  – 64 bit version of Firebird available
  – EXECUTION STATEMENT and other SQL features
Optimization Pack “Rodizio” offer
• To optimize databases we offer 1 year
  subscription to install as many as you need
  FBScanner+IBAnalyst+IBTM instances
• This instances will run indefinitely (no
  restrictions)
• Should be activated
  – Silent bundle is also possible, requires signing VAR
    agreement
        Today - R$800 (reg US$1800)
Thanks and Contacts
Questions? Ask support@ib-aid.com

Blog
http://FirebirdSurgeon.blogspot.com

Twitter
http://Twitter.com/ibsurgeon

Web
http://www.ib-aid.com

More Related Content

PPTX
Human computer interaction chapter 2 interaction Styles.pptx
PPTX
Software Requrement
PPTX
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...
PDF
Cs8493 unit 1
PPTX
Motivation in software project development
PPTX
RTO Management System
PDF
Analysis of Allocation Algorithms in Memory Management
PDF
09.project hospital management system
Human computer interaction chapter 2 interaction Styles.pptx
Software Requrement
Human Computer Interaction Chapter 3 HCI in the Software Process and Design ...
Cs8493 unit 1
Motivation in software project development
RTO Management System
Analysis of Allocation Algorithms in Memory Management
09.project hospital management system

What's hot (20)

PDF
lake city institute of technology
DOCX
1st assignment introduction to computer
PDF
srs-example.pdf
PPTX
PPT NEWS PORTAL (2) (1).pptx
PPT
OS - Ch1
PPTX
C++ with student management system project
PPT
Chapter 2 - Operating System Structures
PPTX
Introduction to Data Structure.pptx
PPT
Software re engineering
PPTX
Bus Pass.pptx
PPTX
Operating system 11 system calls
PPTX
Human Memory
PPT
Iteration and prototyping
PPTX
Computer Architecture Notes and Tutorials
PPTX
WORKFLOW OF THE PROCESS IN SPM
PPT
Case study linux
PDF
Process Control Block (PCB) print 4.pdf
PDF
Documentation project of college management [1]
PDF
Distance vector routing algorithm
PDF
Online Shopping Cart Business Requirement Dcoument
lake city institute of technology
1st assignment introduction to computer
srs-example.pdf
PPT NEWS PORTAL (2) (1).pptx
OS - Ch1
C++ with student management system project
Chapter 2 - Operating System Structures
Introduction to Data Structure.pptx
Software re engineering
Bus Pass.pptx
Operating system 11 system calls
Human Memory
Iteration and prototyping
Computer Architecture Notes and Tutorials
WORKFLOW OF THE PROCESS IN SPM
Case study linux
Process Control Block (PCB) print 4.pdf
Documentation project of college management [1]
Distance vector routing algorithm
Online Shopping Cart Business Requirement Dcoument
Ad

Similar to Firebird migration: from Firebird 1.5 to Firebird 2.5 (20)

PPTX
Migration from Firebird 1.5 to Firebird 2.5
PPTX
Firebird migration: from Firebird 1.5 to Firebird 2.5
PPTX
Save 5 Hours a Day by Integrating RPG to SQL Server, Excel, and Other Databases
PDF
MySQL 5.6 - Operations and Diagnostics Improvements
PDF
Gruter TECHDAY 2014 Realtime Processing in Telco
PDF
The state of Spark in the cloud
PPTX
Firebird's Big Databases (in English)
PDF
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
PPTX
Save 5 Hours a Day by Integrating RPG to Excel & SQL Server
PDF
ODTUG KSCOPE 2017 - Black Belt Techniques for FDMEE and Cloud Data Management
PPTX
Aws migration case study_blr_meetup
PDF
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
PDF
MariaDB 5.5 and what comes next - Percona Live NYC 2012
PPTX
Large Data Volume Salesforce experiences
PDF
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
PPTX
Toronto High Scalability meetup - Scaling ELK
PDF
EDB 13 - New Enhancements for Security and Usability - APJ
 
PPTX
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
PDF
2.4 Optimizing your Visual COBOL Applications
PDF
Tips and Tricks for SAP Sybase ASE
Migration from Firebird 1.5 to Firebird 2.5
Firebird migration: from Firebird 1.5 to Firebird 2.5
Save 5 Hours a Day by Integrating RPG to SQL Server, Excel, and Other Databases
MySQL 5.6 - Operations and Diagnostics Improvements
Gruter TECHDAY 2014 Realtime Processing in Telco
The state of Spark in the cloud
Firebird's Big Databases (in English)
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
Save 5 Hours a Day by Integrating RPG to Excel & SQL Server
ODTUG KSCOPE 2017 - Black Belt Techniques for FDMEE and Cloud Data Management
Aws migration case study_blr_meetup
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
MariaDB 5.5 and what comes next - Percona Live NYC 2012
Large Data Volume Salesforce experiences
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
Toronto High Scalability meetup - Scaling ELK
EDB 13 - New Enhancements for Security and Usability - APJ
 
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
2.4 Optimizing your Visual COBOL Applications
Tips and Tricks for SAP Sybase ASE
Ad

More from Alexey Kovyazin (20)

PPTX
High-load performance testing: Firebird 2.5, 3.0, 4.0
PPTX
Fail-Safe Cluster for FirebirdSQL and something more
PPTX
Новые возможности языка SQL в Firebird 3.0
ODP
Firebird recovery tools and techniques by IBSurgeon
ODP
How Firebird transactions work
PDF
Life with big Firebird databases
PDF
Professional tools for Firebird optimization and maintenance from IBSurgeon
PPTX
Resolving Firebird performance problems
PPTX
Firebird Anti-Corruption Approach
PDF
Firebird Dataguard (Russian)
PPT
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
PDF
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
PDF
Firebird usage promo draft
PPTX
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
ODP
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
ODP
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
PPTX
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
ODP
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
ODP
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
PPT
Firebird Scalability, by Dmitry Yemanov (in English)
High-load performance testing: Firebird 2.5, 3.0, 4.0
Fail-Safe Cluster for FirebirdSQL and something more
Новые возможности языка SQL в Firebird 3.0
Firebird recovery tools and techniques by IBSurgeon
How Firebird transactions work
Life with big Firebird databases
Professional tools for Firebird optimization and maintenance from IBSurgeon
Resolving Firebird performance problems
Firebird Anti-Corruption Approach
Firebird Dataguard (Russian)
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
Firebird usage promo draft
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Firebird Scalability, by Dmitry Yemanov (in English)

Recently uploaded (20)

PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Spectroscopy.pptx food analysis technology
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Machine Learning_overview_presentation.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Network Security Unit 5.pdf for BCA BBA.
PPT
Teaching material agriculture food technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectroscopy.pptx food analysis technology
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
MYSQL Presentation for SQL database connectivity
20250228 LYD VKU AI Blended-Learning.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
The AUB Centre for AI in Media Proposal.docx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Review of recent advances in non-invasive hemoglobin estimation
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine Learning_overview_presentation.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Mobile App Security Testing_ A Comprehensive Guide.pdf
Programs and apps: productivity, graphics, security and other tools
Network Security Unit 5.pdf for BCA BBA.
Teaching material agriculture food technology
MIND Revenue Release Quarter 2 2025 Press Release

Firebird migration: from Firebird 1.5 to Firebird 2.5

  • 1. From Firebird 1.5 to 2.5 How to migrate 75Gb database, with 564 tables, 5000+ stored procedures, 813 triggers, which is working 24x7, with ~400 users in less than 4 months
  • 2. About IBSurgeon • Tools and consulting • Platinum Sponsor of Firebird • Founded in 2002: 9 years of Firebird recoveries and consulting • Based in Moscow, Russia • In Brazil – Firebase.com.br www.ib-aid.com www.ibsurgeon.com
  • 3. Team Our chiefs Our consultants Yemanov Khorsun Peshkoff
  • 4. About Profitmed • http://www.profitmed.net/ • Pharmaceutical distributor Russia • 24x7 work mode for 2 warehouses (16000 sqm + 7000 sqm) • 12x7 work mode for office • 400 peak users • 75 Gb database size • 64 Gb RAM, RAID 10 (Dell Storage), Xeon 4x6 cores
  • 5. Why to migrate? • From Firebird 1.5 – Old (2004), no professional support – Bad memory management for huge queries – Slow garbage collection (1.5 hour+) – Slow backup (2 hours) – Firebird Classic 1.5 [actually] does not use more than 6 CPU cores All together = SLOW.
  • 6. Simple approach is impossible Stop operations Perform migration Run operations The only available timeframe for switch to the new version – Christmas & New Year Eve
  • 7. Special approach needed Fork database Prepare patch Apply patch Business logic Performance Metadata changes changes optimization
  • 8. Infrastructure for migration • 2 servers (similar) – Production is 64Gb RAM, Dell Storage – Test is 32Gb RAM, RAID1 • Tools to verify the migration – SQL queries compatibility – SQL queries plans - performance
  • 9. Steps 1. Prepare metadata 2. Test convert data to 2.5 3. Application migration 1. Check SQL queries in applications for compatibility, 2. Change SQLs if necessary 3. Check execution plans of SQL queries 4. Change plans if necessary 4. Test run 5. Final run
  • 10. Step 1: Prepare metadata 1. Extract metadata from Firebird 1.5 to script Isql –x (or using GUI tools) 2. Run metadata script in Firebird 2.5 3. Get output as “errors.txt” and analyze it 4. Patch 1.5 database (should be compatible with 1.5 and 2.5), and external script Metadata Errors Fb15 Extract TEXT Apply Fb25 Export Log Metadata Metadata Errors Db File Db TEXT File
  • 11. Errors in pure metadata – part 1 1. Ambiguous field name between table ~40% X and table Y (need to use aliases!) 2. Data type unknown. Blob sub_types bigger than 1 (text) are for internal use ~10% only. (wrong sub_type in BLOB definitions) 3. Attempt to update read-only column ~7% (changes in AFTER UPDATE/AFTER DELETE triggers)
  • 12. Errors in pure metadata – part 2 4. In 1.5 – function TRIM was in UDF, ~5% now it’s embedded function with different parameters 5. Expression evaluation not supported. ~1% Strings cannot be multiplied in dialect 3 (explicit casting needed). 6. New Keywords (GLOBAL) ~1% 7. Other errors
  • 13. Summary of Step 1 • 800+ errors • 2 weeks to fix • Scripts: – Fixes in existing Firebird 1.5 database – Patch25.sql - External script to patch 2.5 database Next: we are ready to convert data to Firebird 2.5
  • 14. Step 2: Test convert data to 2.5 1. Backup patched 1.5 database 2. Restore with –fix_fss_metadata and – fix_fss_data options 3. Apply Patch25.sql script to restored database 4. Backup/restore under 2.5 Backup – 2 hours, restore - 6 hours.
  • 15. Summary of step 2 • 2 days • We have database in 100% Firebird 2.5 compatible format • Next: need to check and change SQL queries in all our applications
  • 16. Step 3: Application migration 1. Check SQL queries in applications for compatibility, 2. Change SQLs if necessary 3. Check execution plans of SQL queries 4. Change plans if necessary This is the most complex step!
  • 17. How to check SQL queries for compatibility • We needed to log all SQL queries from all applications – Own-written applications – Closed-source application
  • 18. Tip: logging is complicated • MON$ tables does not help – they are snapshots (and in 2.1+ only) and make the heavy load • FBTrace API is 2.5+ only and it also loads the server • FBScanner is IBSurgeon’s commercial tool which analyze the network traffic and stores the full log, it’s the only true logging solution
  • 19. FBScanner logged SQL queries Computer1 FBScanner 3050 Server Firebird clients (applications), Firebird connected through TCP 3050 Several workstations were run through FBScanner one by one to reduce performance impact and make log more “linear”.
  • 20. All SQL queries were stored to the log FBScanner Complete SQL texts with parameters and Log database (optionally) plans!
  • 22. To find incompatible SQLs We need to “play” log to the copy of 2.5 database • Make prepare • Try to execute • Catch exceptions/errors if any • Log SQL execution plans • Log SQL execution times Find the differences in plans and delays
  • 23. FBScanner played the log FBScanner Copy of database (in 2.5 format) Log database
  • 24. Differences in plans and execution times between 1.5 and 2.5 are highlighted
  • 25. Play log results • We had ~55000 queries to analyze • Only 280 has different plans • ~400 has slower Execution time at 2.5 than 1.5 • ~50 queries raised exceptions Only ~750 queries from 55000 required investigation.
  • 26. Sorted log was exported to Excel
  • 27. Plan problem example (simplified) select agb.eid, agb.kollast, agb.eid5, agb.first_eid, agb.did3, agb.did4, agb.marker, agb.place, agb.mnp from p101_ant_goods_balance agb where agb.ddate <= :i$ddate and agb.l800 = :i$l800 and agb.did3 = rf2_abs(3409) and agb.marker = :i$marker and agb.did <> :i$did • 2.5 PLAN (AGB INDEX (IDX$AGB_L800_DDDATE_ECON_EMP)) • 1.5 PLAN (AGB INDEX (IDX$AGB_L800_DDDATE_ECON_EMP, IX$AGB_DID3))
  • 28. Another problems • New Firebird keywords in closed-sourced software – Was hacked  • UDF rFunc for 64-bit Windows and Linux
  • 29. Results of migration • At Firebird 2.5 – Better performance in queries – Fast garbage collection (20 minutes instead of 1.5 hours) – Backup time reduced (1.5 hour instead of 2 hours) – Better use of multi-CPU hardware – 64 bit version of Firebird available – EXECUTION STATEMENT and other SQL features
  • 30. Optimization Pack “Rodizio” offer • To optimize databases we offer 1 year subscription to install as many as you need FBScanner+IBAnalyst+IBTM instances • This instances will run indefinitely (no restrictions) • Should be activated – Silent bundle is also possible, requires signing VAR agreement Today - R$800 (reg US$1800)
  • 31. Thanks and Contacts Questions? Ask support@ib-aid.com Blog http://FirebirdSurgeon.blogspot.com Twitter http://Twitter.com/ibsurgeon Web http://www.ib-aid.com