客户问到跨DBLINK,结合本地表和远端表的时候,数据在哪一边 的 Data Buffer 缓存。

测试的结果是:本地表在本地缓存,远端表在远端缓存。

####Testcase-0929-10

本地数据库:     远端数据库:
TABXXX           TABYYY

=============
本地数据库:

conn user003/user003

create table TABXXX(id integer, val varchar2(3));

insert into TABXXX values(1,'100');
insert into TABXXX values(2,'200');
insert into TABXXX values(3,'300');
commit;

=============
远端数据库:

conn user002/user002

create table TABYYY(id integer, val varchar2(3));

insert into TABYYY values(2,'200');
insert into TABYYY values(3,'300');
insert into TABYYY values(4,'400');
commit;

=============
本地数据库:
shu immediate
startup

conn user003/user003

create public database link dbk connect to user002 identified by user002 using 'remote';

查询前检查Buffer:

conn / as sysdba

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
  from dba_objects o,v$bh b,dba_segments s
  where b.objd=o.data_object_id
  and o.owner = 'user002'
  and o.object_name=s.segment_name
  and o.object_type=s.segment_type
  group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
  order by buffers;

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
  from dba_objects o,v$bh b,dba_segments s
  where b.objd=o.data_object_id
  and o.owner = 'user003'
  and o.object_name=s.segment_name
  and o.object_type=s.segment_type
  group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
  order by buffers;

=============
远端数据库:

查询前检查Buffer:

shu immediate
startup

conn / as sysdba

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
  from dba_objects o,v$bh b,dba_segments s
  where b.objd=o.data_object_id
  and o.owner = 'user002'
  and o.object_name=s.segment_name
  and o.object_type=s.segment_type
  group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
  order by buffers;

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
  from dba_objects o,v$bh b,dba_segments s
  where b.objd=o.data_object_id
  and o.owner = 'user003'
  and o.object_name=s.segment_name
  and o.object_type=s.segment_type
  group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
  order by buffers;

=============
本地数据库:

执行查询:

conn user003/user003

select a.id,b.value from TABXXX a, TABYYY@dbk b where a.id=b.id;

查询后检查缓存:  <<<<<<<<<<<<<<<<<< 本地表在本地缓存,本地没有远端表的缓存内容

conn / as sysdba

  
select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
 from dba_objects o,v$bh b,dba_segments s
 where b.objd=o.data_object_id
 and o.owner = 'user002'
 and o.object_name=s.segment_name
 and o.object_type=s.segment_type
 group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
 order by buffers;

no records found

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
 from dba_objects o,v$bh b,dba_segments s
 where b.objd=o.data_object_id
 and o.owner = 'user003'
 and o.object_name=s.segment_name
 and o.object_type=s.segment_type
 group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
 order by buffers;

OWNER
--------------------------------------------------------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE                                               BUFFER_POOL
--------------------------------------------------------- ---------------------
  BUFFERS
----------
user003
TABXXX
TABLE                                                     DEFAULT
        7

SQL>

=============
远端数据库:

查询后检查缓存:                      <<<<<<<<<<<<<<<<<< 远端表在远端缓存,远端数据库那边,没有本地表的缓存内容

conn / as sysdba

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
 from dba_objects o,v$bh b,dba_segments s
 where b.objd=o.data_object_id
 and o.owner = 'user002'
 and o.object_name=s.segment_name
 and o.object_type=s.segment_type
 group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
 order by buffers;

OWNER
--------------------------------------------------------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
OBJECT_TYPE                                               BUFFER_POOL
--------------------------------------------------------- ---------------------
  BUFFERS
----------
user002
TABYYY
TABLE                                                     DEFAULT
       14

SQL>

select o.owner,o.object_name,o.object_type,s.buffer_pool,count(*) buffers
 from dba_objects o,v$bh b,dba_segments s
 where b.objd=o.data_object_id
 and o.owner = 'user003'
 and o.object_name=s.segment_name
 and o.object_type=s.segment_type
 group by o.owner,o.object_name,o.object_type,o.status,s.buffer_pool
 order by buffers;

no records found

[Oracle]跨DBLINK的JOIN查询的数据库缓存问题15783452141的更多相关文章

  1. 一条SQL完成跨数据库实例Join查询

    背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求.原本在同一数据库实例里就能实现的SQL查询,现在需要跨多 ...

  2. ORACLE跨数据库查询的方法

    原文地址:http://blog.csdn.net/huzhenwei/article/details/2533869 本文简述了通过创建database link实现Oracle跨数据库查询的方法 ...

  3. oracle使用dblink跨库查询的例子

    本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下.   oracle dblink跨库查询 方法一:首先,创建数据库链接: 复制 ...

  4. Oracle 跨库 查询 复制表数据 分布式查询

    方法一: 在眼下绝大部分数据库有分布式查询的须要.以下简单的介绍怎样在oracle中配置实现跨库訪问. 比方如今有2个数据库服务器,安装了2个数据库.数据库server A和B.如今来实如今A库中訪问 ...

  5. Oracle 跨库 查询 复制表数据

    在目前绝大部分数据库有分布式查询的需要.下面简单的介绍如何在oracle中配置实现跨库访问. 比如现在有2个数据库服务器,安装了2个数据库.数据库server A和B.现在来实现在A库中访问B的数据库 ...

  6. 2020-07-07:mysql如何实现跨库join查询?

    福哥答案2020-07-07: 1.同服务跨库.表名称带上库名.SELECT * FROM 数据库名称1.表名称 JOIN 数据库名称2.表名称 ON 数据库名称1.表名称.tid = 数据库名称2. ...

  7. oracle 跨分区查询效率,Oracle分区表做跨分区查询

    问:有一张大表,其中按时间字段(TIME_ID)进行表分区(按季度分区),但是如果业务人员做跨季度的大批量数据的查询时,未能走TIME_ID分区索引,导致全表扫描.此种情况该如何处理? 示例解析: 1 ...

  8. oracle跨库连接查询

    一.授权(本地客户器端授权当前用户) grant create database link to szfile 第一种连接方法:配置本地数据库服务器的tnsnames.ora文件 SZFILE = ( ...

  9. Oracle 跨库查询表数据(不同的数据库间建立连接)

      1.情景展示 当需要从A库去访问B库中的数据时,就需要将这两个库连接起来: 两个数据库如何实现互联互通,在oracle中,可以通过建立DBLINK实现. 2.解决方案 2018/12/05 第一步 ...

随机推荐

  1. 13.1、多进程:进程锁Lock、信号量、事件

    进程锁: 为什么要有进程锁:假如现在有一台打印机,qq要使用打印机,word文档也要使用打印机,如果没有使用进程锁,可能会导致一些问题,比如QQ的任务打印到一半,Word插进来,于是打印出来的结果是各 ...

  2. Scala之List,Set及Map基本操作

    package big.data.analyse.dataSet import scala.collection.immutable.{TreeMap, TreeSet} import scala.c ...

  3. sql server alwayson 可用性组 只读路由的设置

    昨天晚上学习了[SQL Server 2012实施与管理实战指南]的第三章,于是今天想在前段时间建的那个alwayson 可用性组测试环境上也配置一下只读路由,尝试实现读写分离. 按照书中的方法,执行 ...

  4. 关于Natively Compiled Stored Procedures的优化

    Interpreted Transact-SQL stored procedures are compiled at first execution, in contrast to natively ...

  5. Spring RestTemplate 中文乱码问题

    1.原因 由于RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现 ...

  6. Hive-1.2.1_01_安装部署

    前言:该文章是基于 Hadoop2.7.6_01_部署 进行的. 1. Hive基本概念 1.1. 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库 ...

  7. 一步步教你上架iOS APP

    注意,注意,注意:一定要设置Enable Xombie Objects为不勾选.在Edit Scheme中有一个Run,然后选择Diagnostics,然后取消勾选Enable Zombie Obje ...

  8. Properties集合概述与存和取

    Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...

  9. UOJ #390. 【UNR #3】百鸽笼

    UOJ #390. [UNR #3]百鸽笼 题目链接 看这道题之前先看一道相似的题目 [PKUWC2018]猎人杀. 考虑类似的容斥: 我们不妨设处理\(1\)的概率. 我们令集合\(T\)中的所有鸽 ...

  10. 协程与concurent.furtrue实现线程池与进程池

    1concurent.furtrue实现线程池与进程池 2协程 1concurent.furtrue实现线程池与进程池 实现进程池 #进程池 from concurrent.futures impor ...