dbuser是数据库A的数据库用户。当前数据库B用户user1登陆数据库B,
user1提供dbuser的用户名及明文密码,
如何通过DB link在数据库A验证user1所提供的用户名及明文密码是正确的呢?谢谢大家

解决方案 »

  1.   

    create database link ora9i.us.oracle.com ### 这里的us.oracle.com为oracle默认域名 ###
    connect to scott identified by tiger
    using 'sun';1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
    2)用户名,口令为远程数据库用户名,口令;
    3)主机字符串为本机tnsnames.ora中定义的串;
    4)两个同名的数据库间不得建立dblink;
    然后,你就可以通过dblink访问远程数据库了。
    如:
      

  2.   

    oracle 10g : sqlplus 用户/密码@ip:1521/sid
      

  3.   

    谢谢nihaozhangchao、lwei_998的回复你们俩位说的意思我都明白,可能没我没有说得太清楚,我是想在函数里实现这个验证
    如在数据库B里建一个函数:create or replace validate(username varchar2,userpassword varchar2)  
    RETURN varchar2 IS   
    return_value varchar2(100);   
    BEGIN     
        --将用户输入的username、userpassword放到数据库A验证。在这里实现验证     
      RETURN return_value; --返回登陆成功、或失败
    END;谢谢
      

  4.   

    oracle用户密码是存在数据字典里,你并不知道密码算法,可能无法进行用户的密码较验吧!
      

  5.   


    我觉得你的B用户在建立dblink的时候就已经知道了将要连接的a数据库的用户名和密码了。
    因为这些(将要用于连接a数据库的用户名和密码)在创建dblink的时候都是必须的属性。至于对该连接用户的鉴权应该是oracle自己的内部机制了,貌似无法认为的对其进行鉴权。
      

  6.   

    是啊。oracle 的密码应该是保密的。
      

  7.   


    有个土招可以实现,就是在B库创建要验证的用户,到dba_users里读加密后的密码,然后再跟A库加密后的密码比较,再将B库创建的用户删除。(太土了,而且验证量比较大,不知道会有什么后果)------------我是希望能实现:
    create or replace validate(username varchar2,userpassword varchar2)  
    RETURN varchar2 IS  
    return_value varchar2(100);  
    BEGIN    
        --将用户输入的username、userpassword放到数据库A验证。在这里实现验证        conn username/userpassword@A库  如果能获取返回的信息就能验证了,能不能实现啊?  RETURN return_value; --返回登陆成功、或失败 
    END;