mas defri,

kalau commit per setiap kali loop, maka akan muncul wait event klasik
oracle yaitu "log file sync" yg secara design memang itu salah satu yg
harus dihindari...karena database oracle beraliran "write ahead log"
:-)

kecuali kalau memakai asynchronous commit (ada 2 cara:
commit_write='BATCH,NOWAIT' atau _WAIT_FOR_SYNC=FALSE) yg notabene
masih dipertanyakan data konsistensi dan integritynya pada saat high
transaksi dan tiba2 mesin crash (apes2nya database ndak bisa
direcover).

kalau menurut saya lebih spesifk n kalo loop then commit, perlu
itung2an juga dgn parameter log_buffer.

jika n*avg row length > (_log_io_size=1/3*log_buffer), perkiraan akan
muncul 3 wait event:
- log file sync
- log buffer space
- log file parallel write


2009/4/15 defri afrian <[email protected]>:
> Dear Yulius,
>
> Ada yang Saya ingin tanyakan mengenai meminimalkan waktu locking seprti tips 
> Bapak sebelumnya.
>
>
> "usahakan gunakan perintah COMMIT setiap "n" kali LOOP.
>
> Jangan setelah LOOP selesai.
>
> Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP"
>
> Pada pernyataan "usahakan gunakan perintah COMMIT setiap "n" kali LOOP"
> secara teknis ini implementasinya seperti apa ?
> Karena Saya melihat dari pernyataan
> "Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP"
>
> Regards,
> Defry
>
> --- On Tue, 4/14/09, Yulius Wibowo <[email protected]> wrote:
> From: Yulius Wibowo <[email protected]>
> Subject: [indo-oracle] Re: Cara ngatasin Locking
> To: [email protected]
> Date: Tuesday, April 14, 2009, 5:54 PM
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>      Mas Freddie,
>
>
>
> Menurut saya, masalah locking adalah masalah biasa
>
> pada database yg table2-nya diakses(update, delete)
>
> secara bersamaan.
>
>
>
> Ada beberapa hal yg bisa dilakukan,a. l:
>
> 1. Meminimalkan waktu locking.
>
> Contoh :
>
> a. Di dalam sebuah procedure (PL/SQL) misalnya,
>
> dilakukan update record dalam jumlah banyak
>
> dengan menggunakan iterasi (LOOP).
>
> Untuk meminimalkan waktu locking,
>
> usahakan gunakan perintah COMMIT setiap "n" kali LOOP.
>
> Jangan setelah LOOP selesai.
>
> Tetapi juga jangan menggunakan perintah COMMIT setiap kali LOOP,
>
> karena akan mengganggu performance database.
>
>
>
> b. Jika dimungkinkan, gunakan "rowid" pada where clause ketika update atau 
> delete.
>
>
>
> 2. Hindari locking yg tidak diperlukan.
>
> Contoh:
>
> Jika tidak diperlukan jangan menjalankan perintah:
>
> SELECT ... FROM ... FOR UPDATE;
>
> LOCK TABLE ...;
>
> CREATE INDEX ...;--pada jam sibuk
>
> ALTER INDEX ...;--pada jam sibuk
>
> DROP INDEX ...;--pada jam sibuk
>
> ...
>
>
>
> 3. Lock table/row dengan menggunakan "timeout"
>
> sebelum menjalankan UPDATE didalam procedure
>
> untuk menghindari "penungguan" yg tidak diinginkan
>
> ketika menjalankan procedure tsb.
>
> Contoh:
>
> Untuk cursor for loop gunakan SELECT ... FOR UPDATE WAIT n <detik>;
>
>
>
> 4. Apalagi ya??? (kok malah nanya...he.. he..he..)
>
>
>
> CMIIW,
>
> bw
>
>
>
> --- In indo-oracle@ yahoogroups. com, Freddie Tanuwijaya <synar_0287@ ...> 
> wrote:
>
>>
>
>>
>
>> loh koq malah saya balik ditanya hahahaha, saya pengen tau aja gmna si 
>> atasin locking
>
>> --- On Tue, 4/14/09, Ujang Jaenudin <ujang.jaenudin@ ...> wrote:
>
>> From: Ujang Jaenudin <ujang.jaenudin@ ...>
>
>> Subject: Re: [indo-oracle] Cara ngatasin Locking
>
>> To: indo-oracle@ yahoogroups. com
>
>> Date: Tuesday, April 14, 2009, 2:45 AM
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>       coba aja ini, kalau bisa nerjemahin outputnya sendiri....saya acungkan
>
>>
>
>> jempol 12 :-)
>
>>
>
>>
>
>>
>
>> create table t ( x int );
>
>>
>
>> insert into t values(1);
>
>>
>
>> select sid, type, id1, id2 ,lmode,request from v$lock where sid =
>
>>
>
>> (select sid from v$mystat  where rownum = 1);
>
>>
>
>> set serveroutput on
>
>>
>
>> exec dbms_output. put_line( dbms_transaction. local_transactio n_id(true) );
>
>>
>
>> select sid, type, id1, id2,lmode,request from v$lock where sid =
>
>>
>
>> (select sid from v$mystat  where rownum = 1);
>
>>
>
>> update t set x = 0 where x=1;
>
>>
>
>> select sid, type, id1, id2,lmode,request from v$lock where sid =
>
>>
>
>> (select sid from v$mystat  where rownum = 1);
>
>>
>
>> rollback;
>
>>
>
>> select x from t where x=1 for update;
>
>>
>
>> select sid, type, id1, id2,lmode,request from v$lock where sid =
>
>>
>
>> (select sid from v$mystat  where rownum = 1);
>
>>
>
>>
>
>>
>
>> 2009/4/13 Freddie Tanuwijaya <synar_0287@ yahoo. com>:
>
>>
>
>> >
>
>>
>
>> > saya blom cek ke v$lock tapi yg pasti query pl/sqlnya tidak ada select for 
>> > update yg ada update dmna where nya menggunakan subquery.
>
>>
>
>> > Mohon bantuannya menerangkan kedua macam lock ini, saya masi awam di 
>> > admin. Thx
>
>>
>
>> > --- On Mon, 4/13/09, Ujang Jaenudin <ujang.jaenudin@ gmail.com> wrote:
>
>>
>
>> > From: Ujang Jaenudin <ujang.jaenudin@ gmail.com>
>
>>
>
>> > Subject: Re: [indo-oracle] Cara ngatasin Locking
>
>>
>
>> > To: indo-oracle@ yahoogroups. com
>
>>
>
>> > Date: Monday, April 13, 2009, 9:17 AM
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >      dari v$lock typenya apa kah?
>
>>
>
>> >
>
>>
>
>> > TM or TX?
>
>>
>
>> >
>
>>
>
>> > kalau TM....apakah ada select for update?
>
>>
>
>> >
>
>>
>
>> > kalau TX apakah menggunakan connection pooling?
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> > On Sun, Apr 12, 2009 at 8:41 PM, Freddie Tanuwijaya
>
>>
>
>> >
>
>>
>
>> > <synar_0287@ yahoo. com> wrote:
>
>>
>
>> >
>
>>
>
>> >> Saudara-saudara saya mempunyai masalah, saya mempunya 1 transaksi n 
>> >> biasanya itu membutuhkan waktu 1 menit untuk proses sehingga terjadi 
>> >> locking ketika ada transaksi yg lain, saya sudah bersusaha untuk 
>> >> mengurangi waktu prosesnya tapi hasilnya 1 menit sudah maksimal, apa ada 
>> >> cara lain untuk mengatasi kasus locking ini?? Thx
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >> [Non-text portions of this message have been removed]
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >> ------------ --------- --------- ------
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >> --
>
>>
>
>> >
>
>>
>
>> >> -----------I. N.D.O - O.R.A.C.L.E- --------- -----
>
>>
>
>> >
>
>>
>
>> >> Keluar: indo-oracle- unsubscribe@ yahoogroups. com
>
>>
>
>> >
>
>>
>
>> >> Website: http://indooracle. wordpress. com
>
>>
>
>> >
>
>>
>
>> >> http://www.facebook .com/group. php?gid=51973053 515
>
>>
>
>> >
>
>>
>
>> >> ------------ --------- --------- --------- --------
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >> Bergabung dengan Indonesia Thin Client User Groups,
>
>>
>
>> >
>
>>
>
>> >> Terminal Server, Citrix, New Moon Caneveral, di:
>
>>
>
>> >
>
>>
>
>> >> http://indo- thin.blogspot. comYahoo! Groups Links
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >>
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> > --
>
>>
>
>> >
>
>>
>
>> > thanks and regards
>
>>
>
>> >
>
>>
>
>> > ujang | oracle dba | mysql dba
>
>>
>
>> >
>
>>
>
>> > http://ora62. wordpress. com
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> > [Non-text portions of this message have been removed]
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> > ------------ --------- --------- ------
>
>>
>
>> >
>
>>
>
>> > --
>
>>
>
>> > -----------I. N.D.O - O.R.A.C.L.E- --------- -----
>
>>
>
>> > Keluar: indo-oracle- unsubscribe@ yahoogroups. com
>
>>
>
>> > Website: http://indooracle. wordpress. com
>
>>
>
>> > http://www.facebook .com/group. php?gid=51973053 515
>
>>
>
>> > ------------ --------- --------- --------- --------
>
>>
>
>> >
>
>>
>
>> > Bergabung dengan Indonesia Thin Client User Groups,
>
>>
>
>> > Terminal Server, Citrix, New Moon Caneveral, di:
>
>>
>
>> > http://indo- thin.blogspot. comYahoo! Groups Links
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>> >
>
>>
>
>>
>
>>
>
>> --
>
>>
>
>> thanks and regards
>
>>
>
>> ujang | oracle dba | mysql dba
>
>>
>
>> http://ora62. wordpress. com
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>>
>
>> [Non-text portions of this message have been removed]
>
>>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
>
>
> ------------------------------------
>
> --
> -----------I.N.D.O - O.R.A.C.L.E---------------
> Keluar: [email protected]
> Website: http://indooracle.wordpress.com
> http://www.facebook.com/group.php?gid=51973053515
> -----------------------------------------------
>
> Bergabung dengan Indonesia Thin Client User Groups,
> Terminal Server, Citrix, New Moon Caneveral, di:
> http://indo-thin.blogspot.comYahoo! Groups Links
>
>
>
>



-- 
thanks and regards
ujang | oracle dba | mysql dba
http://ora62.wordpress.com

Kirim email ke