共有两台服务器,都是windonw操作系统,安装的oracle版本均为11.2.0.1版本
一台服务器的ip地址为192.168.3.237,服务名为orcl
另外一台服务器的ip地址为192.168.3.235,服务名为orcl
在我自己的电脑上配置了oracle 11g的客户端,237服务器的数据库本地服务名为orcl1,235服务器上的数据库本地服务名为orcl;现在通过客户端可以成功的访问这两个数据库
我想配置一下这两个数据库的dblink
1、 登陆orcl1,给一个普通用户授权
Conn sys/system@orcl1 as sysdba
Grant create public database link,drop public database link to hrb
2、 建立dblink
Create public database link orcl100
Connect to hrb03 identified by “hrb03” using ‘orcl’;
Database link created
3、 查询
Select count(*) from a@orcl100
>[错误] 脚本行:4-4 ---------------------------------------
ORA-01017: invalid username/password; logon denied
ORA-02063: 紧接着 line (起自 ORCL100)
脚本行 4,语句行 1,列 22
接着我登陆到sysdba账户下,查看数据字典中的link$视图
Select * from link$
NAME USERID PASSWORD PASSWORDX
-------------------- --------- ----------- ----------------------------------
ORCL100.TOPNET.LOCAL HRB03 (null) 059712ca9ba233847fa410838013ef6a04
可以看到password字段为Null,而PASSWORDX是有值的,想问一下这个是否正常?link$中用户名和密码不都是明文存放的吗?
解决办法:在本地数据库新建一个用户,用户名和密码与远程访问数据库的用户名密码均相同,不再报ora-01017的错误
新的问题:
当前用户为hrb03,当前用户下没有任何表;orcl100链接的远程数据库的用户hrb03下存在表a,通过客户端能正常查询;
使用dblink查询:
Select count(*) from a@orcl100;
现在的错误是ora-00942:table or view does not exist
已经给本地数据库的hrb03用户赋予了sysdba的权限
---------------------------------------------------
再次改变了策略,放弃了通过客户端执行的方式,而是选择在237服务器上通过下面的方式建立
create public database link orcl235
connect to hrb03 identified by "hrb03" using '
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.235)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
';
然后在进行查询
select count(*) from a@orcl235;
可以成功查出结果
conn hrb/hrb --改变用户查询
select count(*) from a@orcl235;
仍可以成功查出
在我自己电脑的客户端上登陆进行查询仍然可以
应该是客户端的问题导致建立dblink不成功
需要在工作中来测试dblink的实用性
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-774043/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28803801/viewspace-774043/