前景:业务人员反应plsql登录有问题,业务连接不上,查看数据库日志,发现有坏块。
数据库版本:11.2.0.4 三节点RAC
操作系统AIX 6.1
查看数据库日志,有如下报错:
Block recovery completed at rba 1277633.349990.16, scn 5758.1369332968
ORACLE Instance tucom2 (pid = 30) - Error 607 encountered while recovering transaction (268, 25) on object 20983857.
Errors in file /oracle/app/oracle/diag/rdbms/tucom/tucom2/trace/tucom2_smon_5242914.trc:
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [kdBlkCheckError], [1941], [2478275], [6101], [], [], [], [], [], [], [], []
Sat Jan 01 11:25:06 2022
Sweep [inc][2841916]: completed
Sweep [inc2][2841916]: completed
Sat Jan 01 11:25:18 2022
Corrupt Block Found
TSN = 131, TSNAME = ODS_33
RFN = 918, BLK = 2478275, RDBA = -442117949
OBJN = 20983857, OBJD = 20983857, OBJECT = ODS_RH_CB_TS_B_BILL_D_TT, SUBOBJECT = PART202112_SUBPART_31
SEGMENT OWNER = ODS, SEGMENT TYPE = Table Subpartition
首先想到的是rman recover,数据库的备份只单独备份的几个表空间,没有这个表空间的备份,不能使用rman 来恢复(备份的重要性..),这个子分区向应用询问过了,可以truncate掉,由于smon一直进行recover,导致三个节点数据库再不停的重启。于是直接趁数据库刚起来,试试能否在下次重启之前trauncte掉这个子分区。
SQL> ALTER TABLE ODS.ODS_RH_CB_TS_B_BILL_D_TT TRUNCATE subPARTITION PART202112_SUBPART_31 ;
ALTER TABLE ODS.ODS_RH_CB_TS_B_BILL_D_TT TRUNCATE subPARTITION PART202112_SUBPART_31
ERROR at line 1: