我为我的企业经理提供了一个Oracle 12c数据库。
由于数据库已关闭,因此无法连接到企业经理。
我打开了听众。但是,数据库仍然是挂载模式。当我想在读和写模式下打开数据库时,我会得到如下错误:
SQL> alter database open;第1行错误: ORA-00313:打开失败的日志组3的成员的线程1或00312:在线日志3线程1:'/path/ of /redo/redo03.log‘ORA-27037:无法获得文件状态Linux-x86_64错误: 2:没有这样的文件或目录附加信息:3
当我转到redo03的文件位置时,没有redo03。
所以这是合乎逻辑的,但不是物理上的。
有一些疑问和结果:
SQL> col member format a50
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------
3 ONLINE /path/of/redo/redo03.log
2 ONLINE /path/of/redo/redo02.log
1 ONLINE /path/of/redo/redo01.log
4 ONLINE /path/of/redo/redo04.log
SQL> select group#, thread#, sequence#, bytes/1024/1024, members, status from v$log;
GROUP# THREAD# SEQUENCE# BYTES/1024/1024 MEMBERS STATUS
---------- ---------- ---------- --------------- ---------- ----------------
1 1 61525 50 1 INACTIVE
4 1 0 50 1 UNUSED
3 1 61527 50 1 CURRENT
2 1 61526 50 1 INACTIVE我试过这样做:创建重做组4,删除重做组3,重新创建重做组3。
创建redo组4没有问题。我使用了以下命令:
alter database add logfile thread 1 group 4 '/path/of/redo/redo04.log' size 50m;但是,当我想删除第3组时,它会产生如下错误:
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE DROP LOGFILE GROUP 3
*第1行错误: ORA-01623: log 3是当前日志,例如dbname (线程1) -不能删除ORA-00312:联机日志3线程1:'/path/of/redo/redo03.log‘
我想尝试禁用redo组连接到的线程,然后要删除redo组3。但是它会出现以下错误:
SQL> select thread#, status, enabled from v$thread;
THREAD# STATUS ENABLED
---------- ------ --------
1 OPEN PUBLIC
SQL> alter database disable thread 1;
alter database disable thread 1
*第1行错误: ORA-01109:数据库未打开
当我试图切换日志文件时,它会出现如下错误:
SQL> alter system switch logfile;
alter system switch logfile
*第1行错误: ORA-01109:数据库未打开
我试图清除并删除日志文件组。它给出了如下错误:
SQL> alter database clear unarchived logfile group 3;
alter database clear unarchived logfile group 3
*第1行中的错误: ORA-01624:实例dbname (线程1) ORA-00312:联机日志3线程1:'/path/ of /redo/redo03.log‘的崩溃恢复所需的日志3
我试着恢复数据库,然后用下面的命令打开:
rman taget /
recover database;使用频道ORA_DISK_1启动媒体恢复RMAN-08187:警告:媒体恢复直到SCN 完成在09-7月20日完成恢复
exit;
sqlplus / as sysdba
SQL> alter database open resetlogs;
alter database open resetlogs
*第1行中的错误: ORA-01194: file 1需要更多恢复以保持一致ORA-01110:数据文件1:'/path/of/ file /system01.dbf‘
exit;
rman target /
recover datafile 1;使用目标数据库控制文件启动恢复,而不是恢复目录分配的通道:===========================================================通道ORA_DISK_1:启动媒体恢复媒体恢复的SID=设备type=DISK启动媒体恢复失败RMAN-00571:=============== RMAN-00569:===============错误消息堆栈遵循=============== RMAN-00571:=========================================================== RMAN-03002: ORA -00283中的恢复命令失败:由于RMAN-11003错误而取消的恢复会话:在解析/执行SQL语句期间失败:如果需要,则更改数据库恢复1 ORA-00283:由于出错而取消恢复会话-00313:为线程1或00312的日志组3成员打开失败:在线日志3线程1:'/path/ of / file /redo03.log‘ORA-27037:无法获得文件状态Linux-x86_64错误: 2:没有此类文件或目录附加信息:3
因此,在逻辑上有一个重做组3,但是没有物理文件。我确信没有人删除该文件,因为我使用linux系统上的历史命令检查了该文件。我无法打开数据库,因为重做组3找不到。我不能登录文件开关,我不能禁用标题,我不能删除重做组3并重新创建它。你能帮个忙吗?
诚挚的问候,
发布于 2020-07-09 13:29:54
..。有一个逻辑上的重做组3,但是没有物理文件。
不是个好地方。
我确信没有人删除该文件,因为我使用linux系统上的历史命令检查了该文件。
然而,这里有一个缺少的文件,Oracle以前已经将重做数据写入其中,实际上,为了将实例恢复作为启动的一部分,它要求返回。显然,你并不是唯一一个可以“访问”这个数据库的人。
尝试打开数据库并重置联机重做日志。
从骑行状态:
alter database open resetlogs ; Oracle应该为自己重新创建丢失的重做日志文件。
发布于 2020-07-09 15:23:13
我确信没有人删除该文件,因为我使用linux系统上的历史命令检查了该文件。
这并不能保证任何事情。
您丢失了当前日志文件组。您可以在这里找到恢复的步骤:
具体而言,本部分:
Losing一个活动的在线重做日志组
请记住,这需要对数据库进行备份。
https://dba.stackexchange.com/questions/270674
复制相似问题