ORA-01157/无法连接到数据库

ORA-01157/无法连接到数据库

这是来自这个问题

首先我要说的是不是一个 DBA,所以我对此真的非常迷茫。

几周前,我们与其中一位 SID 失去了联系。所有其他服务均正常,但这项服务却无法使用。

当我们尝试连接时,我们收到了这条消息

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'

我尝试关闭/重新启动数据库,但收到此消息。

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

我还尝试使用重新创建表空间

`CREATE TABLESPACE DATA 
DATAFILE XXX_DATA.DBF`

并得到

Database not open

正如我所说的,我不知道这有多糟糕,或者我距离访问我的数据库还有多远(至少对于这个 SID,其他的都在运行)。

我可以想象最后的办法就是把所有东西扔掉,然后重新创造,但我不知道该怎么做,我希望有一个破坏性较小的解决方案。

任何帮助都将不胜感激。提前致谢。

答案1

删除 dbf 文件几乎会毁掉您的数据库。您需要一些专家的帮助才能使用现有数据库。

您需要从备份中恢复。您有备份,对吗?

如果您没有备份,那么您将需要从头开始重新创建数据库,并从另一个实例导入数据。

答案2

您可以尝试打开数据库的其余部分。正如 DCookie 之前所说,删除文件 (xxx_data.dbf xxx_index.dbf) 严重损坏了您的数据库。如果您没有任何备份,并且数据对您来说真的很重要,我只能强调不要再摆弄该系统并从 Oracle 专业服务中寻求帮助的重要性。

如果您想自己尝试恢复,您可以使损坏的表空间脱机,然后从数据库的其余部分卸载数据。

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 模式运行数据库。在这种情况下,这真的很糟糕,您应该在这里停下来并寻求帮助!现在不要再继续了。拜托!只需关闭实例即可。也许专家可以提供帮助。

如果表空间处于脱机状态,您可以继续并使数据库的其余部分联机。

alter database open;

祝你好运!

相关内容