SlideShare a Scribd company logo
Oracle - MySQL
  Migration
Marco Tusa
MySQL CTL
MySQL Conference 12 April 2012
Why Pythian
• Recognized Leader:
•   Global industry-leader in remote database administration services and consulting for Oracle, Oracle
    Applications, MySQL and SQL Server
•   Work with over 165 multinational companies such as Forbes.com, Fox Sports, Nordion and Western
    Union to help manage their complex IT deployments

• Expertise:
•   One of the world’s largest concentrations of dedicated, full-time DBA expertise. Employ 7 Oracle
    ACEs/ACE Directors
•   Hold 7 Specializations under Oracle Platinum Partner program, including Oracle Exadata, Oracle
    GoldenGate & Oracle RAC

• Global Reach & Scalability:
•   24/7/365 global remote support for DBA and consulting, systems administration, special projects or
    emergency response


                                                       3
                                               © 2012 Pythian
Who am I?
     •   Cluster Technical Leader at Pythian for MySQL technology
     •   Previous manager Professional Service South EMEA at
         MySQL/SUN/Oracle
     •   In MySQL before the SUN gets on us
     •   Lead the team responsible for Oracle & MySQL DBs service in
         support to technical systems, at Food and Agriculture Organization
         of United Nations (FAO of UN)
     •   Lead developer & system administrator teams in FAO managing the
         Intranet/Internet infrastructure.
     •   Worked (a lot) in developing countries like (Ethiopia, Senegal,
         Ghana, Egypt …)
     •   My Profile http://it.linkedin.com/in/marcotusa
     •   Email tusa@pythian.com marcotusa@tusacentral.net

4                                    © 2012 Pythian
Why MySQL
    I like to start from :*
    •Scalability       and Flexibility
    •High    Performance
    •High    Availability
    •Robust      Transactional Support
    •Web     and Data Warehouse Strengths
    •Strong     Data Protection
    •Comprehensive Application                        Development
    •Management           Ease
    •Open     Source Freedom and 24 x 7 Support
    •Lowest      Total Cost of Ownership
    *http://www.mysql.com/why-mysql/topreasons.html




5                                                        © 2012 Pythian
Why MySQL?
    MySQL TCO Savings Calculator (now)*




    *From www.mysql.com TCO calculator




6                                        © 2012 Pythian
Why MySQL?
    MySQL TCO Savings Calculator (before)




    *From www.mysql.com TCO calculator ancient time




7                                                     © 2012 Pythian
Why MySQL?
    All good then? When should I migrate my
    environment to MySQL?
    Cost is not the only aspect to consider:
      •   Need to use MySQL correctly;
      •   Be aware of existing issues
           •   good list of them from Baron*
      •   Identify the real effort require for the migration.
      *http://www.xaprb.com/blog/2009/03/13/50-things-to-know-before-migrating-oracle-
      to-mysql/




8                                        © 2012 Pythian
12 things to know about MySQL (1)
    1 Subqueries are poorly optimized (optimization expected in 5.6
     http://dev.mysql.com/doc/refman/5.6/en/from-clause-subquery-optimization.html)


      2 There is limited ability to audit (no user reference unless General log active).

      3 Authentication is built-in. There is no LDAP, Active Directory, or other external
      authentication capability. (New PAM module available for 5.5 but only enterprise)

      4 Data integrity checking is very weak, and even basic integrity constraints
      cannot always be enforced. (replication)

      5 Most queries can use only a single index per table; some multi-index query
      plans exist in certain cases, but the cost is usually underestimated by the query
      optimizer, and they are often slower than a table scan.

      6 Foreign keys are not supported in most storage engines.




9                                                 © 2012 Pythian
12 things to know about MySQL (2)
      7 Execution plans are not cached globally, only per-connection.

      8 There are no integrated or add-on business intelligence, OLAP cube, etc
        packages.

      9 There are no materialized views (also if we can use Event scheduler)

      10 Replication is asynchronous and has many limitations and edge cases.

      11 DDL such as ALTER TABLE or CREATE TABLE is non-transactional. It commits
       open transactions and cannot be rolled back or crash-recovered.

      12 Each storage engine can have widely varying behavior, features, and
       properties. (positive and negative)




10                                        © 2012 Pythian
Getting Started?
     Prepare a plan, and do not improvise

        • Analyze the source (from application to data design)
        • Identify show stoppers
        • Identify how to map what to what
        • Identify how to organize the target

     Most important:
     Be ready to do not force migration. If it does not make sense to proceed,
     STOP!




11                                    © 2012 Pythian
The Motto
             Use the right tool for the job




12                       © 2012 Pythian
Most common source cases
      • Database is used only to store data all the logic reside in
        the application

      • Database contains logic such as stored procedure and
        complex package

      • Database containing data for data warehouse

      • Real time data and historical records (telephone
        company)




13                              © 2012 Pythian
Define the process
          Analyze

                    Understand
                                     Match
                                    Src/dest
       Something




                                                    Re/Design        Extract src
       fails




                                                                Convert

                                          Import           Schemas      Logic   data

      Validate           Test/POC                               Index      Partition




14                                        © 2012 Pythian
Mitigating risk of failure (analyze)
     When analyzing the source database(s) what should be the outcome?

        • Easy to understand excluding list
        • Identify Source type (Simple data move; data + Intelligence; data mart)
        • In detail review per schema of complexity
        • Detailed assessment of modification and effort database objects
        • Detailed assessment of functions/functionalities used (also in the
          application)
        • Application assessment and review




15                                      © 2012 Pythian
Mitigating risk of failure (analyze)
      Easy to understand excluding list

      •Create a rank on the “impedance“
            o Apply it to analyzed schema i.e.:
                   Issue                       Workaround                         Grade*                  Notes
     Reference to external schemas
     in the a different instance (db                                               10      Not portable
     link)
     …
     Packages                        See Writing stored procedures                  9      Require full recode

     Procedures                     See Writing stored procedures                   9      Require full recoding

     Unique key longer then 255
                                    See Key length limitations                      4
     characters
                                                                                           Columns alias must be added
     Views alias                    Manually added                                  4
                                                                                           manually
                                                                                           Whenever possible convert to
     Sequences                      See Migration of Sequences                      3
                                                                                           autoincrement
     Empty schemas                  See empty schema definitions                    2      Convert to User definition


      *The lower grade the better



16                                                               © 2012 Pythian
Mitigating risk of failure (analyze)
     1. Identify and understand differences
        - Oracle vs MySQL behavior
        - DDL differences MySQL – Oracle
        - DML differences
        - Data formatting and encoding
        - Data set dimensions

     2. Identify and understand business logic differences
        - map Oracle functions to MySQL
        - convert Oracle logic to MySQL (if possible)

     3. Realize a Proof of Concept
        - involve an experienced Oracle DBA
        - involve an experience MySQL DBA
        - involve the developers
        - use real data
        - use real traffic



17                                         © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding server behavior
     Identify different behavior between Oracle and MySQL, some basic differences (cont.)

     • Oracle is case insensitive in the schema object definition while MySQL is case
     sensitive (remember to set lower_case_table_names)

     • Oracle does not provide DEFAULT value for NOT NULL, MySQL does.

     • Oracle supports millisecond MySQL only from 5.6

     • Oracle does not apply silent conversion to data types MySQL does (set sql_mode)

     • Oracle maximum VARCHAR2 dimension is 4,000 bytes, MySQL 65,535




18                                         © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding server behavior
     Identify different behavior between Oracle and MySQL, some basic differences
     1.what is what, understanding the naming conventions
      AUTO COMMIT
     Default enabled in MySQL
                    - you can't ROLLBACK
                    - Non Transactional Storage Engines
                    - SET AUTOCOMMIT = {0 | 1};

     2.securing the database
     Database Authentication/Privileges
              - MySQL Privileges (local; no roles)
              - Oracle System Privileges (local/external; roles)

     3.Dual in MySQL is not required
              - e.g. SELECT 1+1
              but we provided for Oracle Compatibility
              - SELECT 1+1 FROM DUAL
              - SELECT CURRENT_USER() FROM DUAL
19                                          © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding DDL differences
     Key length limitations

     Oracle handles index with a length up to the 40%(plus some overhead) of the
     database block size (db_block_size), this could be a problem with MySQL.

     MySQL can use 767/1000 bytes as a primary key or an index.

     But because in UTF-8, one character is 3 bytes, a primary key or any key can be at
     most 255 characters.

     Work around only for InnoDB innodb_large_prefix in case of Dynamic/Compressed
     ROW format.




20                                         © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding DDL differences
     autoincrement/sequence

     Oracle uses sequence, while MySQL is bound to AUTO_INCREMENT

     AUTO_INCREMENT must be NOT NULL and part of the primary key

     Oracle can retrieve sequence values MySQL need to use the function
     LAST_INSERT_ID().

     The LAST_INSERT_ID() is maintained per connection and is thus safe for concurrent
     use.

     Do not use “SELECT MAX(id)+1 FROM tab”




21                                        © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference

     Given The relevance in a Migration of the presence of SP/Trigger it is worth to
                        talk about it a little bit more in details

     Procedure and triggers difference
         • one trigger for event in MySQL, all the different actions needs to be group
         • no packages, workaround using a fake schema
         • different behavior by storage engine and if transactional or not
         • Security assignments and security definer/invoker
         • Up to 5.5 very basic error handling and lack of “signal” . So version 5.5 is
            almost mandatory if in the need to use decent error handling.




22                                           © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference

     MySQL stored programs can often add to application functionality and developer
       efficiency, and there are certainly many cases where the use of a procedural
       language such as the MySQL stored program language can do things that a non
       procedural language like SQL cannot.

       There are also a number of reasons why a MySQL stored program approach may
       offer performance improvements over a traditional SQL approach

           •   It provides a procedural approach (SQL is a declarative, non procedural
               language)
           •   It reduces client-server traffic
           •   It allows us to divide and conquer complex statements

        But…



23                                         © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference

     One graph tells more then 1,000 words:




24                                        © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
                                   IF and CASE Statements

       When constructing IF and CASE statements, try to minimize the number of
       comparisons that these statements are likely to make by testing for the most likely
       scenarios first.

       For instance, in the code in the next slide, the first statement maintains counts of
       various percentages.

       Assuming that the input data is evenly distributed, the first IF condition
       (percentage>95) will match about once in every 20 executions.
       On the other hand, the final condition will match in three out of four executions. So
       this means that for 75% of the cases, all four comparisons will need to be
       evaluated.




25                                          © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
     Non Optimized
             IF (percentage>95) THEN
                  SET Above95=Above95+1;
             ELSEIF (percentage >=90) THEN
                  SET Range90to95=Range90to95+1;
             ELSEIF (percentage >=75) THEN
                  SET Range75to89=Range75to89+1;
             ELSE
                  SET LessThan75=LessThan75+1;
             END IF;
     Optimized
            IF (percentage<75) THEN
                 SET LessThan75=LessThan75+1;
            ELSEIF (percentage >=75 AND percentage<90) THEN
                 SET Range75to89=Range75to89+1;
            ELSEIF (percentage >=90 and percentage <=95) THEN
                 SET Range90to95=Range90to95+1;
            ELSE
                 SET Above95=Above95+1;
            END IF;




26                                             © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference




     Looks simple and the effect is relevant:




27                                     © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
                                         Using Recursion

       A recursive routine is one that invokes itself.

       Recursive routines often offer elegant solutions to complex programming
       problems, but they also tend to consume large amounts of memory.


       They are also likely to be less efficient and less scalable than implementations
       based on iterative execution.




28                                           © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
     Recursive                                         Not Recursive
                                                       CREATE PROCEDURE nonrec_fib(n INT,OUT
     CREATE PROCEDURE rec_fib(n INT,OUT out_fib            out_fib INT)
         INT)                                          BEGIN
     BEGIN                                               DECLARE m INT default 0;
       DECLARE n_1 INT;                                  DECLARE k INT DEFAULT 1;
       DECLARE n_2 INT;                                  DECLARE i INT;
                                                         DECLARE tmp INT;
       IF (n=0) THEN
         SET out_fib=0;                                   SET m=0;
       ELSEIF (n=1) then                                  SET k=1;
         SET out_fib=1;                                   SET i=1;
       ELSE
         CALL rec_fib(n-1,n_1);                          WHILE (i<=n) DO
         CALL rec_fib(n-2,n_2);                             SET tmp=m+k;
         SET out_fib=(n_1 + n_2);                           SET m=k;
       END IF;                                              SET k=tmp;
     END                                                    SET i=i+1;
                                                         END WHILE;
                                                         SET out_fib=m;
                                                        END




29                                                © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference

             The difference is quite impressive and evident




30                                     © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
       When you need to retrieve only a single row from a SELECT statement,
       using the INTO clause is far easier than declaring, opening, fetching from,
       and closing a cursor. But does the INTO clause generate some additional
       work for MySQL or could the INTO clause be more efficient than a cursor?




31                                         © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference
                                      Trigger Overhead
       Every database trigger is associated with a specific DML operation (INSERT,
       UPDATE, or DELETE) on a specific table the trigger code will execute whenever
       that DML operation occurs on that table.

       Furthermore, all MySQL 5.x triggers are of the FOR EACH ROW type, which
       means that the trigger code will execute once for each row affected by the DML
       operation.

       Given that a single DML operation might potentially affect thousands of rows,
       should we be concerned that our triggers might have a negative effect on DML
       performance?

                          Absolutely yes!

32                                        © 2012 Pythian
Mitigating risk of failure (understand)
     Understanding Function Triggers difference

        When using Trigger be ALWAYS sure to have the right
                              indexes.




33                                     © 2012 Pythian
Mitigating risk of failure (match)
     Understanding DDL differences
     Identify conversion between Oracle and MySQL for
                                                           MySQL Data Type   Oracle Data Type
               • Tables         • Views                    INT               NUMBER(10, 0)
               • Procedures     • Functions                INTEGER           NUMBER(10, 0)
               • Packages       • Triggers                 LONGBLOB          BLOB, RAW
               • Sequences, synonyms etc.                  LONGTEXT          CLOB, RAW
     I.e. data types:                                      MEDIUMBLOB        BLOB, RAW
                                                           MEDIUMINT         NUMBER(7, 0)
                 MySQL Data Type    Oracle Data Type       MEDIUMTEXT        CLOB, RAW
                 BIGINT             NUMBER(19, 0)          NUMERIC           NUMBER
                 BIT                RAW                    REAL              FLOAT (24)
                 BLOB               BLOB, RAW              SET               VARCHAR2
                 CHAR               CHAR                   SMALLINT          NUMBER(5, 0)
                 DATE               DATE                   TEXT              VARCHAR2, CLOB
                 DATETIME           DATE                   TIME              DATE
                 DECIMAL            FLOAT (24)             TIMESTAMP         DATE
                 DOUBLE             FLOAT (24)             TINYBLOB          RAW
                 DOUBLE PRECISION   FLOAT (24)             TINYINT           NUMBER(3, 0)
                                                           TINYTEXT          VARCHAR2
                 ENUM               VARCHAR2               VARCHAR           VARCHAR2, CLOB
                 FLOAT              FLOAT
                                                           YEAR              NUMBER

34                                        © 2012 Pythian
Mitigating risk of failure (match)
     Understanding DML differences
     1.Join syntax
     2.SQL_mode
     3.Data comparison using collation
     4.other common differences
            • SQL macro differences
            • NVL() --> IFNULL()
            • ROWNUM --> LIMIT
            • SEQ.CURRVAL --> LAST_INSERT_ID()
            • SEQ.NEXTVAL --> NULL
            • NO DUAL necessary (SELECT NOW())
            • NO DECODE() --> IF() CASE()
            • JOIN (+) Syntax --> INNER|OUTER LEFT|RIGHT
            • No Hierarchical (connect to prior)




35                                    © 2012 Pythian
Mitigating risk of failure (convert)
     Data export & Index redesign

     • Re-organize the schema/table not just convert data types
        • Storage engines
        • Index full redesign
     • Data organization
        • Sharding
        • Partition
     • Logic rewrite
        • Inside MySQL
        • Move to application


36                                  © 2012 Pythian
Mitigating risk of failure (POC)
     Realize a Proof of Concept


                              Don’t work Alone
                     Involve Oracle experienced DBA
                     Involve MySQL experience DBA
                           Involve the developers
                                  Use real data
                                  Use real traffic
       Take one source for each type; start with the easy one
     Go Back to the analysis phase if you have to

37                                     © 2012 Pythian
What should my migration doc contains?
     General document

          • Description of the main differences between platforms
          • Description of the work around found
          • Explanation of what to do to avoid most common issues
          • Code write instructions
          • Common function mapping
          • List of the blocking issue(s)
          • List and explanation of what cannot be migrated and why




38                                     © 2012 Pythian
What should my migration doc contains?
     Per schema document
          • Overview of the effort for the migration
             Schema Name:   Test
             Objects               Number         Time(min)           hrs    Cost(0,50 cent/min)
             Table                          200            320           5,3                 2,65
             Views                           50              5          0,08                 0,04
             Procedure                      500           5000         83,33                41,67
             Function                        12            200          3,33                 1,67
             Trigger                        200           2500         41,67                20,83
             Package                          3              5          0,08                 0,04
             Total Time                                   8030        133,80                66,90




39                                                   © 2012 Pythian
What should my migration doc contains?
     Per schema document

           •Effort per table like:

       Schema Name:    Test                      Table                   City
       Rows                               2000
       Estimated min                        10
       Attribute       Data type source          dim source               Data type dest   dim dest
       Name            VARCHAR2                                        50 varchar                     50
       lat             FLOAT                                              FLOAT
       long            FLOAT                                              FLOAT
       population      Number                                        10,0 INT                         10
       SqKm            Number                                         7,0 MEDIUMINT
       Country         CHAR                                             3 CHAR                        3




40                                                  © 2012 Pythian
What should my migration doc contains?
     Trigger section
            • Effort per schema              Schema
                                             Name:           Test
                                             Events            Before        Time(min)        After      Time(min)
                                             Insert                       50        600               20        300
                                             Update                       50        600               20        300
                                             Delete                    50           600               10        100
                                             Total                    150                             50
                                             Packages                   3                              3
                                             Total Time                           1800                         700
            • Effort per Table:
        Schema Name:                             Test        Table
        Total                                         24
        action time    Trigger name Source       Insert* Update* Delete*                  Trigger name dest
        Before
                       Ins_change_ID                    20                      Ins_actions
                       Ins_change_ISO                   10
                       upd_population                                15         upd_population
        After
                       del_died_male                                          10 del_died_male
                       avr_pop_calculation                           15          avr_pop_calculation
        Total                                           30           30       10
        *time in minutes for conversion




41                                                      © 2012 Pythian
What should my migration doc contains?
     Procedure - function section
           • Effort per schema
                Schema Name:    Test
                Package                Number          Time(min)              Cost(0,50 cent/min)
                Pack1                           112            1200
                Pack2                           200            2000
                Pack3                           200                2000
                Total                           521
                Packages                          3
                Total Time                                        5200

           • Effort per Table:
           Schema Name:                               Test                 Table
           Total                                                       3
           Procedure name          Code rows            Impedance**            Time*         Packge              comments
           Proc_1                  200                                 4           480                Pckg1 Complex Error handling
           Func_1                  50                                  0           120                Pckg2            No problem
           Proc_2                  300                                10             -                Pckg1 Use of connect by prior

           Total                                                                   600
           *time in minutes for conversion
           ** The lower the better 10 means no portable



42                                                           © 2012 Pythian
What should my migration doc contains?
     Document from the Proof of Concept per source type

        • Expected results
        • Real value from test
        • Issues found
        • Work around identify
        • Time/Effort per schema
          • Breakdown per object (Table, View, Trigger, SP)
        • Redefine expectations
        • Review efforts and costs

        • Be ready to drop something from the migration list




43                                   © 2012 Pythian
Should I do all this manually?
     No! there are tools on the market but:




     •Choose your product carefully !
     •Better a simple one than something too complex
     •Always double check before applying
     •Nothing will replace human/professional knowledge/experience


44                                      © 2012 Pythian
Thank you and Q&A
     To contact us…
           sales@pythian.com

           1-877-PYTHIAN


     To follow us…
           http://www.pythian.com/news/


           http://www.facebook.com/pages/The-Pythian-Group/163902527671


           @pythian


           @pythianjobs


            http://www.linkedin.com/company/pythian


47                                          © 2012 Pythian
Ad

More Related Content

What's hot (20)

MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
 
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ivan Zoratti
 
MySQL For Oracle DBA's and Developers
MySQL For Oracle DBA's and DevelopersMySQL For Oracle DBA's and Developers
MySQL For Oracle DBA's and Developers
Ronald Bradford
 
My First 100 days with a Cassandra Cluster
My First 100 days with a Cassandra ClusterMy First 100 days with a Cassandra Cluster
My First 100 days with a Cassandra Cluster
Gustavo Rene Antunez
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)
Gustavo Rene Antunez
 
My First 100 days with a MySQL DBMS
My First 100 days with a MySQL DBMSMy First 100 days with a MySQL DBMS
My First 100 days with a MySQL DBMS
Gustavo Rene Antunez
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
Olivier DASINI
 
MySQL 5.6 Performance
MySQL 5.6 PerformanceMySQL 5.6 Performance
MySQL 5.6 Performance
MYXPLAIN
 
Perf Tuning Short
Perf Tuning ShortPerf Tuning Short
Perf Tuning Short
Ligaya Turmelle
 
MySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summaryMySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summary
Louis liu
 
MySQL Performance Best Practices
MySQL Performance Best PracticesMySQL Performance Best Practices
MySQL Performance Best Practices
Olivier DASINI
 
MySQL 5.7 in a Nutshell
MySQL 5.7 in a NutshellMySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
 
MySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDBMySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDB
Mario Beck
 
MySQL Atchitecture and Concepts
MySQL Atchitecture and ConceptsMySQL Atchitecture and Concepts
MySQL Atchitecture and Concepts
Tuyen Vuong
 
Introduction to Mysql
Introduction to MysqlIntroduction to Mysql
Introduction to Mysql
Tushar Chauhan
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
Morgan Tocker
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
FromDual GmbH
 
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
 
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ora mysql bothGetting the best of both worlds with Oracle 11g and MySQL Enter...
Ivan Zoratti
 
MySQL For Oracle DBA's and Developers
MySQL For Oracle DBA's and DevelopersMySQL For Oracle DBA's and Developers
MySQL For Oracle DBA's and Developers
Ronald Bradford
 
My First 100 days with a Cassandra Cluster
My First 100 days with a Cassandra ClusterMy First 100 days with a Cassandra Cluster
My First 100 days with a Cassandra Cluster
Gustavo Rene Antunez
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)My First 100 days with a MySQL DBMS (WP)
My First 100 days with a MySQL DBMS (WP)
Gustavo Rene Antunez
 
My First 100 days with a MySQL DBMS
My First 100 days with a MySQL DBMSMy First 100 days with a MySQL DBMS
My First 100 days with a MySQL DBMS
Gustavo Rene Antunez
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
Olivier DASINI
 
MySQL 5.6 Performance
MySQL 5.6 PerformanceMySQL 5.6 Performance
MySQL 5.6 Performance
MYXPLAIN
 
MySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summaryMySQL 5.5&5.6 new features summary
MySQL 5.5&5.6 new features summary
Louis liu
 
MySQL Performance Best Practices
MySQL Performance Best PracticesMySQL Performance Best Practices
MySQL Performance Best Practices
Olivier DASINI
 
MySQL 5.7 in a Nutshell
MySQL 5.7 in a NutshellMySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
 
MySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDBMySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDB
Mario Beck
 
MySQL Atchitecture and Concepts
MySQL Atchitecture and ConceptsMySQL Atchitecture and Concepts
MySQL Atchitecture and Concepts
Tuyen Vuong
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
Morgan Tocker
 
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015 2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
2015: Whats New in MySQL 5.7, At Oracle Open World, November 3rd, 2015
Geir Høydalsvik
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
FromDual GmbH
 

Similar to Oracle to MySQL 2012 (20)

Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql ClusterSanto Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto
 
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA -   UKOUGEmbracing Database Diversity: The New Oracle / MySQL DBA -   UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Keith Hollman
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
MySQL Brasil
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx
Ivan Ma
 
Oracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQLOracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQL
Mario Beck
 
1 architecture & design
1   architecture & design1   architecture & design
1 architecture & design
Mark Swarbrick
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
MySQL Brasil
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1
Ivan Ma
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster
Fran Navarro
 
NoSQL and MySQL
NoSQL and MySQLNoSQL and MySQL
NoSQL and MySQL
Ted Wennmark
 
Things learned from OpenWorld 2013
Things learned from OpenWorld 2013Things learned from OpenWorld 2013
Things learned from OpenWorld 2013
Connor McDonald
 
Replication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party ExtinctionReplication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party Extinction
Ben Mildren
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
Ted Wennmark
 
001 hbase introduction
001 hbase introduction001 hbase introduction
001 hbase introduction
Scott Miao
 
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RACAUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
Sandesh Rao
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Geir Høydalsvik
 
Oracle big data appliance and solutions
Oracle big data appliance and solutionsOracle big data appliance and solutions
Oracle big data appliance and solutions
solarisyougood
 
Oracle mysql comparison
Oracle mysql comparisonOracle mysql comparison
Oracle mysql comparison
Arun Sharma
 
Run Your Oracle BI QA Cycles More Effectively
Run Your Oracle BI QA Cycles More EffectivelyRun Your Oracle BI QA Cycles More Effectively
Run Your Oracle BI QA Cycles More Effectively
KPI Partners
 
Oracle my sql cluster cge
Oracle my sql cluster cgeOracle my sql cluster cge
Oracle my sql cluster cge
seungdon1
 
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql ClusterSanto Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto - MySQL Connect 2012 - Getting Started with Mysql Cluster
Santo Leto
 
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA -   UKOUGEmbracing Database Diversity: The New Oracle / MySQL DBA -   UKOUG
Embracing Database Diversity: The New Oracle / MySQL DBA - UKOUG
Keith Hollman
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
MySQL Brasil
 
20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx20141011 my sql clusterv01pptx
20141011 my sql clusterv01pptx
Ivan Ma
 
Oracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQLOracle Enterprise Manager for MySQL
Oracle Enterprise Manager for MySQL
Mario Beck
 
1 architecture & design
1   architecture & design1   architecture & design
1 architecture & design
Mark Swarbrick
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
MySQL Brasil
 
01 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv101 demystifying mysq-lfororacledbaanddeveloperv1
01 demystifying mysq-lfororacledbaanddeveloperv1
Ivan Ma
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster
Fran Navarro
 
Things learned from OpenWorld 2013
Things learned from OpenWorld 2013Things learned from OpenWorld 2013
Things learned from OpenWorld 2013
Connor McDonald
 
Replication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party ExtinctionReplication features, technologies and 3rd party Extinction
Replication features, technologies and 3rd party Extinction
Ben Mildren
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
Ted Wennmark
 
001 hbase introduction
001 hbase introduction001 hbase introduction
001 hbase introduction
Scott Miao
 
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RACAUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
AUSOUG - NZOUG-GroundBreakers-Jun 2019 - 19c RAC
Sandesh Rao
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Geir Høydalsvik
 
Oracle big data appliance and solutions
Oracle big data appliance and solutionsOracle big data appliance and solutions
Oracle big data appliance and solutions
solarisyougood
 
Oracle mysql comparison
Oracle mysql comparisonOracle mysql comparison
Oracle mysql comparison
Arun Sharma
 
Run Your Oracle BI QA Cycles More Effectively
Run Your Oracle BI QA Cycles More EffectivelyRun Your Oracle BI QA Cycles More Effectively
Run Your Oracle BI QA Cycles More Effectively
KPI Partners
 
Oracle my sql cluster cge
Oracle my sql cluster cgeOracle my sql cluster cge
Oracle my sql cluster cge
seungdon1
 
Ad

More from Marco Tusa (20)

Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Marco Tusa
 
My sql on kubernetes demystified
My sql on kubernetes demystifiedMy sql on kubernetes demystified
My sql on kubernetes demystified
Marco Tusa
 
Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...
Marco Tusa
 
Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...
Marco Tusa
 
Best practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-finalBest practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-final
Marco Tusa
 
MySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMySQL innoDB split and merge pages
MySQL innoDB split and merge pages
Marco Tusa
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysql
Marco Tusa
 
Fortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleuFortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleu
Marco Tusa
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Marco Tusa
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...
Marco Tusa
 
Improve aws withproxysql
Improve aws withproxysqlImprove aws withproxysql
Improve aws withproxysql
Marco Tusa
 
Fortify aws aurora_proxy
Fortify aws aurora_proxyFortify aws aurora_proxy
Fortify aws aurora_proxy
Marco Tusa
 
Mysql8 advance tuning with resource group
Mysql8 advance tuning with resource groupMysql8 advance tuning with resource group
Mysql8 advance tuning with resource group
Marco Tusa
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql sharding
Marco Tusa
 
Geographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deploymentGeographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deployment
Marco Tusa
 
Sync rep aurora_2016
Sync rep aurora_2016Sync rep aurora_2016
Sync rep aurora_2016
Marco Tusa
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynote
Marco Tusa
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instruments
Marco Tusa
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3
Marco Tusa
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
Marco Tusa
 
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Marco Tusa
 
My sql on kubernetes demystified
My sql on kubernetes demystifiedMy sql on kubernetes demystified
My sql on kubernetes demystified
Marco Tusa
 
Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...
Marco Tusa
 
Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...
Marco Tusa
 
Best practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-finalBest practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-final
Marco Tusa
 
MySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMySQL innoDB split and merge pages
MySQL innoDB split and merge pages
Marco Tusa
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysql
Marco Tusa
 
Fortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleuFortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleu
Marco Tusa
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Marco Tusa
 
Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...Are we there Yet?? (The long journey of Migrating from close source to opens...
Are we there Yet?? (The long journey of Migrating from close source to opens...
Marco Tusa
 
Improve aws withproxysql
Improve aws withproxysqlImprove aws withproxysql
Improve aws withproxysql
Marco Tusa
 
Fortify aws aurora_proxy
Fortify aws aurora_proxyFortify aws aurora_proxy
Fortify aws aurora_proxy
Marco Tusa
 
Mysql8 advance tuning with resource group
Mysql8 advance tuning with resource groupMysql8 advance tuning with resource group
Mysql8 advance tuning with resource group
Marco Tusa
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql sharding
Marco Tusa
 
Geographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deploymentGeographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deployment
Marco Tusa
 
Sync rep aurora_2016
Sync rep aurora_2016Sync rep aurora_2016
Sync rep aurora_2016
Marco Tusa
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynote
Marco Tusa
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instruments
Marco Tusa
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3
Marco Tusa
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
Marco Tusa
 
Ad

Recently uploaded (20)

Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 

Oracle to MySQL 2012

  • 1. Oracle - MySQL Migration Marco Tusa MySQL CTL MySQL Conference 12 April 2012
  • 2. Why Pythian • Recognized Leader: • Global industry-leader in remote database administration services and consulting for Oracle, Oracle Applications, MySQL and SQL Server • Work with over 165 multinational companies such as Forbes.com, Fox Sports, Nordion and Western Union to help manage their complex IT deployments • Expertise: • One of the world’s largest concentrations of dedicated, full-time DBA expertise. Employ 7 Oracle ACEs/ACE Directors • Hold 7 Specializations under Oracle Platinum Partner program, including Oracle Exadata, Oracle GoldenGate & Oracle RAC • Global Reach & Scalability: • 24/7/365 global remote support for DBA and consulting, systems administration, special projects or emergency response 3 © 2012 Pythian
  • 3. Who am I? • Cluster Technical Leader at Pythian for MySQL technology • Previous manager Professional Service South EMEA at MySQL/SUN/Oracle • In MySQL before the SUN gets on us • Lead the team responsible for Oracle & MySQL DBs service in support to technical systems, at Food and Agriculture Organization of United Nations (FAO of UN) • Lead developer & system administrator teams in FAO managing the Intranet/Internet infrastructure. • Worked (a lot) in developing countries like (Ethiopia, Senegal, Ghana, Egypt …) • My Profile http://it.linkedin.com/in/marcotusa • Email [email protected] [email protected] 4 © 2012 Pythian
  • 4. Why MySQL I like to start from :* •Scalability and Flexibility •High Performance •High Availability •Robust Transactional Support •Web and Data Warehouse Strengths •Strong Data Protection •Comprehensive Application Development •Management Ease •Open Source Freedom and 24 x 7 Support •Lowest Total Cost of Ownership *http://www.mysql.com/why-mysql/topreasons.html 5 © 2012 Pythian
  • 5. Why MySQL? MySQL TCO Savings Calculator (now)* *From www.mysql.com TCO calculator 6 © 2012 Pythian
  • 6. Why MySQL? MySQL TCO Savings Calculator (before) *From www.mysql.com TCO calculator ancient time 7 © 2012 Pythian
  • 7. Why MySQL? All good then? When should I migrate my environment to MySQL? Cost is not the only aspect to consider: • Need to use MySQL correctly; • Be aware of existing issues • good list of them from Baron* • Identify the real effort require for the migration. *http://www.xaprb.com/blog/2009/03/13/50-things-to-know-before-migrating-oracle- to-mysql/ 8 © 2012 Pythian
  • 8. 12 things to know about MySQL (1) 1 Subqueries are poorly optimized (optimization expected in 5.6 http://dev.mysql.com/doc/refman/5.6/en/from-clause-subquery-optimization.html) 2 There is limited ability to audit (no user reference unless General log active). 3 Authentication is built-in. There is no LDAP, Active Directory, or other external authentication capability. (New PAM module available for 5.5 but only enterprise) 4 Data integrity checking is very weak, and even basic integrity constraints cannot always be enforced. (replication) 5 Most queries can use only a single index per table; some multi-index query plans exist in certain cases, but the cost is usually underestimated by the query optimizer, and they are often slower than a table scan. 6 Foreign keys are not supported in most storage engines. 9 © 2012 Pythian
  • 9. 12 things to know about MySQL (2) 7 Execution plans are not cached globally, only per-connection. 8 There are no integrated or add-on business intelligence, OLAP cube, etc packages. 9 There are no materialized views (also if we can use Event scheduler) 10 Replication is asynchronous and has many limitations and edge cases. 11 DDL such as ALTER TABLE or CREATE TABLE is non-transactional. It commits open transactions and cannot be rolled back or crash-recovered. 12 Each storage engine can have widely varying behavior, features, and properties. (positive and negative) 10 © 2012 Pythian
  • 10. Getting Started? Prepare a plan, and do not improvise • Analyze the source (from application to data design) • Identify show stoppers • Identify how to map what to what • Identify how to organize the target Most important: Be ready to do not force migration. If it does not make sense to proceed, STOP! 11 © 2012 Pythian
  • 11. The Motto Use the right tool for the job 12 © 2012 Pythian
  • 12. Most common source cases • Database is used only to store data all the logic reside in the application • Database contains logic such as stored procedure and complex package • Database containing data for data warehouse • Real time data and historical records (telephone company) 13 © 2012 Pythian
  • 13. Define the process Analyze Understand Match Src/dest Something Re/Design Extract src fails Convert Import Schemas Logic data Validate Test/POC Index Partition 14 © 2012 Pythian
  • 14. Mitigating risk of failure (analyze) When analyzing the source database(s) what should be the outcome? • Easy to understand excluding list • Identify Source type (Simple data move; data + Intelligence; data mart) • In detail review per schema of complexity • Detailed assessment of modification and effort database objects • Detailed assessment of functions/functionalities used (also in the application) • Application assessment and review 15 © 2012 Pythian
  • 15. Mitigating risk of failure (analyze) Easy to understand excluding list •Create a rank on the “impedance“ o Apply it to analyzed schema i.e.: Issue Workaround Grade* Notes Reference to external schemas in the a different instance (db 10 Not portable link) … Packages See Writing stored procedures 9 Require full recode Procedures See Writing stored procedures 9 Require full recoding Unique key longer then 255 See Key length limitations 4 characters Columns alias must be added Views alias Manually added 4 manually Whenever possible convert to Sequences See Migration of Sequences 3 autoincrement Empty schemas See empty schema definitions 2 Convert to User definition *The lower grade the better 16 © 2012 Pythian
  • 16. Mitigating risk of failure (analyze) 1. Identify and understand differences - Oracle vs MySQL behavior - DDL differences MySQL – Oracle - DML differences - Data formatting and encoding - Data set dimensions 2. Identify and understand business logic differences - map Oracle functions to MySQL - convert Oracle logic to MySQL (if possible) 3. Realize a Proof of Concept - involve an experienced Oracle DBA - involve an experience MySQL DBA - involve the developers - use real data - use real traffic 17 © 2012 Pythian
  • 17. Mitigating risk of failure (understand) Understanding server behavior Identify different behavior between Oracle and MySQL, some basic differences (cont.) • Oracle is case insensitive in the schema object definition while MySQL is case sensitive (remember to set lower_case_table_names) • Oracle does not provide DEFAULT value for NOT NULL, MySQL does. • Oracle supports millisecond MySQL only from 5.6 • Oracle does not apply silent conversion to data types MySQL does (set sql_mode) • Oracle maximum VARCHAR2 dimension is 4,000 bytes, MySQL 65,535 18 © 2012 Pythian
  • 18. Mitigating risk of failure (understand) Understanding server behavior Identify different behavior between Oracle and MySQL, some basic differences 1.what is what, understanding the naming conventions AUTO COMMIT Default enabled in MySQL - you can't ROLLBACK - Non Transactional Storage Engines - SET AUTOCOMMIT = {0 | 1}; 2.securing the database Database Authentication/Privileges - MySQL Privileges (local; no roles) - Oracle System Privileges (local/external; roles) 3.Dual in MySQL is not required - e.g. SELECT 1+1 but we provided for Oracle Compatibility - SELECT 1+1 FROM DUAL - SELECT CURRENT_USER() FROM DUAL 19 © 2012 Pythian
  • 19. Mitigating risk of failure (understand) Understanding DDL differences Key length limitations Oracle handles index with a length up to the 40%(plus some overhead) of the database block size (db_block_size), this could be a problem with MySQL. MySQL can use 767/1000 bytes as a primary key or an index. But because in UTF-8, one character is 3 bytes, a primary key or any key can be at most 255 characters. Work around only for InnoDB innodb_large_prefix in case of Dynamic/Compressed ROW format. 20 © 2012 Pythian
  • 20. Mitigating risk of failure (understand) Understanding DDL differences autoincrement/sequence Oracle uses sequence, while MySQL is bound to AUTO_INCREMENT AUTO_INCREMENT must be NOT NULL and part of the primary key Oracle can retrieve sequence values MySQL need to use the function LAST_INSERT_ID(). The LAST_INSERT_ID() is maintained per connection and is thus safe for concurrent use. Do not use “SELECT MAX(id)+1 FROM tab” 21 © 2012 Pythian
  • 21. Mitigating risk of failure (understand) Understanding Function Triggers difference Given The relevance in a Migration of the presence of SP/Trigger it is worth to talk about it a little bit more in details Procedure and triggers difference • one trigger for event in MySQL, all the different actions needs to be group • no packages, workaround using a fake schema • different behavior by storage engine and if transactional or not • Security assignments and security definer/invoker • Up to 5.5 very basic error handling and lack of “signal” . So version 5.5 is almost mandatory if in the need to use decent error handling. 22 © 2012 Pythian
  • 22. Mitigating risk of failure (understand) Understanding Function Triggers difference MySQL stored programs can often add to application functionality and developer efficiency, and there are certainly many cases where the use of a procedural language such as the MySQL stored program language can do things that a non procedural language like SQL cannot. There are also a number of reasons why a MySQL stored program approach may offer performance improvements over a traditional SQL approach • It provides a procedural approach (SQL is a declarative, non procedural language) • It reduces client-server traffic • It allows us to divide and conquer complex statements But… 23 © 2012 Pythian
  • 23. Mitigating risk of failure (understand) Understanding Function Triggers difference One graph tells more then 1,000 words: 24 © 2012 Pythian
  • 24. Mitigating risk of failure (understand) Understanding Function Triggers difference IF and CASE Statements When constructing IF and CASE statements, try to minimize the number of comparisons that these statements are likely to make by testing for the most likely scenarios first. For instance, in the code in the next slide, the first statement maintains counts of various percentages. Assuming that the input data is evenly distributed, the first IF condition (percentage>95) will match about once in every 20 executions. On the other hand, the final condition will match in three out of four executions. So this means that for 75% of the cases, all four comparisons will need to be evaluated. 25 © 2012 Pythian
  • 25. Mitigating risk of failure (understand) Understanding Function Triggers difference Non Optimized IF (percentage>95) THEN SET Above95=Above95+1; ELSEIF (percentage >=90) THEN SET Range90to95=Range90to95+1; ELSEIF (percentage >=75) THEN SET Range75to89=Range75to89+1; ELSE SET LessThan75=LessThan75+1; END IF; Optimized IF (percentage<75) THEN SET LessThan75=LessThan75+1; ELSEIF (percentage >=75 AND percentage<90) THEN SET Range75to89=Range75to89+1; ELSEIF (percentage >=90 and percentage <=95) THEN SET Range90to95=Range90to95+1; ELSE SET Above95=Above95+1; END IF; 26 © 2012 Pythian
  • 26. Mitigating risk of failure (understand) Understanding Function Triggers difference Looks simple and the effect is relevant: 27 © 2012 Pythian
  • 27. Mitigating risk of failure (understand) Understanding Function Triggers difference Using Recursion A recursive routine is one that invokes itself. Recursive routines often offer elegant solutions to complex programming problems, but they also tend to consume large amounts of memory. They are also likely to be less efficient and less scalable than implementations based on iterative execution. 28 © 2012 Pythian
  • 28. Mitigating risk of failure (understand) Understanding Function Triggers difference Recursive Not Recursive CREATE PROCEDURE nonrec_fib(n INT,OUT CREATE PROCEDURE rec_fib(n INT,OUT out_fib out_fib INT) INT) BEGIN BEGIN DECLARE m INT default 0; DECLARE n_1 INT; DECLARE k INT DEFAULT 1; DECLARE n_2 INT; DECLARE i INT; DECLARE tmp INT; IF (n=0) THEN SET out_fib=0; SET m=0; ELSEIF (n=1) then SET k=1; SET out_fib=1; SET i=1; ELSE CALL rec_fib(n-1,n_1); WHILE (i<=n) DO CALL rec_fib(n-2,n_2); SET tmp=m+k; SET out_fib=(n_1 + n_2); SET m=k; END IF; SET k=tmp; END SET i=i+1; END WHILE; SET out_fib=m; END 29 © 2012 Pythian
  • 29. Mitigating risk of failure (understand) Understanding Function Triggers difference The difference is quite impressive and evident 30 © 2012 Pythian
  • 30. Mitigating risk of failure (understand) Understanding Function Triggers difference When you need to retrieve only a single row from a SELECT statement, using the INTO clause is far easier than declaring, opening, fetching from, and closing a cursor. But does the INTO clause generate some additional work for MySQL or could the INTO clause be more efficient than a cursor? 31 © 2012 Pythian
  • 31. Mitigating risk of failure (understand) Understanding Function Triggers difference Trigger Overhead Every database trigger is associated with a specific DML operation (INSERT, UPDATE, or DELETE) on a specific table the trigger code will execute whenever that DML operation occurs on that table. Furthermore, all MySQL 5.x triggers are of the FOR EACH ROW type, which means that the trigger code will execute once for each row affected by the DML operation. Given that a single DML operation might potentially affect thousands of rows, should we be concerned that our triggers might have a negative effect on DML performance? Absolutely yes! 32 © 2012 Pythian
  • 32. Mitigating risk of failure (understand) Understanding Function Triggers difference When using Trigger be ALWAYS sure to have the right indexes. 33 © 2012 Pythian
  • 33. Mitigating risk of failure (match) Understanding DDL differences Identify conversion between Oracle and MySQL for MySQL Data Type Oracle Data Type • Tables • Views INT NUMBER(10, 0) • Procedures • Functions INTEGER NUMBER(10, 0) • Packages • Triggers LONGBLOB BLOB, RAW • Sequences, synonyms etc. LONGTEXT CLOB, RAW I.e. data types: MEDIUMBLOB BLOB, RAW MEDIUMINT NUMBER(7, 0) MySQL Data Type Oracle Data Type MEDIUMTEXT CLOB, RAW BIGINT NUMBER(19, 0) NUMERIC NUMBER BIT RAW REAL FLOAT (24) BLOB BLOB, RAW SET VARCHAR2 CHAR CHAR SMALLINT NUMBER(5, 0) DATE DATE TEXT VARCHAR2, CLOB DATETIME DATE TIME DATE DECIMAL FLOAT (24) TIMESTAMP DATE DOUBLE FLOAT (24) TINYBLOB RAW DOUBLE PRECISION FLOAT (24) TINYINT NUMBER(3, 0) TINYTEXT VARCHAR2 ENUM VARCHAR2 VARCHAR VARCHAR2, CLOB FLOAT FLOAT YEAR NUMBER 34 © 2012 Pythian
  • 34. Mitigating risk of failure (match) Understanding DML differences 1.Join syntax 2.SQL_mode 3.Data comparison using collation 4.other common differences • SQL macro differences • NVL() --> IFNULL() • ROWNUM --> LIMIT • SEQ.CURRVAL --> LAST_INSERT_ID() • SEQ.NEXTVAL --> NULL • NO DUAL necessary (SELECT NOW()) • NO DECODE() --> IF() CASE() • JOIN (+) Syntax --> INNER|OUTER LEFT|RIGHT • No Hierarchical (connect to prior) 35 © 2012 Pythian
  • 35. Mitigating risk of failure (convert) Data export & Index redesign • Re-organize the schema/table not just convert data types • Storage engines • Index full redesign • Data organization • Sharding • Partition • Logic rewrite • Inside MySQL • Move to application 36 © 2012 Pythian
  • 36. Mitigating risk of failure (POC) Realize a Proof of Concept Don’t work Alone Involve Oracle experienced DBA Involve MySQL experience DBA Involve the developers Use real data Use real traffic Take one source for each type; start with the easy one Go Back to the analysis phase if you have to 37 © 2012 Pythian
  • 37. What should my migration doc contains? General document • Description of the main differences between platforms • Description of the work around found • Explanation of what to do to avoid most common issues • Code write instructions • Common function mapping • List of the blocking issue(s) • List and explanation of what cannot be migrated and why 38 © 2012 Pythian
  • 38. What should my migration doc contains? Per schema document • Overview of the effort for the migration Schema Name: Test Objects Number Time(min) hrs Cost(0,50 cent/min) Table 200 320 5,3 2,65 Views 50 5 0,08 0,04 Procedure 500 5000 83,33 41,67 Function 12 200 3,33 1,67 Trigger 200 2500 41,67 20,83 Package 3 5 0,08 0,04 Total Time 8030 133,80 66,90 39 © 2012 Pythian
  • 39. What should my migration doc contains? Per schema document •Effort per table like: Schema Name: Test Table City Rows 2000 Estimated min 10 Attribute Data type source dim source Data type dest dim dest Name VARCHAR2 50 varchar 50 lat FLOAT FLOAT long FLOAT FLOAT population Number 10,0 INT 10 SqKm Number 7,0 MEDIUMINT Country CHAR 3 CHAR 3 40 © 2012 Pythian
  • 40. What should my migration doc contains? Trigger section • Effort per schema Schema Name: Test Events Before Time(min) After Time(min) Insert 50 600 20 300 Update 50 600 20 300 Delete 50 600 10 100 Total 150 50 Packages 3 3 Total Time 1800 700 • Effort per Table: Schema Name: Test Table Total 24 action time Trigger name Source Insert* Update* Delete* Trigger name dest Before Ins_change_ID 20 Ins_actions Ins_change_ISO 10 upd_population 15 upd_population After del_died_male 10 del_died_male avr_pop_calculation 15 avr_pop_calculation Total 30 30 10 *time in minutes for conversion 41 © 2012 Pythian
  • 41. What should my migration doc contains? Procedure - function section • Effort per schema Schema Name: Test Package Number Time(min) Cost(0,50 cent/min) Pack1 112 1200 Pack2 200 2000 Pack3 200 2000 Total 521 Packages 3 Total Time 5200 • Effort per Table: Schema Name: Test Table Total 3 Procedure name Code rows Impedance** Time* Packge comments Proc_1 200 4 480 Pckg1 Complex Error handling Func_1 50 0 120 Pckg2 No problem Proc_2 300 10 - Pckg1 Use of connect by prior Total 600 *time in minutes for conversion ** The lower the better 10 means no portable 42 © 2012 Pythian
  • 42. What should my migration doc contains? Document from the Proof of Concept per source type • Expected results • Real value from test • Issues found • Work around identify • Time/Effort per schema • Breakdown per object (Table, View, Trigger, SP) • Redefine expectations • Review efforts and costs • Be ready to drop something from the migration list 43 © 2012 Pythian
  • 43. Should I do all this manually? No! there are tools on the market but: •Choose your product carefully ! •Better a simple one than something too complex •Always double check before applying •Nothing will replace human/professional knowledge/experience 44 © 2012 Pythian
  • 44. Thank you and Q&A To contact us… [email protected] 1-877-PYTHIAN To follow us… http://www.pythian.com/news/ http://www.facebook.com/pages/The-Pythian-Group/163902527671 @pythian @pythianjobs http://www.linkedin.com/company/pythian 47 © 2012 Pythian