Udah dicoba . itu cara saya di no 2, maksud saya PLSQL adalah dengan menggunakan cursor di PL . tetapi performansi kecepatannya sangat jauh dibanding cara ke 3 ( padahal di explain plan, index sudah masuk).
--- In [email protected], "Yoel" <[EMAIL PROTECTED]> wrote: > Hi Pak Priyambodo, > > Mau kasih usul nih, > kenapa Anda tidak menggunakan cursor saja di Procedure Anda. > Cursor x as > select * from a where condition(tidak pake rownum); > > lalu > for r in x loop > insert b (column1,column2) > values(r.column1,r.column2); > vcount = vcount + 1; > > if mod(vcount,10000) = 0 then > commit; > end; > > end loop; > commit; > > Sorry kalo syntaxnya mungkin ada yg salah, tetapi logicnya > setiap 10000 record dia akan commit. di akhir loop Anda commit lagi > ini untuk menjaga jika hasil akhir mod(vcount,10000) <> 0. > > Thanks > Yoel > > > --- In [email protected], "tpriyambodo" <[EMAIL PROTECTED]> > wrote: > > Dear all > > > > Saya punya punya 2 tabel, misal A dan B yang mempunyai struktur yang > > sama. Saya ingin memindahkan data dari A ke B ( tidak semua data > di A > > dan B tabel yang sudah ada isinya ). > > > > Jika data saya kecil kan kita tinggal pake perintah > > insert into B ( select * from A where KONDISI ) > > tetapi masalahnya data saya besar ( misal 1 juta baris) sehingga > tidak > > mungkin menggunakan perintah diatas karena RBS ya tidak cukup. > > > > Hal yang mungkin saya lakukan sbb > > 1. memperbesar Rollback segment -> akan mempengaruhi performansi > > oracle, karena RBS yang ada sekarang sudah sangat besar, jd tidak > saya > > lakukan > > 2. melakukan insert data 1 persatu melalui PL SQL -> sangat > memakan waktu > > 3. menggunakan ROWNUM -> pilihan saya selama ini. > > jadi dengan PL/SQL saya melakukan hal seperti ini > > > > v_count:=1; > > for v_count in 1..10 loop > > insert into B (select * from A a where KONDISI and > rownum<100000 ); > > commit; > > delete from A where KONDISI and rownum<100000; > > commit; > > end loop; > > dan hal ini sangat menghemat waktu. Data juga valid yaitu baris yang > > saya pindahkan adalah baris yang kemudian saya hapus. > > Hingga pada suatu saat ( setelah 5 bulan berjalan ) mulai akhir > akhir > > ini terjadi kesalahan. > > Yaitu data yang saya pindahkan tidak sama dengan data yang saya > > delete. shg pada tabel B terdapat data yang hilang dan data yang > dobel. > > Perlu diketahui bahwa PL SQL tidak berubah sama sekali, satu satu > nya > > perubahan yang saya lakukan adalah mengubah tabel B ( tujuan > > pemindahan ) menjadi PARTITION TABLE. tabel A tetap. > > > > > > Pertanyaan saya > > 1. apakah reliabel saya melakukan cara no 3 , yaitu urutan baris > data > > dengan berdasar pada ROWNUM ? > > 2. Apakah ada parameter pada ORACLE sehingga dulu saya dapat > melakukan > > cara no 3 dengan benar, tetapi akhir akhir ini menjadi salah ? > > 3. dengan tujuan saya seperti diatas , adakah cara cara untuk > > memindahkan data yang lebih baik ? > > > > Terimakasih sebelumnya > > > > Teguh -- -----------I.N.D.O - O.R.A.C.L.E--------------- Keluar: [EMAIL PROTECTED] Website: http://indo-oracle.blogspot.com ----------------------------------------------- Bergabung dengan Indonesia Thin Client User Groups, Terminal Server, Citrix, New Moon Caneveral, di: http://indo-thin.vze.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/indo-oracle/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

