SlideShare ist ein Scribd-Unternehmen logo
1 von 31
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.comwww.ibsurgeon.com
Team Our chiefs Our consultants Yemanov Peshkoff Khorsun
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 The only available timeframe for switch to the new version – Christmas & New Year Eve
Special approach needed
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 Prepare metadata Test convert data to 2.5 Application migration Check SQL queries in applications for compatibility,  Change SQLs if necessary Check execution plans of SQL queries Change plans if necessary Test run Final run
Step 1: Prepare metadata Extract metadata from Firebird 1.5 to script Isql –x  (or using GUI tools) Run metadata script in Firebird 2.5  Get output as “errors.txt” and analyze it Patch 1.5 database (should be compatible with 1.5 and 2.5), and external script Fb15 Db Fb25 Db Metadata TEXT File Apply Metadata Extract Metadata Export Errors Errors Log TEXT File
Errors in pure metadata – part 1 Ambiguous field name between table X and table Y (need to use aliases!) Data type unknown. Blob sub_types bigger than 1 (text) are for internal use only. (wrong sub_type in BLOB definitions) Attempt to update read-only column (changes in AFTER UPDATE/AFTER DELETE triggers) ~40% ~10% ~7%
Errors in pure metadata – part 2 In 1.5 – function TRIM was in UDF, now it’s embedded function with different parameters Expression evaluation not supported. Strings cannot be multiplied in dialect 3 (explicit casting needed). New Keywords (GLOBAL) Other errors ~5% ~1% ~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 Summary of Step 1
Step 2: Test convert data to 2.5 Backup patched 1.5 database Restore with –fix_fss_metadataand –fix_fss_data options Apply Patch25.sql script to restored database 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 Check SQL queries in applications for compatibility,  Change SQLs if necessary Check execution plans of SQL queries 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), connected through TCP Firebird   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       Log database Complete SQL texts with parameters and (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     Log database Copy of database (in 2.5 format)
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

Weitere ähnliche Inhalte

Was ist angesagt?

Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testingMind The Firebird
 
Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Alexey Kovyazin
 
Professional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeonProfessional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeonAlexey Kovyazin
 
Working with Large Firebird databases
Working with Large Firebird databasesWorking with Large Firebird databases
Working with Large Firebird databasesMind The Firebird
 
Firebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachFirebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachAlexey Kovyazin
 
Firebird 3.x guida alla migrazione
Firebird 3.x guida alla migrazioneFirebird 3.x guida alla migrazione
Firebird 3.x guida alla migrazioneFabio Codebue
 
Introduction to firebidSQL 3.x
Introduction to firebidSQL 3.xIntroduction to firebidSQL 3.x
Introduction to firebidSQL 3.xFabio Codebue
 
Understanding and controlling transaction logs
Understanding and controlling transaction logsUnderstanding and controlling transaction logs
Understanding and controlling transaction logsRed Gate Software
 
Technical Modifications to Compress Period End Close - R12.1.3
Technical Modifications to Compress Period End Close - R12.1.3Technical Modifications to Compress Period End Close - R12.1.3
Technical Modifications to Compress Period End Close - R12.1.3Joshua Johnson, MIS
 
Major features postgres 11
Major features postgres 11Major features postgres 11
Major features postgres 11EDB
 
Postgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowPostgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowEDB
 
How to Upgrade Major Version of Your Production PostgreSQL
How to Upgrade Major Version of Your Production PostgreSQLHow to Upgrade Major Version of Your Production PostgreSQL
How to Upgrade Major Version of Your Production PostgreSQLKeisuke Suzuki
 
Open Policy Agent for governance as a code
Open Policy Agent for governance as a code Open Policy Agent for governance as a code
Open Policy Agent for governance as a code Alexander Tokarev
 
PostgreSQL Hangout Replication Features v9.4
PostgreSQL Hangout Replication Features v9.4PostgreSQL Hangout Replication Features v9.4
PostgreSQL Hangout Replication Features v9.4Ashnikbiz
 
[Altibase] 13 backup and recovery
[Altibase] 13 backup and recovery[Altibase] 13 backup and recovery
[Altibase] 13 backup and recoveryaltistory
 
Optimizing S3 Write-heavy Spark workloads
Optimizing S3 Write-heavy Spark workloadsOptimizing S3 Write-heavy Spark workloads
Optimizing S3 Write-heavy Spark workloadsdatamantra
 
[Altibase] 12 replication part5 (optimization and monitoring)
[Altibase] 12 replication part5 (optimization and monitoring)[Altibase] 12 replication part5 (optimization and monitoring)
[Altibase] 12 replication part5 (optimization and monitoring)altistory
 
Presentation maximizing database performance performance tuning with db time
Presentation    maximizing database performance performance tuning with db timePresentation    maximizing database performance performance tuning with db time
Presentation maximizing database performance performance tuning with db timexKinAnx
 
Some osdb migration_question_for_the_certification_tadm70
Some osdb migration_question_for_the_certification_tadm70Some osdb migration_question_for_the_certification_tadm70
Some osdb migration_question_for_the_certification_tadm70neel_pushkar
 

Was ist angesagt? (20)

Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testing
 
Firebird's Big Databases (in English)
Firebird's Big Databases (in English)Firebird's Big Databases (in English)
Firebird's Big Databases (in English)
 
Professional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeonProfessional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeon
 
Working with Large Firebird databases
Working with Large Firebird databasesWorking with Large Firebird databases
Working with Large Firebird databases
 
Firebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachFirebird Anti-Corruption Approach
Firebird Anti-Corruption Approach
 
Firebird 3.x guida alla migrazione
Firebird 3.x guida alla migrazioneFirebird 3.x guida alla migrazione
Firebird 3.x guida alla migrazione
 
Introduction to firebidSQL 3.x
Introduction to firebidSQL 3.xIntroduction to firebidSQL 3.x
Introduction to firebidSQL 3.x
 
Understanding and controlling transaction logs
Understanding and controlling transaction logsUnderstanding and controlling transaction logs
Understanding and controlling transaction logs
 
Technical Modifications to Compress Period End Close - R12.1.3
Technical Modifications to Compress Period End Close - R12.1.3Technical Modifications to Compress Period End Close - R12.1.3
Technical Modifications to Compress Period End Close - R12.1.3
 
Major features postgres 11
Major features postgres 11Major features postgres 11
Major features postgres 11
 
Postgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowPostgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to Know
 
How to Upgrade Major Version of Your Production PostgreSQL
How to Upgrade Major Version of Your Production PostgreSQLHow to Upgrade Major Version of Your Production PostgreSQL
How to Upgrade Major Version of Your Production PostgreSQL
 
Open Policy Agent for governance as a code
Open Policy Agent for governance as a code Open Policy Agent for governance as a code
Open Policy Agent for governance as a code
 
PostgreSQL Hangout Replication Features v9.4
PostgreSQL Hangout Replication Features v9.4PostgreSQL Hangout Replication Features v9.4
PostgreSQL Hangout Replication Features v9.4
 
[Altibase] 13 backup and recovery
[Altibase] 13 backup and recovery[Altibase] 13 backup and recovery
[Altibase] 13 backup and recovery
 
Optimizing S3 Write-heavy Spark workloads
Optimizing S3 Write-heavy Spark workloadsOptimizing S3 Write-heavy Spark workloads
Optimizing S3 Write-heavy Spark workloads
 
[Altibase] 12 replication part5 (optimization and monitoring)
[Altibase] 12 replication part5 (optimization and monitoring)[Altibase] 12 replication part5 (optimization and monitoring)
[Altibase] 12 replication part5 (optimization and monitoring)
 
Presentation maximizing database performance performance tuning with db time
Presentation    maximizing database performance performance tuning with db timePresentation    maximizing database performance performance tuning with db time
Presentation maximizing database performance performance tuning with db time
 
Some osdb migration_question_for_the_certification_tadm70
Some osdb migration_question_for_the_certification_tadm70Some osdb migration_question_for_the_certification_tadm70
Some osdb migration_question_for_the_certification_tadm70
 
Cloud DWH deep dive
Cloud DWH deep diveCloud DWH deep dive
Cloud DWH deep dive
 

Ähnlich wie Firebird migration: from Firebird 1.5 to Firebird 2.5

MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012Colin Charles
 
JSSUG: SQL Sever Performance Tuning
JSSUG: SQL Sever Performance TuningJSSUG: SQL Sever Performance Tuning
JSSUG: SQL Sever Performance TuningKenichiro Nakamura
 
MySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics ImprovementsMySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics ImprovementsMorgan Tocker
 
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
A26 MariaDB : The New&Implemented MySQL Branch by Colin CharlesA26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
A26 MariaDB : The New&Implemented MySQL Branch by Colin CharlesInsight Technology, Inc.
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architectureAjeet Singh
 
Espc17 make your share point fly by tuning and optimising sql server
Espc17 make your share point  fly by tuning and optimising sql serverEspc17 make your share point  fly by tuning and optimising sql server
Espc17 make your share point fly by tuning and optimising sql serverIsabelle Van Campenhoudt
 
Make your SharePoint fly by tuning and optimizing SQL Server
Make your SharePoint  fly by tuning and optimizing SQL ServerMake your SharePoint  fly by tuning and optimizing SQL Server
Make your SharePoint fly by tuning and optimizing SQL Serverserge luca
 
Hoodie: Incremental processing on hadoop
Hoodie: Incremental processing on hadoopHoodie: Incremental processing on hadoop
Hoodie: Incremental processing on hadoopPrasanna Rajaperumal
 
Microsoft sql server architecture
Microsoft sql server architectureMicrosoft sql server architecture
Microsoft sql server architectureNaveen Boda
 
Large Scale SQL Considerations for SharePoint Deployments
Large Scale SQL Considerations for SharePoint DeploymentsLarge Scale SQL Considerations for SharePoint Deployments
Large Scale SQL Considerations for SharePoint DeploymentsJoel Oleson
 
Improving Reporting Performance
Improving Reporting PerformanceImproving Reporting Performance
Improving Reporting PerformanceDhiren Gala
 
EDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB
 
Tips and Tricks for SAP Sybase ASE
Tips and Tricks for SAP Sybase ASETips and Tricks for SAP Sybase ASE
Tips and Tricks for SAP Sybase ASEDon Brizendine
 
Optimize SQL server performance for SharePoint
Optimize SQL server performance for SharePointOptimize SQL server performance for SharePoint
Optimize SQL server performance for SharePointserge luca
 
Database Configuration for Maximum SharePoint 2010 Performance
Database Configuration for Maximum SharePoint 2010 PerformanceDatabase Configuration for Maximum SharePoint 2010 Performance
Database Configuration for Maximum SharePoint 2010 PerformanceEdwin M Sarmiento
 
Oracle dba trainining in hyderabad
Oracle dba trainining in hyderabadOracle dba trainining in hyderabad
Oracle dba trainining in hyderabadsreehari orienit
 
Less01 db architecture
Less01 db architectureLess01 db architecture
Less01 db architectureImran Ali
 

Ähnlich wie Firebird migration: from Firebird 1.5 to Firebird 2.5 (20)

MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012MariaDB 5.5 and what comes next - Percona Live NYC 2012
MariaDB 5.5 and what comes next - Percona Live NYC 2012
 
JSSUG: SQL Sever Performance Tuning
JSSUG: SQL Sever Performance TuningJSSUG: SQL Sever Performance Tuning
JSSUG: SQL Sever Performance Tuning
 
Optimizing SQL Server 2012 for SharePoint 2013
Optimizing SQL Server 2012 for SharePoint 2013Optimizing SQL Server 2012 for SharePoint 2013
Optimizing SQL Server 2012 for SharePoint 2013
 
MySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics ImprovementsMySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics Improvements
 
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
A26 MariaDB : The New&Implemented MySQL Branch by Colin CharlesA26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
A26 MariaDB : The New&Implemented MySQL Branch by Colin Charles
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architecture
 
Espc17 make your share point fly by tuning and optimising sql server
Espc17 make your share point  fly by tuning and optimising sql serverEspc17 make your share point  fly by tuning and optimising sql server
Espc17 make your share point fly by tuning and optimising sql server
 
Make your SharePoint fly by tuning and optimizing SQL Server
Make your SharePoint  fly by tuning and optimizing SQL ServerMake your SharePoint  fly by tuning and optimizing SQL Server
Make your SharePoint fly by tuning and optimizing SQL Server
 
Howmysqlworks
HowmysqlworksHowmysqlworks
Howmysqlworks
 
Hoodie: Incremental processing on hadoop
Hoodie: Incremental processing on hadoopHoodie: Incremental processing on hadoop
Hoodie: Incremental processing on hadoop
 
Microsoft sql server architecture
Microsoft sql server architectureMicrosoft sql server architecture
Microsoft sql server architecture
 
Large Scale SQL Considerations for SharePoint Deployments
Large Scale SQL Considerations for SharePoint DeploymentsLarge Scale SQL Considerations for SharePoint Deployments
Large Scale SQL Considerations for SharePoint Deployments
 
Improving Reporting Performance
Improving Reporting PerformanceImproving Reporting Performance
Improving Reporting Performance
 
EDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJEDB 13 - New Enhancements for Security and Usability - APJ
EDB 13 - New Enhancements for Security and Usability - APJ
 
Tips and Tricks for SAP Sybase ASE
Tips and Tricks for SAP Sybase ASETips and Tricks for SAP Sybase ASE
Tips and Tricks for SAP Sybase ASE
 
Optimize SQL server performance for SharePoint
Optimize SQL server performance for SharePointOptimize SQL server performance for SharePoint
Optimize SQL server performance for SharePoint
 
Database Configuration for Maximum SharePoint 2010 Performance
Database Configuration for Maximum SharePoint 2010 PerformanceDatabase Configuration for Maximum SharePoint 2010 Performance
Database Configuration for Maximum SharePoint 2010 Performance
 
Oracle dba trainining in hyderabad
Oracle dba trainining in hyderabadOracle dba trainining in hyderabad
Oracle dba trainining in hyderabad
 
ora_sothea
ora_sotheaora_sothea
ora_sothea
 
Less01 db architecture
Less01 db architectureLess01 db architecture
Less01 db architecture
 

Mehr von Alexey Kovyazin

High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0Alexey Kovyazin
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Alexey Kovyazin
 
How Firebird transactions work
How Firebird transactions workHow Firebird transactions work
How Firebird transactions workAlexey Kovyazin
 
Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Alexey Kovyazin
 
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Alexey Kovyazin
 
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
Firebird DataGuard -  Еще раз об уверенности в завтрашнем днеFirebird DataGuard -  Еще раз об уверенности в завтрашнем дне
Firebird DataGuard - Еще раз об уверенности в завтрашнем днеAlexey Kovyazin
 
Firebird usage promo draft
Firebird usage promo draftFirebird usage promo draft
Firebird usage promo draftAlexey Kovyazin
 
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...Alexey Kovyazin
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Alexey Kovyazin
 
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Alexey Kovyazin
 
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)Alexey Kovyazin
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)Alexey Kovyazin
 
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)Alexey Kovyazin
 
Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)Alexey Kovyazin
 
Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)Alexey Kovyazin
 
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Alexey Kovyazin
 
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Alexey Kovyazin
 
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Alexey Kovyazin
 
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Alexey Kovyazin
 
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Alexey Kovyazin
 

Mehr von Alexey Kovyazin (20)

High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
How Firebird transactions work
How Firebird transactions workHow Firebird transactions work
How Firebird transactions work
 
Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Firebird Dataguard (Russian)
Firebird Dataguard (Russian)
 
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
 
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
Firebird DataGuard -  Еще раз об уверенности в завтрашнем днеFirebird DataGuard -  Еще раз об уверенности в завтрашнем дне
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
 
Firebird usage promo draft
Firebird usage promo draftFirebird usage promo draft
Firebird usage promo draft
 
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
 
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
 
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
 
Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)
 
Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)
 
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
 
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
 
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
 
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
 
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 

Kürzlich hochgeladen (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

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.comwww.ibsurgeon.com
  • 3. Team Our chiefs Our consultants Yemanov Peshkoff Khorsun
  • 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 The only available timeframe for switch to the new version – Christmas & New Year Eve
  • 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 Prepare metadata Test convert data to 2.5 Application migration Check SQL queries in applications for compatibility, Change SQLs if necessary Check execution plans of SQL queries Change plans if necessary Test run Final run
  • 10. Step 1: Prepare metadata Extract metadata from Firebird 1.5 to script Isql –x (or using GUI tools) Run metadata script in Firebird 2.5 Get output as “errors.txt” and analyze it Patch 1.5 database (should be compatible with 1.5 and 2.5), and external script Fb15 Db Fb25 Db Metadata TEXT File Apply Metadata Extract Metadata Export Errors Errors Log TEXT File
  • 11. Errors in pure metadata – part 1 Ambiguous field name between table X and table Y (need to use aliases!) Data type unknown. Blob sub_types bigger than 1 (text) are for internal use only. (wrong sub_type in BLOB definitions) Attempt to update read-only column (changes in AFTER UPDATE/AFTER DELETE triggers) ~40% ~10% ~7%
  • 12. Errors in pure metadata – part 2 In 1.5 – function TRIM was in UDF, now it’s embedded function with different parameters Expression evaluation not supported. Strings cannot be multiplied in dialect 3 (explicit casting needed). New Keywords (GLOBAL) Other errors ~5% ~1% ~1%
  • 13. 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 Summary of Step 1
  • 14. Step 2: Test convert data to 2.5 Backup patched 1.5 database Restore with –fix_fss_metadataand –fix_fss_data options Apply Patch25.sql script to restored database 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 Check SQL queries in applications for compatibility, Change SQLs if necessary Check execution plans of SQL queries 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), connected through TCP Firebird   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       Log database Complete SQL texts with parameters and (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     Log database Copy of database (in 2.5 format)
  • 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