本文主要是介绍ORA-01173: data dictionary indicates missing data file from system tablespace,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:
重建控制文件后,启动数据库时报错:
Errors in file /home/oracle/app/diag/rdbms/sptdb/sptdb/trace/sptdb_ora_10222.trc:
ORA-01173: data dictionary indicates missing data file from system tablespace
Errors in file /home/oracle/app/diag/rdbms/sptdb/sptdb/trace/sptdb_ora_10222.trc:
ORA-01173: data dictionary indicates missing data file from system tablespace
Error 1173 happened during db open, shutting down database
USER (ospid: 10222): terminating the instance due to error 1173
原因:
错误直译就是:数据字典表示系统表空间中缺少数据文件。
重建控制文件时,报错 undo01.dbf 文件找不到,经询问实施人员,确认了,在移动数据文件时,该数据文件损坏,于是手动删除该数据文件。
解决方式
1.获取字典表中记录的 undo 回滚段信息
strings system01.dbf |grep "_SYSSMU" > tiaoguoduan.log
抓取了 1400多个回滚段。
2.调整过滤是上述抓取的回滚段信息
利用 notepad 调整了格式,只保留 "_SYSSMU17_4173556989 " 这 种 格 式 , " 这种格式, "这种格式, 后的多余字符删除,再用 excel 去重后只剩下 40 多个回滚段。
3.创建 pfile 文件并添加隐含参数跳过 undo 回滚段
--创建 pfile 文件
create pfile='/home/oracle/pfile0907.ora' from spfile;--向 pfile 文件中追加如下参数,_CORRUPTED_ROLLBACK_SEGMENTS 为上述查到的回滚段信息。
undo_management='manual'
_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU17_4173556989$,_SYSSMU16_2584280207$,_SYSSMU15_1699474804$,_SYSSMU14_3768027656$,_SYSSMU13_510137110$,_SYSSMU12_3989821048$,_SYSSMU11_2721915459$,_SYSSMU10_837054157$,_SYSSMU9_2948696585$,_SYSSMU8_3135593751$,_SYSSMU7_3476862604$,_SYSSMU6_3690170040$,_SYSSMU5_66821505$,_SYSSMU4_2044410849$,_SYSSMU3_3901155021$,_SYSSMU2_4002485301$,_SYSSMU1_4202636065$,_SYSSMU24_2245458197$,_SYSSMU23_162810300$,_SYSSMU22_1570951004$,_SYSSMU21_3315563218$,_SYSSMU20_1223117992$,_SYSSMU19_722096024$,_SYSSMU18_2219460130$,_SYSSMU46_4140899882$,_SYSSMU44_2144347157$,_SYSSMU43_1488209924$,_SYSSMU42_3769635648$,_SYSSMU41_1972138906$,_SYSSMU40_280517513$,_SYSSMU39_3656336207$,_SYSSMU38_2656060341$,_SYSSMU37_3828108911$,_SYSSMU36_1380934893$,_SYSSMU35_1933170991$,_SYSSMU34_3395220115$,_SYSSMU33_1848968438$,_SYSSMU32_10438569$,_SYSSMU31_3478930262$,_SYSSMU30_1389390591$,_SYSSMU28_1870552265$,_SYSSMU27_4223731671$,_SYSSMU26_2516774973$,_SYSSMU29_4291552864$,_SYSSMU45_1021970280$,_SYSSMU47_2139578935$,_SYSSMU48_1004097328$,_SYSSMU25_633270219$)
4.用新改的 pfile 文件重启数据库
startup pfile='/home/oracle/pfile0907.ora'
5.重建 undo 表空间
create undo tablespace "UNDOTBS2" datafile '/main/oracle/capture_adaptor/undotbs2_01' size 10m autoextend on;
6.复制并修改 pfile 文件,再用新改的 pfile 文件启动数据库
cp /home/oracle/pfile0907.ora /home/oracle/pfile.ora--去掉上述增加的两个参数,追加如下参数,undo_tablespace 为步骤5新建的 undo 表空间名
undo_management='auto'
undo_tablespace='UNDOTBS2'--启动数据库
startup pfile='/home/oracle/pfile.ora'
7.重建spfile,重启库
create spfile from pfile='/home/oracle/pfile.ora';shu immediate
startup
8.业务验证数据
这篇关于ORA-01173: data dictionary indicates missing data file from system tablespace的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!