sql26



[B]第五部分、ORACLE网络与安全[/B] 

[Q]如何限定特定IP访问数据库 
[A]可以利用登录触发器或者是修改sqlnet.ora(9i以上): 
增加如下内容: 
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:\oracle\ora92)    --oracle home 
       (SID_NAME = orcl)                --sid name 
     ) 
然后在客户端 
的sqlnet.ora中,确保有 
NAMES.DIRECTORY_PATH= (HOSTNAME) 
你就可以利用数据库服务器的名称访问数据库了 
  
[Q]dbms_repcat_admin能带来什么安全隐患 
[A]如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。 
以下情况可能获得该包的执行权限: 
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中获得详细信息 
  
[Q]在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户? 
[A]我们通过如下的方法,可以安全使用该用户,然后再跳转回来,在某些时候比较有用 
需要Alter user权限或DBA权限: 
SQL> select password from dba_users where username='SCOTT'; 
      PASSWORD 
      ----------------------------- 
      F894844C34402B67 
SQL> alter user scott identified by lion; 
      User altered. 
SQL> connect scott/lion 
      Connected. 
REM Do whatever you like... 
SQL> connect system/manager 
      Connected. 
SQL> alter user scott identified by values 'F894844C34402B67'; 
      User altered. 
SQL> connect scott/tiger 
      Connected. 

你可能感兴趣的:(oracle,sql,socket,防火墙,网络协议)