Masalahnya,
mengapa triggernya dibuat after logon? Kalau emang
tidak diijinkan connect, filter aja pas BEFORE LOGON,
kalo kondisi sesuai tinggal RAISE error, otomatis pas
logon pasti gagal.

Kelemahan cara seperti ini adalah, user tinggal
mengganti nama executable program, misalkan Toad.exe
diganti menjadi Form.exe, pasti lolos kan?

Masalah lain di program Anda dibawah adalah:
- trigger After Logon akan dijalankan oleh semua user,
kalau dilihat dari semantik programnya, berarti setiap
user akan bunuh diri. Ini gak mungkin terjadi, soalnya
satu session tidak mungkin meng-kill dirinya sendiri.
- tidak setiap user bisa menjalankan alter system kill
session

Kebetulan Anda menghandle semua exception yg terjadi
(pake WHEN OTHERS), jadi sintax yg dieksekusi walaupun
gagal tidak ketahuan. Tanpa When Others, dipastikan
tidak ada user yg bisa login :)

regards,
tomi

--- Ujang Jaenudin <[EMAIL PROTECTED]>
wrote:

> dear all,
> 
> saya coba buat trigger after logon on database, dan
> procedure untuk kill 
> it's session kalo dia pake toad,sqlplus atau third
> party lainnya except 
> oracle form/report. permasalahannya kenapa trigger
> after logon on database 
> tidak ter-fire ya.....
> 
> login as monthend:
> 
> CREATE OR REPLACE PROCEDURE x_db_start IS
>    cid    INTEGER;
>    ret    INTEGER;
>    sqltxt VARCHAR2(150);
>    v_prg VARCHAR2(150);
>    v_sid number;
>    v_serial number;
> BEGIN
> --alter system kill session p_sid,p_serial;
>   select f_sid, f_serial, f_program into v_sid,
> v_serial, v_prg
>   from x_logon_tbl where rownum<=1;
>   if v_prg is not null then
>     cid := DBMS_SQL.OPEN_CURSOR;
>  sqltxt := 'alter system kill session
> '||''''||v_sid||','||v_serial||'''';
>  DBMS_SQL.PARSE(cid, sqltxt, dbms_sql.v7);
>  DBMS_OUTPUT.PUT_LINE(sqltxt);
>  ret := DBMS_SQL.EXECUTE(cid);
>  DBMS_SQL.CLOSE_CURSOR(cid);
>  DBMS_OUTPUT.PUT_LINE('Sukses');
>   end if;
> EXCEPTION
>  WHEN OTHERS THEN
>    --DBMS_SQL.CLOSE_CURSOR(cid);
>    DBMS_OUTPUT.PUT_LINE('Gagal : '||SQLERRM );
> END;
> /
> 
> 
> login as sys:
> 
> create or replace trigger trg_logon_db
>   after logon on database
> begin
>   delete from monthend.x_logon_tbl;
>   insert into monthend.x_logon_tbl(f_sid, f_serial,
> f_program)
>   select sid,serial#,module
>   from v$session where audsid =
> sys_context('USERENV', 'SESSIONID');
>   commit;
>   monthend.x_db_start;
> end;
> /
> 
> 
> regards


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.lizt.org (NEW)
-----------------------------------------------

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