【分享一下】 由备份引起的临时表空间不足
今天客户反应,数据库分片表特别慢,后来查看日志发现总是再报tmpdbs03 is full的错误,部分临时表索引无法创建,影响到数据。
使用命令 onstat -g pqs |sort -nk5 (这个命令我也不太了解,有了解的大神帮忙详细介绍一下啊)查看排在最下面的会话,也没有大的数据扫描,理论上应该不会占完8个G的临时表空间。
dbaccess sysmaster -
Select trim(n.dbsname) tab_type, trim(n.owner) users, trim(n.tabname) tab_name,
dbinfo('UTC_TO_DATETIME',i.ti_created) index_createtime, trim(dbinfo('DBSPACE', i.ti_partnum)) dbspace, format_units(i.ti_nptotal,i.ti_pagesize) total_size, i.ti_nrows
FROM sysmaster:systabnames n, sysmaster:systabinfo i
WHERE (sysmaster:bitval(i.ti_flags, 32) = 1 OR sysmaster:bitval(i.ti_flags, 64) = 1
OR sysmaster:bitval(i.ti_flags, 128) = 1) AND i.ti_partnum = n.partnum
order by 1,3
执行查看个临时表空间的使用情况。
分析发现
tab_type BEFIMAGE
users informix
tab_name th_rpmdbs01_1 (这个是什么意思,我也不太清楚,希望知道的朋友指点一下啊)
index_createtime 2013-04-10 10:28:48
dvsoace tmpdbs03
total_size 6.58G
ti_nrows 0
后查找“BEFIMAGE” 看到论坛liao神讲过
在备份的时候,数据库会在tempdbs中生成BEFIMAGE这样的空间,用于保存自备份开始以来的事务操作前映像,目的是为了保证备份时间点的一致性
停掉备份程序后,临时表空间得以释放,业务恢复正常。
本着知识共享的原则,无私奉献一下今日的收获。正好压点下班~