ORA-01578: Oracle data block corrupted (file #, block #)(Oracle 数据块损坏(文件号,块号))
Oracle含义
指定数据文件中的某个数据块已损坏;Oracle 报告该块未通过一致性检查(校验和)。这属于物理损坏。
原因
磁盘/硬件故障、存储层错误、操作系统或控制器问题、断电后部分写入的块,或备份/恢复本身已损坏。
解决方法
确认损坏及其范围:RMAN> VALIDATE DATABASE / VALIDATE CHECK LOGICAL DATAFILE n;同时运行 DBVERIFY(dbv)并检查 v$database_block_corruption。如果有备份,进行块级恢复:RMAN> RECOVER DATAFILE n BLOCK m;或针对所有列出的块:RMAN> RECOVER CORRUPTION LIST;(旧的 BLOCKRECOVER 命令自 11g 起已弃用)。如果是索引块,重建索引。务必检查硬件/磁盘健康状况;根本原因通常在存储。
同一数据库的其他条目
- ORA-01000Maximum open cursors exceeded(超出打开游标的最大数)
- ORA-00018Maximum number of sessions exceeded(超出最大会话数)
- ORA-28000The account is locked(账户已锁定)
- ORA-01722Invalid number(无效数字)
- ORA-02049Timeout: distributed transaction waiting for lock(超时:分布式事务正在等待锁)
- enq: TX - row lock contention等待:会话被另一事务持有的行级锁阻塞
- log file sync等待:会话在提交时等待 LGWR 将 redo 刷新到磁盘