我正在研究自适应压缩。我似乎找不到任何关于在压缩表然后重新组织时 HADR 受到影响的信息:编辑。例子
t=mytable
db2 "alter table $t compress yes adaptive";
for i in $(db2 -x "select rtrim(indschema) || '.' || rtrim(indname) from syscat.indexes where rtrim(tabschema) || '.' || rtrim(tabname) = '${t}' order by 1"); do
db2 "alter index $i compress yes"
done
db2 "reorg table $t resetdictionary";
db2 "reorg indexes all for table $t"
db2 "runstats on table $t with distribution and sampled detailed indexes all";
问题是我是否需要在此过程中关闭 HADR 并在完成后重新启动它,还是在日志中捕获所有内容,以便 HADR 可以继续?
联机和脱机重组都会被记录并因此由 HADR复制。通过停止 HADR,您只会让备用数据库落后于主要数据库,这将在您重新启动 HADR 时导致流量激增(以及备用数据库上的潜在日志空间问题)。如果您在正常运行期间没有遇到网络拥塞,那么在重组期间没有理由停止 HADR。如果这样做,请考虑删除备用数据库并
REORG
在主数据库上的 s 完成后重新重建它。您必须了解logindexbuild 数据库参数设置及其对重放离线 REORG 操作后备用数据库索引维护的影响(每个表也具有相同含义的属性)。
如果
COALESCE(logindexbuild_table_attribute, logindexbuild_db_parameter) == OFF
对于一个表,并且您离线重组了该表,那么所有表索引在备用数据库上都被标记为无效,并且必须在备用数据库变为主数据库时在那里重建。这样的重建是自动完成的,但它可能需要一些时间并且可能不适合特别是对于大型表。您不应该在脱机表 REORG 之后对主表索引进行 REORG - 它是在表重组过程的最后阶段自动完成的。
您可以考虑暂时停用 HADR,但这与日志记录的完整性无关。重放大型离线重组操作可能会导致 HADR 拥塞,这可能会阻塞主节点上的其他事务。如果您在对主节点执行此类操作之前停用备用节点,您可能会避免这种拥塞,但您可能会在发生灾难时丢失事务。