`
huayu0815
  • 浏览: 57809 次
  • 性别: Icon_minigender_1
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

Oracle中的DBLink和Synonym

 
阅读更多
Oracle DB Link:
引用

1.基本概念:
数据库连接串主要用于建立对远程数据库的访问方法,可以直接读取远程Oracle的数据,或者直接修改。数据库连接串可以是公用连接PUBLIC或者私有连接PRIVATE。这一点和同义词很相像。
创建语法:
Java代码 收藏代码
  1. CREATEDATABASELINKTESTCONNECTTOUSERNAMEIDENTIFIEDBYPASSWORD
  2. USING'CONNECT_STRING';

解释:TEST是数据库连接串的名字。以后就通过这个名字来进行调用远程数据库的内容。
USERNAME是用来连接到远程数据库的合法Oracle用户名。PASSWORD为该用户连接到Oracle时候的合法密码。
CONNECT_STRING为该Oracle数据库所在的主机上的tnsnames.ora文件里边定义的数据库连接串。

2.使用方法:
Java代码 收藏代码
  1. SELECTCOUNT(*)FROMTABLE_NAME@DB_LINKWHEREWHERE_CLAUSE;//查阅远程数据库的内容。
  2. UPDATETEST.TEST@DB_LINKSETSO_NBR=NEW_SO_NBR
  3. WHEREWHERE_CLAUSE;//修改远程数据库的内容。

在实际使用过程中,还可以通过为这个远程表建立一个同义词来进一步增加透明性,使该数据库连接串对于程序和开发人员来讲完全透明。
Java代码 收藏代码
  1. CREATESYNONYMTABLE_NAMEFORTABLE_NAME@DB_LINK;


3.数据库连接的管理:
如何知道当前用户、当前系统中有哪些数据库连接串?
Java代码 收藏代码
  1. SELECT*FROMUSER_DB_LINKS;

这个查询会给出当前用户的数据库联接的名字、联接用户名、联接密码、要连接的主机以及创建时期。
Java代码 收藏代码
  1. SELECT*FROMDBA_DB_LINKS;

这个查询会给出当前系统中所有的数据库联接的创建用户、联接用户名、要连接的主机以及创建时期。
Java代码 收藏代码
  1. SELECT*FROMV$DBLINK;

这个查询会给出当前打开的数据库联接。
4.常见错误处理:
不能分解服务名:
登录到远程服务器上的结果:
Java代码 收藏代码
  1. SQL>showparametersglobal_name
  2. NAMETYPEVALUE
  3. -------------------------------------------------------------------------
  4. global_namesbooleanFALSE
  5. SQL>
  6. SQL>dropdatabaselinkjinhua;
  7. 数据库链接已丢弃。
  8. SQL>createdatabaselinkjinhua
  9. 2connecttousernameidentifiedbypassword
  10. 3using'jinhua';
  11. 数据库链接已创建。
  12. SQL>select*fromso@jinhua;
  13. select*fromso@jinhua
  14. *
  15. ERROR位于第1行:
  16. ORA-12154:TNS:不能分解服务名称.
  17. SQL>connusername/password@jinhua;
  18. 已连接。
  19. SQL>
  20. 这是因为在Oracle数据库所在的Unix主机上面的tnsnames.ora文件里边没有对jinhua这个服务名的定义。所以不能分解服务名。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics