在ORACLE里面,远程数据访问,像查询、更新等可以通过Database Link来实现。数据库连接需要在建立Database Link的两台机子上都运行Oracle Net(以前叫SQL*NET 和NET 8)。 语法如下

1 Database Link 的创建:

有两个数据库服务器A/B, 其中A的IP地址为172.20.36.245, 服务器B为本机。服务器B上的数据库实例名为ORCL,在本机上的服务监听配置上有服务器A上实例配置:

BIWG_TEST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = biwg)
)
)

实例BIWG_TEST的账号为 WGODS 、 密码为WGODS。下面开始在本机上创建DB Links

方法1:

CREATE PUBLIC DATABASE LINK WGODS.ORACLE.COM 

CONNECT TO WGODS IDENTIFIED BY WGODS USING 'BIWG'

CREATE [PUBLIC] DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '本地配置的数据的实例名';

[public]的意思是:public是全局db link,即该数据库上所有用户都能查询,要sys或者system用户来创建(当然有sysdba权限的用户也可以的);如果不使用public就是私有db link,只有创建该db link的用户能查询

查看连接是否成功

SELECT * FROM DUAL@WGODS.ORACLE.COM 

SELECT * FROM REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM 

方法2:可以不配置服务。

CREATE PUBLIC DATABASE LINK REMOTE_DEVE_HOST

CONNECT TO WGODS IDENTIFIED BY WGODS 

USING '(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = biwg)

)
)'

不建议使用这个实现。感觉没有上面方法来的方便

查看连接是否成功

SELECT * FROM DUAL@WGODS.ORACLE.COM 

SELECT * FROM REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM 

2 查看当前数据有哪些Database Link?

SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'DATABASE LINK'

SELECT * FROM DBA_DB_LINKS;

3 如何返回数据库的GLOBAL_NAME?

SQL> SHOW PARAMETER GLOBAL_NAME;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

global_names boolean FALSESELECT * FROM GLOBAL_NAME

该参数为TRUE时,你在本地建立的DBLINK名称必须和远程的GLOBAL_NAME一致才行。

4 删除Database Link

DROP [PUBLIC] DATABASE LINK REMOTE_DEVE_HOST;

会报如下错误: ORA-02024: 未找到数据库连接

DROP PUBLIC DATABASE LINK REMOTE_DEVE_HOST;

正常执行删除Database Link。

5 设置GLOBAL_NAME值对Database Link的影响

SQL> ALTER SYSTEM SET GLOBAL_NAMES = TRUE;

System altered

CREATE PUBLIC DATABASE LINK REMOTE_DB

CONNECT TO WGODS IDENTIFIED BY WGODS USING 'BIWG'

SELECT * FROM DUAL@REMOTE_DB

此时报错:ORA-02085:数据库连接 XXXX 到 XXXX

SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;

System altered

修改参数值为FALSE后,查询就正常了、

6 在DB Link中执行查询会有些限制。你应该避免使用connect by, start with, 以及prior关键字。一些查询使用了这些关键字会很正常, 但是大部分查询会失败

7 如何查询

SELECT …… FROM 表名@数据库链接名

8 DB LINK的使用原则(工作中以及网上收集整理的,仅供参考)

8.1.生产尽量不要使用db link,虽然方便,但这样不利于数据库安全管理

8.2.在10g中,BLOB,CLOB在db link中是查不到的,含这种数据类型的,要配合建view使用

8.3.我们经常可以使用synonym来做一些配置,以提高易读性和安全性

8.4.被建立了db link的user,最好不要修改密码,若修改密码要重建db link

8.5.db link是单向的

8.6 数据库链接名,建议使用SID.SCHEMA的形式,这样方便有多个db link时的识别(建议,个人习惯,非强制性)

ORACLE数据库链接的更多相关文章

  1. Oracle 数据库链接

    SQL> CREATE DATABASE LINK   mydblink 2    CONNECT TO   test   IDENTIFIED BY   test123 3    USING  ...

  2. lamp中的Oracle数据库链接

    lamp一键安装包: https://lnmp.org/install.html 在CentOS 6.7 64位安装PHP的PDO_OCI扩展 Installing PDO_OCI extension ...

  3. Oracle数据库链接超级慢或者总提示链接超时

    Centos6  今天tomcat应用程序链接数据库总提示链接超时,客户端工具通过tnsnames连接数据库实例进行操作也超级慢, 实在无法忍受, 重启实例试试吧,重启了还是不好使,还是很慢很慢,无比 ...

  4. Oracle数据库的链接数目超标

    测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...

  5. 历尽磨难之PL/SQL链接Oracle数据库

    说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...

  6. 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用

    用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...

  7. SQL Server 2014 64位版本链接32位Oracle数据库

    问题背景: 刚进入公司不久的BI新手,最近接部门的一个交接项目,需要在SQL Server上通过openquery来获取Oracle数据库的数据.各种配置,各种设置折腾了一周之久.在此,将自己的问题解 ...

  8. 有关.NET链接Oracle数据库,使用连接池pooling=true时问题

    .net链接oracle数据库时,当链接字符串中pooling=true时,视图结构变更时程序报错问题,还请高手指教 现象: 链接字符串: 注意:这里pooling=true: 测试视图: 执行的SQ ...

  9. Python链接Oracle数据库

    说明:以下所需安装的所有软件版本必须跟系统一致,即系统是64位,软件就得是64位,否则会出现各种链接报错的情况. 现以64位系统,python 3.6.5  64位为例: (一)安装cx_Oracle ...

随机推荐

  1. Android数据库之判断表是否存在

    Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...

  2. vue 购物车练习

    本人看了vue官网上的教程后,感觉对vue的依稀有点了解,决定动手练习个小功能项目,就找了购物车本项目.原文链接:http://blog.csdn.net/take_dream_as_horse/ar ...

  3. 关于 AutomationProperties.Name 的一些总结

    在 XAML 代码中,我们偶尔会看到 AutomationProperies 的代码,如 AutomationProperties.Name="xxxxx", Automation ...

  4. echarts图表属性设置

    原地址:http://blog.csdn.net/she_lover/article/details/51448967theme = { // 全图默认背景 // backgroundColor: ‘ ...

  5. 线程池 队列 synchronized

    线程池 BlockingQueue synchronized volatile 本章从线程池到阻塞队列BlockingQueue.从BlockingQueue到synchronized 和 volat ...

  6. Jfinal拦截器源码解读

    本文对Jfinal拦截器源码做以下分析说明

  7. MongoDB建立主从复制小案例(一主一从)

    花了两天学习了mongoDB, 今天接触到了mongo的主从配置, 把它记下来 1. 开启两个mongo服务器(用于一主一从, 没有加安全验证相关参数 : 可以使用mongd-help查看) mong ...

  8. python写一个邮箱伪造脚本

    前言: 原本打算学php MVC的思路然后写一个项目.但是贼恶心, 写不出来.然后就还是用python写了个邮箱伪造. 0x01 第一步先去搜狐注册一个邮箱 然后,点开设置,开启SMTP服务. 当然你 ...

  9. 解决 重启nginx: [alert] kill(189, 1) failed (3: No such process)

    解决 nginx: [alert] kill(189, 1) failed (3: No such process) [root@localhost/]# nginx -s reloadnginx: ...

  10. angular $stateProvider 路由的使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...