解决SYSTEM表空间文件坏块的方法是导出全库数据,删除数据库,重建数据库,导入全库数据。具体的操纵步骤,经过讨论,见如下:主要是考虑到优化可以在线进行,也需要在线进行,还考虑到优化的万一出错性,既便出错至少还可以恢复到原始状态,如果优化没有成功,再做导出导入也不能恢复到初始状态。
所以就先做导出导入工作再做优化处理。步骤是:
1。 导出整个数据库(数据库在线),参考命令:exp system/manager file=/oraclebak/unicomdbfull。dmp full=Y log=/oraclebak/unicomfull。
log
2。 备份配置文件 cp $ORACLE_HOME/dbs/* /Oraclebak,记录数据库名及实例名,参考字典视图V$DATABASE,V$INSTANCE
3。 删除数据库DBCA(/u02/app/oracle/product/9。
2。0。1/bin/dbca)图形化配置工具。注意:建议不要删除数据文件、重做日志文件和控制文件以及归档日志文件,处理方法是:一)就数据文件、重做日志文件和控制文件分别改名为xxx。bak。xxx文件,例如mv datafile001。dbf datafile001。
bak。dbf ;二)就归档日志文件,只改名归档日志文件所在的目录名即可,例如mv archivedir archivedirbak。要参考的数据字典视图有V$DATAFILE、V$LOGFILE、V$CONTROLFILE和archive log list 参数
4。
重建数据库DBCA(/u02/app/oracle/product/9。2。0。1/bin/dbca)图形化配置工具,
5。 导入整个数据库,imp system/unicom@unicom full=y ignore=y file=xxx。
dmp log=yyy。log
6。 启动数据库,严格测试。
dbv file= /u02/app/oracle/oradata/unicom/system01。dbf blocksize=8192检查还有没有坏块。
7。 使用3。2SQL脚本检查表空间情况。
全部