1 访问远程数据库 ORACLE系统中是通过"数据库链"来实现访问远程数据库的。我们可以在本地数据库上建立一个数据库链,它封装了如下信息: (1) 网络协议(如TCP/IP) (2) 远程数据库服务器的网络地址(如IP地址166。111。7。123) (3) 远程数据库的名字(如ORA2) (4) 远程数据库上建立的用户名及口令(如SCOTT/TIGER,你将以此帐号访问远程数据库) 其中前三项是有关网络上一个结点的信息,系统管理员可以在本地数据库服务器上的系统网络配置文件中(TNSNAME。ORA)先将它们定义为一个"连接串",如123。 下面是建立数据库链的语句示例: CREATE DATABASE LINK sales CONNECT TO scott IDENTIFIED BY tiger USING '123': 作为本地数据库的一个对象,数据库链可以被看作是远程数据库在本地的一个代理。 在本地数据库中,可以根据需要建立若干个数据库链。一旦建立了数据库链,便可以利用它访问远程数据库中的数据。例如: SELECT * //查询远程数据库上emp表的内容 FROM dept, emp@sales //部门dept表为本地表,emp表为远程表 WHERE dept.don = emp.don: //不同数据库上表的连接 注意:数据库链仅在说明表名的地方(如FROM子句)出现,其他地方不需要(如WHERE子句)出现。 ORCALE分布数据库系统的应用如图8-11所示。 图8-11 ORACLE分布数据库系统 如果读者要问:能否更透彻的对远程数据库进行存取?答案是肯定的,我们可以利用"同义词"机制实现透明访问。例如,我们建立一个同义词: CREATE SYNONYM emp1 FOR emp @sales ; 上述语句中在本地数据库中为远程数据库sales的表emp建立了一个同义词emp1.。建立了同义词后,就可以在SQL语句中使用它。例如: SELECT * FROM emp1; 从该查询语句中看不出emp1表的物理位置,形式上与本地表没有区别。实际上emp1是一个远程表的别名,系统会根据该同义词的定义来定位实际的emp。 "同义词"是ORACLE的一个数据库对象,同义词可为表、视图、序列或其他同义词等对象定义别名,由于同义词包含数据库链的信息,因此ORACLE通过同义词机制提供了数据物理位置的透明性。 |