Flytning af data, fra MySQL/Oracle XE
Udgangspunktet for denne artikel er at flytte eksisterende data fra en MySQL database til Oracle XE. I denne serie af artikler vil jeg flytte oraclekonsulent.dk fra at være en blog der kører på en MySQL til at kunne fungerere på min Oracle XE installation, lokalt.
Start allerførst med at få din Oracle XE op og køre og ligeledes din MySQL lokalt, når dette er gjort har jeg benyttet et produkt fra Intelligent Converters, MySQL til Oracle.
1. Produktet kan downloades her i en demo udgave.
Som ved andre blog posts herfra; hvis du har flere Oracle homes kan det være nødvendigt at sætte miljø variablen TNS_ADMIN til at benytte den korrekte TNSNAMES.ora fil.
Mysql til Oracle benytter sig af brugernavn/password samt service for at forbinde sig til Oracle databasen - det er præsis som vi i forvejen kender det, samt ligeledes brugernavn og password til den Lokale MySQL database.
Til formålet starter jeg med via Oracle XE user interfacet at lave mig en lokal Oracle bruger; orablog/orablog. Log på din lokale XE http://127.0.0.1:8080/apex/f?p=4500:1000:3237819952706031:::::
Vælg her Administration, Database Users, Create
Husk at sætte "hak" ved rollerne CONNECT samt RESOURCE der bla. giver os CREATE TABLE, CREATE SESSION m.v.
Herefter starter vi MySQL til Oracle op
Vælger brugernavn samt password til MySQL databasen. Da vi arbejder lokalt forbliver vi som lokale men man kunne også arbejde mod en remote MySQL - ved remote skal host samt post ligeledes defineres.
Herfter vælger vi vores nyoprettede bruger orablog som forbindelse til Oracle XE samt XE servicen;
Så skal der vælges en MySQL database som source. Min til oraclekonsulent.dk, hedder orablog
Der er par optioner hvis f.eks denne konvetering sker flere gange hvor man kan vælge at overskrive, merge eller skippe oprettelse af tabeller hvis disse allerede eksisterer.
Næste er at udvælge de tabeller man ønsker skal overføres mellem de 2 databaser;
Jeg har valgt alle tabeller - og slutteligt starter overførslen;
Lad os vende tilbage til vores XE interface og kigge lidt på vores bruger orablog; Men denne gang logger vi på http://127.0.0.1:8080/apex/f?p=4500:1000:3237819952706031::::: som orablog/orablog.
Vælg Object browser - og i kan se, data der før lå i MySQL ligger nu i min Oracle XE - jeg har lige trykket på min tabel pro_posts hvor i som start ser defineringen af denne; Herfra kan der undersøges/ændres yderligere som der er behov for. Omkring constraints; Constraints oprettes i databasen navngivet som SYS_ - til orientering. Men ellers oprettes primary constraints fint - forreign keys - skal oprettes manuelt - efterfølgende.
Jeg har ikke fået testet om version 5 af MySQL rent faktisk enforcer forreign keys - men op til version 5 kunne du godt oprette forreign keys dog uden synderlig effekt. Der kan være et udestående her når man efterfølgende tuner sin applikation efter end konvetering som i skal være opmærksome på.
Hvad er det så med constraints og Oracle som man taler om ? For mange PHP eller andet programmører der arbejder mod MySQL og MSSQL kender jeg mange der ikke har checks i databasen men der imod i koden.
Læs næste blog post under "Oracle Datatabase - Datatyper". Hvor jeg vil beskrive b.la constraints - typer og virkemåder.
Det var faktisk det; Vi har nu flyttet data fra en lokal MySQL database over i en Oracle Database XE. Det har tidsmæssigt med oprettelse af bruger etc. taget mig under 10 minutter.
Konklusion
Det var en meget smertefri operation af få data over i XE databasen. Jeg har før benyttet mig at Intelligent Converters. I tidligere versioner dog var der nogen problemmer med constraints og blogs. Men set i tid i forhold til at ekspoterer til scripts og manuelt oprette/editerer m.v er dette en hurtig effektiv måde at få data og strukturer over.
Yderligere informationer
Intelligent converters findes i mange former mod mange databaser og kan findes her.
Oracle Datatabase - Datatyper