Oracle里面,有什么方法可以做到安全限制。比如说,不允许PL/DEV,OBJECTBROWSE这样的数据库工具来连接。

解决方案 »

  1.   

    做login触发器,在触发器中判断客户端是什么东东。
      

  2.   

    自己查了一点资料。可以通过,sys_context(‘USERENV’,’MODULE’) 得到对方的程序的名称。但是,怎么断掉对方的连接呢?发出一个错误吗?PS:
    不好意思,我这里没有Oracle环境,所以没有办法测试,只有不断的问了。
      

  3.   

    这个,select machine,program from v$session;好像也可以得到。
      

  4.   

    在login触发器中,raise_appliation_error即可。它就进不来啦。呵呵
      

  5.   

    恩,谢谢楼上的。看到的别人的一个例子。TRIGGER TI_LOG_CREATIONS
    BEFORE CREATE OR ALTER OR DROP ON DATABASE
    -- ========================================================
    -- 程式類別 : TRIGGER 
    -- 程式名稱 : T_LOG_CREATIONS 
    -- 程式功能 : 防止用戶更改表結構導致程序無效 
    -- 原設計者 : 程時欽 設立日期 : 2005/06/10 
    -- ------------------異動記錄明細----------------- 
    -- 異動日期 異 動 者 異 動 原 因 
    -- ========================================================
    DECLARE BEGIN 
    IF sys.login_user<>'SYS' AND sys.dictionary_obj_type='TABLE' 
    AND sys_context('userenv','ip_address') NOT IN('172.24.17.40') THEN
    RAISE_APPLICATION_ERROR(-20008,'小樣,你沒有創建,更改,刪除'||sys.dictionary_obj_name||'的權限,請聯系DBA!');
    END IF;
    END TI_LOG_CREATIONS;