博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE数据库链接
阅读量:6207 次
发布时间:2019-06-21

本文共 2281 字,大约阅读时间需要 7 分钟。

 

在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:

LINK WGODS.ORACLE.COM   WGODS IDENTIFIED  WGODS  'BIWG'

 

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

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

查看连接是否成功

*  DUAL@WGODS.ORACLE.COM  *  REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM

 

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

LINK REMOTE_DEVE_HOST  WGODS IDENTIFIED  WGODS  '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = biwg)))'

 

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

查看连接是否成功

*  DUAL@WGODS.ORACLE.COM  *  REF.TR_WGG_GDAREA_INFO@WGODS.ORACLE.COM

 

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

*  DBA_OBJECTS  OBJECT_TYPE = 'DATABASE LINK' *  DBA_DB_LINKS;

 

3 如何返回数据库的GLOBAL_NAME?

> SHOW PARAMETER GLOBAL_NAME;NAME TYPE ------------------------------------ ----------- ------------------------------global_names boolean 或 *  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时的识别(建议,个人习惯,非强制性)

转载地址:http://bjzja.baihongyu.com/

你可能感兴趣的文章
sql 锁
查看>>
生死相依:说说JQuery中die()、live()详解[翻译]
查看>>
UML建模工具Visio 、Rational Rose、PowerDesign的比较
查看>>
压缩映象原理的一个应用
查看>>
一个疑难故障,坑了我半年青春-----知识就是生产力
查看>>
javascript控制页面(含iframe进行页面跳转)跳转、刷新的方法汇总
查看>>
JAVA常见算法题(九)
查看>>
leetcode解题文件夹
查看>>
MySQL复制原理-加强版
查看>>
dotnet 命令实战
查看>>
Hbase集群扩展
查看>>
C语言之归并排序
查看>>
绘制loss曲线
查看>>
进程的处理器亲和性和 vCPU 的绑定(查看cpu信息,超线程等)
查看>>
CentOS 中使用yum出现的“UnicodeDecodeError: 'ascii' codec”问题解决方法
查看>>
【知识整理】这可能是最好的RxJava 2.x 教程(完结版)
查看>>
【Android】定位与解决anr错误记录
查看>>
Virtex6 PCIe 超简版基础概念学习(二)
查看>>
Hive 内建操作符与函数开发——深入浅出学Hive
查看>>
Azure IOT 设备固件更新技巧,看这一篇就够了
查看>>