我实际上是1023个32GB的数据文件, 也就是32T左右, 已经达到上限了.
image.png
那咋办呢?
第一反应是迁移表/表分区, 那迁哪张表呢? 也不知道啊....但是开发的说可能会使用.... 那就迁移表吧, 在线迁移还是锁表迁移? 在线迁移不锁表, 但是巨慢无比(迁1T左右大概20+小时), 锁表迁移好一点, 反正也没得人使用....(PS: 现在看来当时的做法欠妥, 应该优先恢复数据库使用, 所以应该先迁移一部分不常用的小表, 迁移小表是很快的. 业务恢复之后,再考虑那几张大表.)
等数据库起来之后, 业务也恢复正常了....并没有新的程序发布, 也不是新的业务, 所以中间件的问排除了, 看数据库awr 发现有个sql执行时间非常长.
用恩墨的sql10.sql查看该sql的执行计划, 发现选择了一个错误的执行计划....回顾一下, 本来是表空间不足的, 但是又无法扩表空间了, 处理不及时, 导致数据库重启了, 数据库重启后, 执行计划旧重新生成了, 但是统计信息不准, 导致生成的执行计划有问题, 于是又导致第二天用户使用卡