[Oracle]跨DBLINK的JOIN查询的数据库缓存问题15783452141

简介:
客户问到跨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








本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3_15783452141.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
182 64
|
29天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
45 7
|
1月前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
28 6
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
26 5
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
2月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
35 1
|
2月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
26天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
28天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4

推荐镜像

更多