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/
 


Kirim email ke