DBLINK做系统集
过度使用DBLINK做系统集成会带来的问题
过度使用DBLINK做系统集成会带来很多问题,问题主要由以下几点:
1. 大量消耗数据库资源;
本地系统每通过DBLINK链接远端系统一次,都会生成一个本地session,如本地session不退出或者手动释放,只有通过session超时才能自动释放,会浪费大量的系统资源
2. 容易出现数据库BUG;
大量使用DBLINK,本地系统极易出现ORA-02068、ORA-03113、ORA-02080、ORA-02054、ORA-02050等Oracle错误,这种错误大部分会影响当前session正在处理的业务
3. 性能较差;
由于使用DBLINK,本地系统在获取数据时,每次链接都会对远端数据库进行一次全表扫描,且所有数据都会传输回本地数据库内,导致性能降低并且严重浪费当前系统资源。尤其出现一条sql语句从两个DBLINK中取数,更被称之为“性能杀手”,尤其是OLTP型数据库
4. 数据传输不稳定,占用带宽严重,容易产生丢包风险;
DBLINK本身没有数据存储、监控等功能,是通过网络中的数据库进行传输时,如果在传输过程中出现数据丢包现象,DBLINK本身不会发现,只用当业务进行完毕才能发现丢包现象,这样会影响当前正在处理的业务;另外,通过DBLINK查询的数据会像数据全部传至本地数据库进行操作,数据传输量很大,占用带宽严重,可能会导致网络堵塞
5. Oracle数据功能受限
DBLINK本身不支持对oracle LOB大对象的操作,在使用PROCDURE时,使用COMMIT等操作时可能会出现错误;
6. 可扩展性较差
如果多系统之间 使用DBLINK进行传输,每增加一个系统,都会增加一个或多个DBLINK链接或者修改对应的接口程序,如果修改其中一个接口,需要修改所有关联系统内的接口程序;
7. 维护性差、安全性较低
通过DBLINK进行链接需要将远端数据库用户名、密码、IP地址存在本地数据库,如远端进行密码修改、IP地址变更,本地数据库也需要修改,如果系统较多,每个系统都需要同时修改。切本地数据库管理员能够看到远端数据的密码、IP地址,对系统安全产生影响。
在分析SQL性能的时候,经常需要确定资源消耗多的SQL,总结如下:
1 查看值得怀疑的SQL
select substr(to_char(s.pct,'99.00'),2)||'%'load,
s.executions executes,
p.sql_text
from(select address,
disk_reads,
executions,
pct,
rank() over(order by disk_reads desc) ranking
from(select address,
disk_reads,
executions,
100*ratio_to_report(disk_reads) over() pct
from sys.v_$sql
where command_type!=47)
where disk_reads>50*executions) s,
sys.v_$sqltext p
where s.ranking<=5
and p.address=s.address
order by 1, s.address, p.piece;
2 查看消耗内存多的sql
select b.username ,a.buffer_gets ,a.executions,
a.disk_reads/decode(a.executions,0,1,a.executions),a.sql_text SQL
from v$sqlarea a,dba_users b
where a.parsing_user_id = b.user_id
and a.disk_reads >10000
order by disk_reads desc;
3 查看逻辑读多的SQL
select*
from(select buffer_gets, sql_text
from v$sqlarea
where buffer_gets>500000
order by buffer_gets desc)
where rownum<=30;
4 查看执行次数多的SQL
select sql_text, executions
from(select sql_text, executions from v$sqlarea order by executions desc)
where rownum<81;
5 查看读硬盘多的SQL
select sql_text, disk_reads
from(select sql_text, disk_reads from v$sqlarea order by disk_reads desc)
where rownum<21;
6 查看排序多的SQL
select sql_text, sorts
from(select sql_text, sorts from v$sqlarea order by sorts desc)
where rownum<21;
7 分析的次数太多,执行的次数太少,要用绑变量的方法来写sql
set pagesize 600;
set linesize 120;
select substr(sql_text,1,80) "sql",count(*),sum(executions) "totexecs"
from v$sqlarea
where executions<5
group by substr(sql_text,1,80)
having count(*)>30
order by 2;
8 游标的观察
set pages 300;
select sum(a.value), b.name
from v$sesstat a, v$statname b
where a.statistic#=b.statistic#
and b.name='opened cursors current'
group by b.name;
select count(0) from v$open_cursor;
select user_name, sql_text,count(0)
from v$open_cursor
group by user_name, sql_text
having count(0)>30;
9 查看当前用户&username执行的SQL
select sql_text
from v$sqltext_with_newlines
where(hash_value, address) in
(select sql_hash_value, sql_address
from v$session
where username='&username')
order by address, piece;
DBLINK做系统集的更多相关文章
- Apache-Shiro+Zookeeper系统集群安全解决方案之缓存管理
上篇[Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理],解决了Shiro在系统集群开发时安全的会话共享问题,系统在使用过程中会有大量的权限检查和用户身份检验动作,为了不频繁 ...
- 过度使用DBLINK做系统集成会带来的问题
过度使用DBLINK做系统集成会带来很多问题,问题主要由以下几点: 1. 大量消耗数据库资源: 本地系统每通过DBLINK链接远端系统一次,都会生成一个本地session,如本地session不退出或 ...
- 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群
Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...
- 面试连环炮系列(二):你们的项目Redis做了集群部署吗
你们的项目Redis做了集群部署吗? 我们有大量数据需要缓存,而单实例的容量毕竟是有限的,于是做了Redis集群部署. 采取的方案是什么,Codis还是Redis Cluster,为什么要选择这个方案 ...
- 装机、做系统必备:秒懂MBR和GPT分区表____转载网络
装机.做系统必备:秒懂MBR和GPT分区表 科技美学 2016-10-17 16:36:23 阅读(3835) 评论(4) 很多网友询问MBR和GPT的问题,涉及到硬盘操作系统的安装,其实除了MBR和 ...
- Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理
如今的系统多不是孤军奋战,在多结点会话共享管理方面有着各自的解决办法,比如Session粘连,基于Web容器的各种处理等或者类似本文说的完全接管Web容器的Session管理,只是做法不尽相同. 而本 ...
- [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...
- 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
作者:大数据女神-诺蓝(微信公号:dashujunvshen).本文是36大数据专稿,转载必须标明来源36大数据. 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要 ...
- ELK+Kafka学习笔记之搭建ELK+Kafka日志收集系统集群
0x00 概述 关于如何搭建ELK部分,请参考这篇文章,https://www.cnblogs.com/JetpropelledSnake/p/9893566.html. 该篇用户为非root,使用用 ...
随机推荐
- && 的用法
document.body.style.display === "" && (document.body.style.display = "none&qu ...
- 解决电信或网通的DNS劫持
大家有没有碰到访问一些不存在域名或者网站时,浏览器本应显示一个网址不存在之类的信息,但是因为现在很多ISP做了DNS劫持将不存在的域名或网址重定向到ISP的广告页面,烦人的狠.其实tomato可以解决 ...
- happy Mom ——php mysqli DES加密
看完<爱你就像爱生命>这本书,真的看出小波哥很有才,跟小波哥比起来,我唯一拿的出手的可能就是我比他的颜值了.想起一句话,人不是因为美丽而可爱,而是因为可爱而美丽.所以我对我的要求是,继续修 ...
- Flex3中addEventListener()方法使用详解
Flex控件对象.RemoteObject等都有一个共同的方法addEventListener. 方法详细信息: 来源于:flash.events.EventDispatcher类 addEventL ...
- 2017-2018年红头发新版Cisco认证网络工程师(CCNA-R&S)全新讲解分享
网名"红头发",多年授课经验,业内资深思科认证讲师,其所写的CISCO认证原创技术文章风靡各大网站与培训机构.精通CISCO各类路由交换产品,熟悉JUNIPER M/T系列路由产品 ...
- QNX与Linux两家未来有望独霸车载电子操作系统
车载电子操作系统是汽车智能化的核心,能够有效分配车机的硬件资源,对车内各种任务功能进行协同管理,并控制各项任务优先级别.常见的车载电子操作系统有:QNX.Linux(Android,AaliOS).W ...
- storm单词计数 本地运行
import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.HashM ...
- 在XEN上启动guest时loopback设备不足
现象: 通常出现在用户挂载了多个img到guest上,会发现无法再创建guest或者无法启动guest的现象. /var/log/xen/xen-hot-plug.log中错误如下: xenstore ...
- MongoDB(六)java操作mongodb增删改查
java操作mysql数据库的代码我们已经了如指掌了.增删改查,java对mongodb数据库也是类似的操作,先是数据库连接.再是进行操作. 首先我们进入进入admin数据库.然后建立自己的数据库te ...
- Es61
ECMAScript和JavaScript的关系 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础 ...