清理归档日志文件
2025 年 2 月 12 日PD RGY 配置失败
2025 年 2 月 19 日将400G的enrole_indexes表空间缩减到200G左右:
1. 查看表空间详细信息
首先,查看当前表空间的详细信息,了解当前的使用情况和配置。
db2 “LIST TABLESPACES SHOW DETAIL”
2. 增加日志文件大小
由于isimuser.AUDIT_EVENT表有数以亿计的记录和8个索引,重组织操作可能会占用大量日志空间。因此,需要先增加日志文件的大小,并扩充归档日志对应目录的磁盘空间。
db2 “UPDATE DB CFG USING LOGFILSIZ 512000”
db2 “UPDATE DB CFG USING LOGPRIMARY 50”
db2 “UPDATE DB CFG USING LOGSECOND 200”
- 说明:LOGFILSIZ设置为512000,单位是4K,表示每个日志文件的大小为2000MB。
- LOGPRIMARY和LOGSECOND相加不能超过256
3. 执行索引重组织
接下来,执行索引重组织操作,以优化索引结构并释放空间。
db2 “reorg indexes all for table isimuser.AUDIT_EVENT allow write access cleanup”
db2 “reorg indexes all for table isimuser.AUDIT_EVENT allow write access reclaim extents”
- 说明:
- allow write access表示在重组织过程中允许对表进行读写操作,减少对业务的影响。
- cleanup和reclaim extents选项用于清理和回收索引占用的空间。
4. 监控重组织进度
在重组织过程中,可以使用db2pd工具监控进度。
db2pd -d isimdb -reorgs index
- 说明:db2pd工具可以实时显示重组织操作的进度和状态。
5. 缩减表空间大小
在索引重组织完成后,执行表空间缩减操作。
db2 “ALTER TABLESPACE enrole_indexes REDUCE (FILE ‘/opt/isimdb/db2inst1/NODE0000/SQL00001/enrole_indexes’ 6000000)”
- 说明:
- 6000000表示目标大小为6000000页。数据库页配置为32KB,6000000*32KB=200G。
- 如果提示SQL20170N There is not enough space in the table space “ENROLE_INDEXES” for the specified action. Reason code = “1”. SQLSTATE=57059说明目标无法实现,可以尝试进一步减少目标大小,避免因空间不足导致操作失败。
6. 验证操作结果
最后,再次查看表空间的详细信息,确认缩减操作成功。
db2 “LIST TABLESPACES SHOW DETAIL”
Tablespace ID = 4
Name = ENROLE_INDEXES
Type = Database managed space
Contents = All permanent data. Regular table space.
State = 0x0000
Detailed explanation:
Normal
Total pages = 6835072
Useable pages = 6835040
Used pages = 3104128
Free pages = 3730912
High water mark (pages) = 3104128
Page size (bytes) = 32768
Extent size (pages) = 32
Prefetch size (pages) = 32
Number of containers = 1
总结
通过以上步骤,可以有效地将400G的enrole_indexes表空间缩减到200G左右。以下是关键点:
- 查看表空间详细信息:了解当前状态。
- 增加日志文件大小:确保有足够的日志空间。
- 执行索引重组织:优化索引结构并释放空间。
- 监控重组织进度:确保操作顺利进行。
- 缩减表空间大小:最终实现表空间的缩减。
- 验证操作结果:确认缩减操作成功。
如果在执行过程中遇到任何问题,可以参考db2diag.log中的错误信息进行排查。