Migrasi data dari MySQL ke Oracle dengan Perl
Pada kali ini kita coba buat script migrasi dengan perl dari database mysql ke oracle, namun ada beberapa langkah awal yang harus diperhatikan, terutama masalah konektivitas perl ke dua database tersebut. Dengan menggunakan perl ini maka kita tidak perlu lagi men-dump table mysql ke file text dan kemudian diload ke oracle via sqlloader atau melalui sqlplus.
Mulai oracle 10.2 oracle sudah menyertakan perl 5 secara default, bisa dicek pada $ORACLE_HOME/perl, malah konektor ke database oracle sudah tersedia.
Jika kita melihat standard OS perl yang disertakan dimana lokasi perl interpreternya sendiri ada di /usr/bin/perl, ada sedikit masalah sewaktu kita akan menginstall konektor-konektor database.
untuk itu hal-hal ini perlu dilakukan:
- install perl dari source
- environment variable PERL5LIB dan PATH set ke lokasi perl yg barusan diinstall
- install DBI
- install DBD::Oracle
- install DBD::mysql
contoh script:
#!/home/oracle/localperl/bin/perl
use DBI;
# MYSQL CONFIG VARIABLES
$host = “localhost”;
$database = “mydb”;
$user = “root”;
$pw = “passwd”;
# PERL CONNECT()
#$connect = mysql->connect($host, $database, $user, $pw);
$dbm = DBI->connect(”dbi:mysql:$database:$host”, $user, $pw);
$dbo = DBI->connect(”dbi:Oracle:”,”mydb”,”mydb”, { ora_session_mode =>
2 })||die “%ERROR opening DB: $DBI::errstr”;
$lim1=0;
for($i = 2000; $i < 29827026; ) {
$lim2=$i;
$str_src = qq{select timestamp,…
from audit_table order by timestamp limit $lim1,$lim2};
$out1 = $dbm->prepare($str_src);
$out1->execute;
$lim1=$lim2+1;
while(my($timestamp,…)=$out1->fetchrow_array) {
$ins_ora1 = qq{insert into mydb.AUDIT_TABLE(TIMESTAMP…)
VALUES(to_date(’$timestamp’,'yyyy-mm-dd hh24:mi:ss’),….)};
$out2 = $dbo->prepare($ins_ora1);
$out2->execute;
}
$ins_ora4 = “commit”;
$out3 = $dbo->prepare($ins_ora4);
$out3->execute;
$i=$i+2000;
}
undef $dbm;
undef $dbo;
set environment variable sebelum mengeksekusi script tsb:
export PERL5LIB=/home/oracle/localperl/lib:/home/oracle/localperl/lib/site_perl/5.10.0/i86pc-solaris:/home/oracle/localperl/lib/site_perl/5.10.0
export PATH=/home/oracle/localperl/bin:$PATH
export LD_LIBRARY_PATH=/apps/oracle/product/10.2/lib32:/apps/oracle/product/10.2/lib:/opt/mysql/mysql32/lib:/opt/mysql/mysql/lib
export ORACLE_HOME=ORACLE_HOME=/apps/oracle/product/10.2
salam,
oracle@dbs247.com
mysql@dbs247.com
No comments
Jump to comment form | comments rss [?] | trackback uri [?]