OGG-集成模式抽取与数据库参数streams_pool_size关系
一、学习目标
Oracle数据库,使用OGG集成模式抽取进程启动时,如果没有配置合理的streams_pool_size参数可能会过一段时间就报错abend!
那么我们如何配置这个参数的大小?如何计算?
二、参考文档
从OGG官网检索这个DB参数,没有看到合理的建议信息!
2.1 MOS
OGG-02045: Database does not have streams_pool_size initialization parameter configured. The database initialization parameter streams_pool_size is not set correctly to support integrated capture. Set database initialization parameter streams_pool_size. For sizing recommendations, see the Oracle GoldenGate reference
documentation. Integrated Extract / Replicat and STREAMS_POOL_SIZE (Doc ID 2078459.1) Oracle GoldenGate - Version 11.2.1.0.0 and later GOAL What is the recommended STREAMS_POOL_SIZE for Integrated Extract (IE) and Integrated Replicat (IR) SOLUTION The ogg reference guide recommends to have 1GB STREAMS_POOL_SIZE per integrated extract + additional 25 percent Snippet from ogg oracle install guide http://docs.oracle.com/goldengate/1212/gg-winux/GIORA.pdf ------------------------------------------------------ By default, one integrated capture Extract requests the logmining server to run with MAX_SGA_SIZE of 1GB and a
PARALLELISM of 2. Thus, if you are running three Extracts in integrated capture mode in the same database instance,
you need at least 3 GB of memory allocated to the Streams pool. As best practice, keep 25 percent of the Streams pool available.
For example, if there are three Extracts in integrated capture mode, set STREAMS_POOL_SIZE to the following: 3 GB + (3 GB * 0.25) = 3.75 GB --------------------------------------- The Integrated replicat also needs to have 1GB STREAMS_POOL_SIZE per process and additional 25 percent though it
is not been explicitly mentioned in the guides. 推荐集成捕获进程数量+ 集成捕获数量*0.25, 默认1个进程1G!
2.2 相关文档
https://www.oracle-scn.com/memory-requirement-for-oracle-goldengate-integrated-extract/
1. OGG集成模式与数据库内存区域streams_pool_size之间的关系 集成模式的情况下,是从streams_pool中申请内存区域,Streams_pool是Oracle SGA内存的一个组件,streams_pool中,
申请的内存大小取决于有多少个integrated extract的进程数量,以及考虑其它的进程! 2.抽取进程参数 TRANLOGOPTIONS INTEGRATEDPARAMS(max_sga_size 100, parallelism 1) 上述参数中,max_sga_size 代表的是streams pool size 的大小! 非db 参数sga_max_size 3.DB参数streams_pool_size 调整多大? 1> streams_pool_size >1g,则ogg 占用的max_sga_size=1g; 如果streams_pool_size <=1g,则ogg 占用的max_sga_size = streams_pool_size*75%; 2> 默认没设置streams_pool_size 参数大小!则max_sga_size(streams size)占用shared_pool_size 10%,最大1G, 因此!需要考虑shared pool大小! 3> 使用动态SGA,则可以通过查询视图v$sga_dynamic_components获取streams_pool的使用情况!
2.3 相关报错
OGG-02050 Not enough database memory to honor requested MAX_SGA_SIZE OGG-02077: Extract encountered a read error in the asynchronous reader thread and is abending: {0}
三、小结
建议使用集成模式抽取的情况下,设置数据库参数
STREAMS_POOL_SIZE ,参数大小= 抽取进程的数量*1G +抽取进程数量*1G*0.25
(1G代表分配给每个抽取进程的内存,25%是给每个抽取进程streams size 考虑的空闲空间)
另外就是文档中的各种举例都是写的是集成抽取,集成复制方面并没明确说明! 但是MOS文档的包含范围加上了集成复制!
因此站在安全的角度也是考虑同样的分配! 当然如果系统不是特别重要,很多细节可以忽略,报错在处理也是一样的。