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访问远程数据库了。 如:
oracle 10g : sqlplus 用户/密码@ip:1521/sid
谢谢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;谢谢
connect to scott identified by tiger
using 'sun';1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
2)用户名,口令为远程数据库用户名,口令;
3)主机字符串为本机tnsnames.ora中定义的串;
4)两个同名的数据库间不得建立dblink;
然后,你就可以通过dblink访问远程数据库了。
如:
如在数据库B里建一个函数:create or replace validate(username varchar2,userpassword varchar2)
RETURN varchar2 IS
return_value varchar2(100);
BEGIN
--将用户输入的username、userpassword放到数据库A验证。在这里实现验证
RETURN return_value; --返回登陆成功、或失败
END;谢谢
我觉得你的B用户在建立dblink的时候就已经知道了将要连接的a数据库的用户名和密码了。
因为这些(将要用于连接a数据库的用户名和密码)在创建dblink的时候都是必须的属性。至于对该连接用户的鉴权应该是oracle自己的内部机制了,貌似无法认为的对其进行鉴权。
有个土招可以实现,就是在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;