暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle11g怎么查看dblink的调用情况?

原创 pf 2023-06-26
477

数据oracle11g怎么查看dblink的调用情况?

一套数据库准备下线,但是其他数据库有配置dblink连接这套数据库,现在需要排查这个dblink的使用情况,哪些人或程序在使用?


解决办法:

首先了解以下什么是dblink


DB Link简介

 

简单的说,DB Link就是建立在两个数据库服务器上面的单向链接数据通道。从数据库对象的角度看,DB Link是一个对象,结构和定义是保存在数据库服务器上的。当客户端登录到数据库服务器A上后,通过调用在A上定义的DB Link,可以访问到数据库服务器B上的数据对象。但是,这种连接是一种单向链接,登录到服务器B上的客户端是不能借这个链接访问到数据库服务器A上的对象。因为DB Link的定义是保存在服务器A的数据字典中


首先我们看一个小例子。我们有两个数据库服务器wilson和orcl。Wilson是一台运行在CentOS上的Oracle11g服务器,而Orcl是在windows环境下。现在要建立一条从orcl访问到wilson数据库的dblink。



首先,我们登录orcl,以soctt用户登录系统。使用create database link语句建立一个database link。语句的含义:创建一个dblink,连接到本地命名服务wilson对应的数据库服务器上,连接的时候使用HR/HR作为用户名和密码。


 

注意:create database link语句是需要用户具有create database link的系统权限。如果没有,就不能创建。

 

创建之后,我们发现创建的dblink名称不为db_Wilson,而是加入了wilson的全局网络名称。为:DB_WILSON.A.COM;使用DB Link的方法,如下:




 

下面我们来看看dblink的本质。我们知道,客户端连接到数据库实例之后,在实例上是通过server process进行代理进行操作。一直以来,操作本地数据库(local database)的时候,server process与实例进程进行交互,获取本地数据库数据。那么,在使用dblink的时候,这个过程是怎么样的呢?

 

我们检查一下进程情况。在确保没有其他链接到oracle11g服务器的情况下,我们检查服务器所在Linux的进程情况。







注意,当我们使用过dblink后,在link的remote数据库上出现了一个server process进程,而且是长期保存。根据我们的之前blog中对server process的实验,server process是一个忠实于client的进程对象。只要client存在,并且保持连接,server process会一直驻留在服务器进程列表中。

 

现在我们看到了有server process驻留在里面,说明存在与dblink相关的一个client,在与其建立通信调用关系。那么,究竟是谁呢???







根据OS上面的SPID编号(5749),我们定位了会话的信息(SID=35)。使用的数据库用户是HR,程序名称为ORACLE.exe。

 

到这里,我们似乎可以猜到dblink的工作原理了。ORACLE.exe是Oracle在Windows下的实例程序进程,其中的Server process和后台进程都被实现为线程模型。但是在使用dblink连接到remote database的时候,却是充当了program客户端的角色。

 

在回顾一下我们建立dblink的参数:一个本地命名服务名、登录用户名/密码。这些信息完全具备了客户端登录服务器的全部要素。那么,一切都可以清楚了。

 

当我们使用dblink,要求访问remote数据对象数据时候。本地实例上的进程(server process)会去充当客户端程序的角色,利用本地命名服务和用户名密码连接远程服务器。之后的过程同一般的客户端连接服务器没有任何差距了。

 

 

当访问数据(如select),实际上是将数据从远程的数据库服务器上,通过dblink对应的连接线路,传递到本地数据库服务器实例上,再进行额外的处理。如果直接返回结果,就将remote实例上的数据,经过local实例,传回到客户端。的确是很漫长的过程……如果需要和local数据库上的数据表进行额外的关联查询或者连接,就在local实例上进行。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论