首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DBLINK分布式事务失败又遭遇RAC热点块争用

编辑手记:DBLINK中由于远端数据库无法正常执行分布式事务,又遭遇RAC热块争用,两者共同作用导致数据库严重故障。接下来我们从AWR报告分析入手,一步步分析并解决问题。...大量会话都处于等待状态,大量事务被挂起,数据库实例处于不可用状态。 从TOP 5等待事件来看,节点1等待事件为: ? 节点2等待事件为: ?...这通常是由于同一数据不同数据库实例被请求访问,特别是通过两个节点频繁执行并发插入导致。...(2)网络质量对于跨dblink分布式事务非常关键,确保dblink之间网络稳定性,需要对网络进行实时监控,以判断网络是否存在明显抖动现象。...(3)当然通过应用改造,避免使用dblink分布式事务为最佳选择,但需要对现有应用逻辑做适当修改,改造后由于未使用分布式事务,即可规避分布式事务失败回退后锁表隐患,可能需要一定应用变更停机时间。

1K50
您找到你想要的搜索结果了吗?
是的
没有找到

【深度解析】偶遇ORA-02020错误

前言 开发人员反映数据库报错: Error: ORA-04052: 查找远程对象 IRMS20.T_ORDER_HUIZONG@JIAKELINK 出错 ORA...从 错误介绍原因是open_links参数超过了最大限制,open_link参数表示一个会话可以打开dblink最大连接数,11g中数据库默认是4,从错误原因得知这里出现错误应该就是单个会话使用dblink...4个dblink是没有问题,下面来使用5个dblink: 可以看到出现错误了,这是一个sql中使用5个dblink,下面来测试一个会话中5个sql使用5个dblink: 可以看到单个...sql使用一个dblink,只要是同一会话中超过5个不同远端连接就不行。...因为一个会话打开dblink连接之后,只要会话不退出,dblink连接就不关闭,所以只要是一个会话不管几个sql都是不行

1.3K30

Oracle 12.2新特性掌上手册 - 第六卷 ADG性能与诊断

因此可以一个数据库启动调整,但实际调整过程不同数据库远程执行。...工作原理如下: 当将primary数据库工作负载SQL调整卸载到ADG standby数据库,SQL调整过程从primary数据库启动,但是调整过程ADG standby数据库远程执行,并且结果将写回...调整ADG工作负载,整个SQL调整过程ADG standby数据库本地执行,同时保持数据库为read-only状态。...Active Data Guard环境中,SQL Tuning Advisor可以调整主数据库备用工作负载,通过DBlink,可以一个数据库发出SQL Tuning Advisor语句,但在不同数据库执行语句...在这种情况下,通过standby数据库发出每个调整语句来调整自身数据库工作负载,但SQL Tuning Advisor通过使用standby数据库到primary数据库DBlinkprimary数据库执行其分析

1.3K81

SQL*Net message to dblink等待事件

图实在没找到~ 这个等待事件发生在会话等待一个远程数据库一个确认信息,确认其发送数据远程数据库是否收到,该数据通过dblink发送 一般是由于目标服务器无法及时接受信息 Oracle将该等待事件列为...注意这里信息是从实例起来汇总,同时由于SID是可以复用,所以查看出来SID并不代表上次语句是这个等待 ---- 如何发生 当我们SQL语句通过dblink访问远程数据库,需要先将远程数据传输到本地再进行处理...,这时远端数据库会发送数据至本地,此时远端数据库如不能及时接受消息,会话处于SQL*Net message to dblink等待。...,同时采用增量更新方式,对于DML操作频繁主表我们需要提高刷新频率 针对SQL语句中有大量dblink语句我们需要尽量减少dblink访问 如果不能减少可以通过源库建立view方式使其源库执行...也可以使用DRIVING_SITE hint方式,手动指定oracle让其源库执行

92120

SQL*Net message from dblink

这个等待事件发生在会话等待从远程数据库获取信息,该信息是通过dblink进行传输,oracle把该等待事件归类于network类 ---- 如何实时等待 通过如下语句查询实时等待事件 select...注意这里信息是从实例起来汇总,同时由于SID是可以复用,所以查看出来SID并不代表上次语句是这个等待 ---- 如何发生 当我们SQL语句通过dblink访问远程数据库,需要先将远程数据传输到本地再进行处理...,完成这个动作之前该会话处于SQL*Net message from dblink等待 该等待主要发生在如下几种情形 数据库中有大量物化视图需要定时同步远程数据库至本地 数据库中有大量SQL语句需要通过...dblink从远程获取数据 ---- 如何调优 针对物化视图我们首先需要减少不必要物化视图数量,同时采用增量更新方式,对于DML操作频繁主表我们需要提高刷新频率 针对SQL语句中有大量dblink...语句我们需要尽量减少dblink访问 如果不能减少可以通过源库建立view方式使其源库执行 也可以使用DRIVING_SITE hint方式,手动指定oracle让其源库执行

1.1K20

Oracle 12.2 新特性 | PDB不同字符集变更深入解析

从12.2开始,同一个cdb中各个PDB字符集可以不相同。...对于最新版本12.2.0.1,新创建PDB并没有办法指定PDB 字符集,因此只能和root容器字符集相同,而不同PDB可以使用hot clone,或Relocate PDB online 方式直接...6、步骤5满足源端PDBread write 状态下进行克隆或relocate 注:如一开始并未使用LOCAL UNDO和归档模式,则通过如下方式开启 确认当前操作会话为cdb,或者进行切换 ?...relocate原理 热克隆+redo应用 准备条件同热克隆 克隆源库可处于read write状态 目标库Create PDB完成,源库dml事务仍可继续 目标PDB open源库中止会话并同步redo...#relocate过程中,理论连接原库PDBGBKdml事务并不中断。 3.relocate操作完成 ? 4.此时源库库状态(仍然承载连接和应用): ?

1.3K90

POSTGRESQL 到底怎么访问同instance 库--

实际SQL SERVER 本身是多个数据库和schema 并存数据库, POSTGRESQL 也是....这时估计SQL SERVER 同学会嘴角上扬,我们功能是最全,哪有访问同一个INSTANCE 多个数据库还这么麻烦....其实我到是有不同意见,原因如下 同一数据库INSTANCE 下多个数据库可以无障碍访问,本身是弊大于利还是利大于弊,这不好说, 尤其现在开发中使用MYSQL,都已经分库分表了,同一个INSTANCE...dblink_disconnect(); 3 判断当前BDLINK 是否使用dblink_is_busy 另外DBLINK 还支持异步调用,将语句发送给remote 数据库再等待后将信息取回...使用上应该是类似于句柄,将信息发送给远程数据库服务器,然后,通过判断句柄将信息取回. 但返回信息会在本地机内存中保存,所以不建议获取数据量较大信息.

1.7K20

记一次library cache locklibrary cache pin导致函数编译hang住分析及处理过程

墨墨导读:业务进行alter function my_function_name compile,有两个函数编译无法通过,现象就是会hang住,这里分享处理整个过程。...一、前言 业务进行alter function my_function_name compile时候,正常来说会非常快(不涉及无法访问dblink),但是今天一大早,业务告诉我,他们有两个函数编译无法通过...二、问题排查 看到这个问题时候,最初就是认为,数据库肯定是有锁了,导致这个编译过程语句,执行无法通过。...所以,第一间检查了下数据库是否存在行锁: SQL> @block no rows selected 可以看到,此时并没有排查到数据库有行锁。...从上述描述中,可以理解为,library cache lock/pin是当两个客户端同时访问(修改)同一数据库对象时候(通常为table, view, procedure, function, package

80020

19c 新特性 |ADG 备库支持 DML 重定向

DML 重定向整体步骤如下: 1.备库客户端发起 DML 操作。 2.备库 DML 操作通过内部 dblink 被重定向到主库执行。 3.DML 语句主库被实施。...官方文档中描述如下: 您可以 Active Data Guard 备用数据库运行 DML 操作。这使您能够备用数据库运行以读取为主应用程序,这些应用程序偶尔会执行 DML。...避免 Active Data Guard 备用数据库运行过多 DML 操作。因为这些操作实际主节点执行,所以过多 DML 可能会影响主节点性能。...Active Data Guard 备用数据库不支持 XA 事务中 DML 操作。 可以系统级别或会话级别配置 DML 操作到主服务器自动重定向。会话级别设置覆盖系统级别设置。...除了常规表之外, 还支持备库创建全局临时表,执行 PL/SQL 等操作,可以 Active Data Guard 备用数据库创建和删除全局临时表。这些操作 DDL 被透明地重定向到主数据库

47120

Oracle SCN Head Room原理精讲

DBLINK触发SCN同步, 如果外来SCN远超出当前数据库SCN ,系统会自动拒绝该请求, 该参数缺省设置是24小。...10G和11G数据库是混合部署,当用户现网中数据库使用两种不同速率时候, 容易造成10G数据库最大用SCN远远低于11G的当前SCN, 从而无法不同版本建立DBLINK。...如果应用了补丁数据允许更大增长速率,同时因为数据库SCN使用较快比如超过了32K每秒, 那当前SCN如果超过了未打补丁数据库最大SCN,两个库通过DBLINK访问就会因为无法同步SCN,而访问会被拒绝...如果96K数据库和16K数据库同一DBLINK网络里时候, 如果SCN正常增长, 系统不会有什么影响。 ?...系统SCN变化是基于系统繁忙情况,事务多少和DBLINK同步, 在打上该补丁后,系统SCN变化速度并不改变,只是允许系统支持更繁忙事务和当前SCN允许更大值,这样通过DBLINK同步到其他低

1.2K30

那些年,我们处理过SQL问题

分析一次SQL并行执行产生过程 1、并行引起灾祸 一大早,某网省兄弟告诉我,数据库会话执行SQL开启了并行,导致负载很高,会话也高,查了半天,没找到具体原因,也不知道该如何解决?...我立刻问现场同事,执行SQL活动会话中体现是不是16个并行进程。...1 DB升级之后,DBLINK引起执行计划异常分析 背景如下:某网省采集中间库从10.2.0.4升级到11.2.0.4(备注升级不是机器上面直接升级,而是新机器上面采用安装迁移方式) 升级完第二天现场找到我...从A数据库到B数据库插入语句,这个SQL发起端A数据库,也就是程序部署A数据库中,而该SQL实际执行B数据库。...针对INSERT INTO remote_table@dblink select * from local_table这种SQL执行端都会在远端,不是本地,无法使用HINTS driving_site指定执行

60020

9.7.3 dblink使用

9.7.3 dblink使用 dblink函数可以方便访问当前集群或其他集群数据库数据, 9.7.3.1 安装dblink函数 进入到GP安装目录下 # cd $GPHOME/share/postgresql.../contrib $ psql -d chinadaas -f dblink.sql chinadaas : 制定数据库 dblink默认安装在制定数据库public下 9.7.3.2 查看安装后...9.7.3.3 使用dblink读取不同数据库数据 9.7.3.3.1 在数据库中创建测试表 $ psql -d stagging psql (8.3.23) Type "help" for help...数据库中创建了testdblink 表 9.7.3.3.2 使用dblink读取数据 以下登录是chinadaas数据库以上中已经chinadaas安装上了dblink函数 $ psql -d...本地Greenplum数据库系统创建一个到stagging数据库命名连接 chinadaas=# SELECT dblink_connect('mylocalconn', 'dbname=stagging

1K20

Oracle数据库通过DBLINK实现远程访问

dblink(Database Link)数据库链接顾名思义就是数据库链接  ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中数据,本地数据库中就必须要创建远程数据库dblink...如何使用DBLINK? 场景:假设当前数据库用户为ALANLEE,此时需要通过ALANLEE这个用户去采集远程数据库数据。...例如CREATE DATABASE LINK表示所创建dblink只能是创建者能使用,别的用户使用不了,CREATE PUBLIC DATABASE LINK表示所创建dblink所有用户都可以使用...grant drop public database link to ALANLEE; 这里我们使用公共dblink,即所有用户都可以使用dblink,可以根据自己所需去赋予相应权限,授权成功后可以通过第一步视图查看是否授权成功...sql,所以可以结合Oracle数据库定时任务,每天某个时刻自动去执行我们所写存储过程,这样就相对来说比较完美了。

2.2K20

【待完善】Oracle中使用Dblink数据库操作

【待完善】 复杂系统中,有时需要从另一个数据库中读取数据,这时就可以使用OracleDblink进行跨数据库操作。...通过DBLINK进行跨数据库操作步骤一般如下: 1.配置tnsnames.ora文件 2.创建database link 3.远程数据库创建测试表 4.本地数据库中操作远程数据库表,以测试是否成功...二.创建Database Link 登录到本地机器数据库,创建database link,这里需要使用sysdba角色登录,进行权限分配方可创建  执行如下sql语句: 1 create public...创建完后使用,检查是否成功: select owner,object_name from dba_objects where object_type='DATABASE LINK'; 三.远程数据库创建测试表...远程数据库创建一个test表,如下: (待补充) 四.本地数据库中操作远程数据库表 1 select * from test@MEDIADB 这里MEDIADB就是第2步中用SQL语句创建Database

58130

一条SQL语句优化

今天同事反馈ETL数据抽取很慢,并且用DBLINK来做数据抽取,慢到什么程度呢?...大概要执行2~3小,很久没搞过Oracle了,很多技能都已经生疏了,抱着试试完心态,决定帮这个忙;后来经过优化,运行速度到了2分钟级别,其实还有优化空间,算了,就这样吧。现在讲讲相关优化过程。...1、了解背景情况 让厂家找到相关语句,一看却是个UPDATE语句,再看SQL语法,是个带.表和不带.表,根本不是什么DBLINK,就是同一数据库不同用户而已。...WHERE条件中,发现用到了分区条件,和内层表三个索引列 4、进行优化 通过以上分析,可以知道在外层表随便建一个索引,应该就会取得较好效果。...CREATE INDEXAAA ON dl_jlddl_r_sjd(YHBH) 5、评估效果 创建完索引后,运行脚本,120秒足以,再看执行计划也使用到了索引

28210

OGG| 数据迁移后比对一致性

注意:当然对于不同版本数据库,尤其是没有打 190716 PSU 11.2.0.4 数据库而言,如果你使用DBLInk 的话,那么你数据库版本要都一样,不一样的话,很频繁 DBLInk...对 DBLInk 依赖很严重系统可能会导致业务系统问题,严重情况下甚至会宕库,所以不同版本没有补丁数据库 DBLink 最好少用。...所有操作均在目标库执行,不影响原库数据,目标库创建表存放对比结果。...此包还使您能够聚合数据库对象,以便它们不同数据库中保持一致。通常,此包用于多个数据库共享一个数据库对象环境中。当同一数据库对象副本存在于多个数据库,该数据库对象是共享数据库对象。...多个数据字典视图包含有关与包进行比较信息。 DBMS_COMPARE 包进行数据验证具体使用步骤如下。 1)创建比较任务。 2)执行比较任务。 3)手动修复不一致数据。

1.2K10

远程数据库表超过20个索引影响

一个通过dblink查询远端数据库,原来查询很快,但是远端数据库增加了一个索引之后,查询一下子变慢了。...经过分析,发现那个通过dblink查询语句,查询远端数据库时候,是走索引,但是远端数据库添加索引之后,如果索引个数超过20个,就会忽略第一个建立索引,如果查询语句恰好用到了第一个建立索引,被忽略之后...说到,如果远程数据库使用超过20个索引,这些索引将不被考虑。这段话,oracle 9i起文档中就已经存在,一直到12.2还有。 那么,超过20个索引,是新索引被忽略了?还是老索引被忽略了?...本地表数据量比较少,远程表数据量很大,而索引数量超过20个,且关联条件字段最早索引情况下,可以考虑使用DRIVING_SITEhint,将本地表数据全量到远程中,此时远程关联查询可以意识到那个索引...可见文末例子。是否使用hint,需要评估本地表数据全量推送到远程成本,和远程表使用全表扫成本。 附:22个索引情况下,尝试采用DRIVING_SITEhint: ? ? ?

84170
领券