Oracle数据库网络与安全之FAQ汇集

网络整理 - 07-26
[Q]如何限定特定IP访问数据库

  [A]可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqlnet.ora:

  增加如下内容:

tcp.validnode_checking=yes
#允许访问的ip
tcp.inited_nodes=(ip1,ip2,……)
#不允许访问的ip
tcp.excluded_nodes=(ip1,ip2,……)

  [Q]如何穿过防火墙连接数据库

  [A]这个问题只会在WIN平台出现,UNIX平台会自动解决。

  解决方法:

  在服务器端的SQLNET.ORA应类似

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
TRACE_LEVEL_CLIENT = 16
注册表的HOME0加[HKEY_LOCAL_MACHINE]
USE_SHARED_SOCKET=TRUE

  [Q]如何利用hostname方式连接数据库

  host name方式只支持tcp/ip协议的小局域网

  修改listener.ora中的如下信息

(SID_DESC =
(GLOBAL_DBNAME = ur_hostname) --你的机器名
(ORACLE_HOME = E:oracleora92) --oracle home
(SID_NAME = orcl) --sid name
)

  然后在客户端

  的sqlnet.ora中,确保有

  NAMES.DIRECTORY_PATH= (HOSTNAME)

  你就可以利用数据库服务器的名称访问数据库了

  [Q]dbms_repcat_admin能带来什么安全隐患

  [A]以下情况可能获得该包的执行权限:

  1、在sys下

grant execute on dbms_repcat_admin to public[|user_name]

  2、用户拥有execute any procedure特权(仅限于9i以下,9i必须显示授权)

  如果用户通过执行如下语句:

exec sys.dbms_repcat_admin.grant_admin_any_schema('user_name');

  该用户将获得极大的系统特权

  可以从user_sys_privs中获得详细信息