湖南营销型网站建设 A磐石网络,百度账号管理中心,毕业设计如何用dw做网站,女装wordpress数据库管理-第118期 记一次开启附加日志导致的性能问题#xff08;202301129#xff09;
本周二凌晨#xff0c;为了配合某国产数据库从Oracle数据库能够实时同步数据#xff0c;在X9M那套一体机上做了开启附加日志的操作#xff0c;也正是因为这个操作带来了一些小问题。…数据库管理-第118期 记一次开启附加日志导致的性能问题202301129
本周二凌晨为了配合某国产数据库从Oracle数据库能够实时同步数据在X9M那套一体机上做了开启附加日志的操作也正是因为这个操作带来了一些小问题。
1 干了些啥
其实很标准在主库CDB里面开启附加日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;而这时候在EMCC监控中发现某个PDB开始出现了一些问题 数据库两条查询语句出现了大量的latch: cache buffers chains等待业务方反馈主要是查询几乎卡死对应操作无法执行。而这两条语句平时执行效率贼高理应不会出现这个问题那么根据最近做了啥操作判定肯定是因为开启附加日志引起的。好的一点是开启附加日志的操作大概在15分钟内完成了为了快速恢复业务所以将对应PDB进行了重启操作
alter pluggable database pdb_xxx close immediate instancesall;
alter pluggable database pdb_xxx open instancesall;srvctl start service -db xxdbaas -s xxxdb2 为什么会这样
首先这里发生的问题很奇怪如果是开启附加日志引起的异常等待那么应该是所有PDB都会受到影响然而受影响的只有一个PDB在网上和MOS查了一圈过后也没找到具体原因只能开个SR问问上传了标准3件套AWR报表、ASH、tfactl收集的文件之后后台也很快给了答复 根据Alter Database Add Supplemental Log Data Hangs (Doc ID 406498.1)启用Supplemental Log 这个会让所有cursor cache 里的cursor失效这个应该是导致这些SQL再次执行时候等待latch: cache buffers chains 的原因通常来讲 这个等待应该不会很长时间并且这么多会话同时等待除非sql 性能很差这个目前在您的环境中看不出来因为在同一sample 里很多会话执行同一sql并且blocker是不同的。这个应该是正常的 只是在增加supplemental log data 过程中很大概率遇到的一个情况。 这个问题也是我第一次遇到因为附加日志开启造成的大量等待也算是吃一堑长一智以后所有数据库操作还是申请一个高级别的割接操作割接期间任何影响就有据可依。这里也可以看到一体机会给一些性能不大好的SQL带来一些幻觉因为跑的很快另一方面即是强如Exadata也不能在稍有异常的情况下跑出非凡性能。最终还好业务侧把出问题时间的坑给填了不说了看语句优化去了。
3 你以为就完了
数据库的性能问题确实是解决了但是还得去PDB里面开全列附加日志因为要从ADG备库拉取数据而备库用于日志存储的磁盘组空间很小因此该国产数据库技术人员提供了下面的语句来开启需要同步的对应表的全列统计信息
DECLAREsqltest VARCHAR2(200;);
BEGINFOR t IN (SELECT table_name FROM all_tables WHERE owner XXXX))LOOPSqltest : ALTER TABLE ||t.table_name||ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;EXECUTE IMMEDIATE sqltest;;DBMS_OUTPUT.PUT_LINE(sqltest;);END LOOP;;
END;;这里吐槽以下几点
loop查一条拼接一条执行一条这效率有点低变量大小写问题主要是看着烦作为DBA不干预业务用户账号密码那我肯定得用高权限用户去执行那么只不是缺了个schema拼接内容ADD前面少了一个空格尴尬症还是强迫症抑或都给整出来了
总结
老规矩知道写了些啥