这是这个问题的后续。
首先让我说,我不是一个DBA,所以我真的很失落。
几个星期前,我们失去了与我们的一个SID'S的联系。 所有其他服务正在工作,但这一个特别是不是。
试图连接时,我们得到了这条消息
ORA-01033:ORACLE初始化或关机正在进行中
试图alter database open结束了
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file ORA-01110: data file 6: '/u01/app/oracle/oradata/xxx/xxx_data.dbf'
我试图closures/重新启动数据库,但得到这个消息。
Total System Global Area 566231040 bytes Fixed Size 1220604 bytes Variable Size 117440516 bytes Database Buffers 444596224 bytes Redo Buffers 2973696 bytes Database mounted. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file ORA-01110: data file 6: '/u01/app/oracle/oradata/xxx/xxx_data.dbf'
当所有这些都继续相同时,我删除了dbf文件(rm xxx_data.dbf xxx_index.dbf),并使用touch xxx_data.dbf重新创build它们。
我也尝试使用重新创build表空间
`CREATE TABLESPACE DATA DATAFILE XXX_DATA.DBF`
得到了
Database not open
正如我所说,我不知道这是多么糟糕,或者我有多less访问我的数据库(至less,这个SID,其他人正在工作)。
我可以想象,最后一个资源就是把所有东西都扔掉,然后重新创build,但是我不知道如何去做,而且我希望有一个不太具有破坏性的解决scheme。
任何帮助将不胜感激 。 提前致谢。
删除dbf文件几乎毁了你的数据库。 你将需要一些专家的帮助,希望能够使用现有的数据库。
您将需要从备份中恢复。 你有备份,对吧?
如果您没有备份,则需要从头开始重新创build数据库,并从另一个实例导入数据。
您可以尝试打开数据库的其余部分。 正如DCookie之前所说,删除文件(xxx_data.dbf xxx_index.dbf)严重损坏了您的数据库。 如果你没有任何备份,而且数据对你来说真的很重要,那么我只能强调一点,那就是不要再用这个系统来动手了,从甲骨文的专业服务中获得一些帮助。
如果您想自己尝试恢复,则可以将损坏的表空间脱机,然后从数据库的其余部分卸载数据。
export ORACLE_SID=<your_lost_SID> sqlplus /nolog conn / as sysdba startup mount select TABLESPACE_NAME , FILE# from v$datafile_header where FILE# = 6;
此时,您可以在数据库中查询损坏的表空间的名称。 现在我们正在脱机。 并开始数据库的其余部分。
alter database datafile '/u01/app/oracle/oradata/xxx/xxx_data.dbf' offline;
如果你得到像这样的东西:
ORA-01145: offline immediate disallowed unless media recovery enabled
您正在以noarchivelog模式运行数据库。 在这种情况下这真的很糟糕,你应该停下来寻求帮助! 现在不要再去了。 请! 只closures实例。 也许专家可以帮忙。
如果表空间处于脱机状态,则可以继续并使数据库的其余部分联机。
alter database open;
祝你好运!