单位一台服务器跑oracle数据库,我用瑞星防火墙做了条ip规则,设置192.168.131.2-20不能访问数据库服务器的1521端口,可是我在上述还是能telnet通服务器的端口.那个兄弟能告诉.怎么样设置啊?有没有办法限制一个ip段访问数据库.oracle里面不知道能不能设置?谁能帮帮我.谢谢.

解决方案 »

  1.   

    可以通过编辑$ORACLE_HOME/network/admin/protocol.ora文件来使某些host可以通过 SQL*NET来访问oracle server,而另一些host不能通过SQL*NET来访问oracle server(SQL*NET 2.1及以上版本)。
        例如:protocol.ora
    tcp.validnode_checking=yes
    tcp.invited_nodes=(192.168.1.100)
        这样只有192.168.1.100才能通过SQL*NET访问oracle server,其他host通过SQL*NET对oracle server的访问都会被拒绝。
        又例如:protocol.ora
    tcp.validnode_checking=yes
    tcp.excluded_nodes=(192.168.1.100)
        这样192.168.1.100通过SQL*NET对oracle server的访问就会被拒绝,而其他host则可以访问oracle server。
      

  2.   

    更正一下,9i是在sqlnet.ora中设置,8i是用protocol.ora。
      

  3.   

    tcp.invited_nodes,验证可以工作,不过不支持IP段,只能一个一个设置IP地址,烦
    还可以用登陆触发器
    create or replace trigger logon_test after logon on database
    declare
    n_count number ;
    begin
    select count(*) into n_count from (select sys_context('userenv','ip_address') ip from dual)
    where ip like '192.168.1.%' ;
    if n_count=0 then
    raise_application_error(-20001,'error ip');
    end if;
    end;

    注意: 数据库触发器对DBA权限的人是不处理的