问题:启动数据库报错,坏块
ORA-01578: ORACLE data block corrupted (file # 3, block # 395885)
ORA-01110: data file 3: '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
1、查看回滚段(因为数据库已经无法启动,无法查到回滚段,找的相同的镜像查询的结果)
SQL> select * from v$rollname;
USN NAME---------- ------------------------------
0 SYSTEM
1 _SYSSMU1_3724004606$
2 _SYSSMU2_2996391332$
3 _SYSSMU3_1723003836$
4 _SYSSMU4_1254879796$
5 _SYSSMU5_898567397$
6 _SYSSMU6_1263032392$
7 _SYSSMU7_2070203016$
8 _SYSSMU8_517538920$
9 _SYSSMU9_1650507775$
10 _SYSSMU10_1197734989$
2、修改pfile文件
sql>create pfile='/home/oracle/initorcl.ora' from spfile
添加以下内容 (跳过undo回滚段检测)
*.undo_management=manual
*._allow_resetlogs_corruption=true
*._corrupted_rollback_segments=('_SYSSMU1_3724004606$','_SYSSMU2_2996391332$','_SYSSMU3_1723003836$','_SYSSMU4_1254879796$','_SYSSMU5_898567397$','_SYSSMU6_1263032392$','_SYSSMU7_2070203016$','_SYSSMU8_517538920$','_SYSSMU9_1650507775$','_SYSSMU10_1197734989$')
3、通过pfile启动数据库,并创建新的undo表空间
sql>startup pfile='/home/oracle/initorcl.ora'
sql>create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/orcl/undotbs02.dbf' size 100M reuse AUTOEXTEND ON;
sql>shutdown immediate
4、修改pfile文件,将undo表空间指定到undotbs2
*.undo_tablespace='UNDOTBS2'
5、删除undotbs1
SQL>startup pfile='/home/oracle/initorcl.ora'
SQL>alter tablespace undotbs1 offline normal;
SQL>drop tablespace UNDOTBS1 including contents and datafiles;
SQL>shutdown immediate
6、注释掉添加的参数
sql>startup pfile='/home/oracle/initorcl.ora'
sql>create spfile from pfile