oracle ogg同步到kafka不抓数据,重启ogg报错
来源:互联网 发布:福彩快3网络关注正规吗 编辑:程序博客网 时间:2024/05/16 09:57
ERROR OGG-02077 Extract encountered a read error in the asynchronous reader thread and is abending: Error code 4031, error message: ORA-04031: unable to allocate bytes of shared memory ("","","","").
查看oracle alert日志
Errors in file /opt/app/oracle/diag/rdbms/bdfn/BDFN/trace/BDFN_ms01_4186.trc:
ORA-04031: unable to allocate 536 bytes of shared memory ("streams pool","unknown object","Logminer LCR c","krvxbmtx")
LOGMINER: session#=1 (OGG$CAP_KFK_E001), builder MS01 pid=58 OS id=4186 sid=705 stopped
Errors in file /opt/app/oracle/diag/rdbms/bdfn/BDFN/trace/BDFN_ms03_4194.trc:
ORA-04031: unable to allocate 664 bytes of shared memory ("streams pool","unknown object","Logminer LCR c","krvuinl")
Errors in file /opt/app/oracle/diag/rdbms/bdfn/BDFN/trace/BDFN_ms02_4190.trc:
这里注意ogg从oracle抽取的数据都会进入内存streams pool,然而此时BDFN的oracle数据库是默认streams pool 256M(Streams Pool --- 10g 以后才有,和expdp原理一样)
原因分析
BDFN的oracle数据库上面的ogg的replica进程和dg的mining数据库进程,撑满了streams pool内存,导致内存不够ogg出现无法抓数据,然后进程没有报错的“假活”状态,关闭重启就会报streams pool相关联的shared memory不能分配问题。
深度追究
这里数据库设置了大页管理,这个设置是不允许动态管理sga
SQL> show parameter memory
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
hi_shared_memory_address integer
0
memory_max_target big integer
0
memory_target big integer
0
shared_memory_address integer
0
这里没有设置内存管理,MEMORY_MAX_TARGET参数包含两部分内存,一个System global area (SGA),另一个system global area(PGA)
SQL> show parameter sga
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
lock_sga boolean
FALSE
pre_page_sga boolean
FALSE
sga_max_size big integer
18G
sga_target big integer
18G
查看Streams Pool 内存大小
SQL> show parameter streams
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
streams_pool_size big integer
448M
我们看看他的大页设置大小
root@bd-prd-sdb-12:~#cat /proc/meminfo |grep Huge
AnonHugePages: 284672 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
说明:(重启数据库过程中不断执行;cat /proc/meminfo |grep Huge,能看到HugePages_Free:的数量不断减少,说明大页正在被使用。)
其实动态管理sga,是不太好的是需要锁内存的,在数据缓冲(Buffer Cache)和sql解析共享池(Shared Pool),在Buffer Cache和Shared Pool(对数据库性能影响很大)互相调整的时候,尤其是例如当Buffer Cache为10G然而Shared Pool是4G现在由于数据量很大Buffer Cache不够需要征用1G的Shared Pool,此时会锁Shared Pool内存(此时无法写数据进去,也无法使用其进行sql解析),所以导致数据库变慢。
这里的处理办法是修改其大小
SQL> alter system set streams_pool_size=1024M scope=both;
System altered.
注意如果设置了动态管理内存
SQL> show parameter streams
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
streams_pool_size big integer
0
此时 streams_pool_size 初始值为0,以后会自动分配内存
特殊情况,此种情况没有设置内存自动管理,并规定sga的大小
SQL> alter system set streams_pool_size=1024M scope=both;
alter system set streams_pool_size=1204M scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-04033: Insufficient memory to grow pool
全都报错,无效的数值,后续测试发现该参数通过在线调整不行,但是写入spfile中重启数据库却可以生效,不知道算不算是命中BUG
由于客户的数据库不能随时停机,考虑到该问题,我们在中午业务空闲时段手工resize了db_cache_size的大小通过alter system set db_cache_size=8G
将db_cache_size的最小值从之前的30Gresize到了7G
SQL> alter system set db_cache_size=7G;
System altered.
SQL> alter system set streams_pool_size=1024M;
System altered.
启动ogg成功,然后又出现一个进程死掉,接着上面的问题再次出现了。
内存再次被吃完,其实根本原因在ogg,我们需要对ogg占用sga进行控制
GGSCI (bd-prd-sdb-12) 12> view params rp1
REPLICAT RP1
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
DBOPTIONS INTEGRATEDPARAMS(max_sga_size 6000,parallelism 6)
DBOPTIONS NOSUPPRESSTRIGGERS
USERIDALIAS BDFN
DDLERROR DEFAULT IGNORE RETRYOP
--ASSUMETARGETDEFS
--HANDLECOLLISIONS
BATCHSQL BATCHESPERQUEUE 200, OPSPERBATCH 10000
MAP bigdt.*, TARGET bigdt.*;
这里的DBOPTIONS INTEGRATEDPARAMS(max_sga_size 6000,parallelism 6)必须小于等于streams_pool_size的值
0 0
- oracle ogg同步到kafka不抓数据,重启ogg报错
- ogg 同步SQLServer到Oracle
- 使用ogg同步数据给kafka
- ogg同步mysql(mariadb5.5)数据到oracle
- OGG同步数据方法
- OGG报错:ERROR OGG-01028解决办法
- OGG-01031报错
- 【Oracle】Oracle到PostgreSQL的OGG同步配置
- 【GoldenGate】使用OGG,两个Oracle库之间单向同步数据
- 基于OGG Datahub插件将Oracle数据同步上云
- 【OGG】SqlServer同步源端增加trandata报错解决
- oracle 11.2.0.4 ogg 12.3.0.1.0备库rep进程启动报错OGG-00446
- Oracle OGG
- ogg高版本到低版本同步
- 处理ogg恢复进程报错ERROR OGG-01161
- ogg
- OGG
- ogg
- 二叉树的递归和非递归实现---建树前序中序后续
- iOS--异常处理
- 欢迎使用CSDN-markdown编辑器lalala
- 2023 求平均成绩
- 【数论】CF#364 div.2 B.Cells Not Under Attack
- oracle ogg同步到kafka不抓数据,重启ogg报错
- Python [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
- drawable动画以及ConterView
- sql语句增加、查找、更新存储过程(包括后台.net 调用)
- ios 去除字符串首尾空格、换行
- SNMP学习 SNMPv3 VACM(视图访问控制模型)
- 悲惨的卸载学校官网上VC6的故事
- CSS 中加号选择器的使用
- 下载动态页面中的内容