当前位置:网站首页>Oracle RAC镜像恢复的单实例数据库Redo日志增量抽取报错: ORA-01291 & 删除日志组报错: ORA-01567
Oracle RAC镜像恢复的单实例数据库Redo日志增量抽取报错: ORA-01291 & 删除日志组报错: ORA-01567
2022-07-21 05:10:00 【sunny05296】
Oracle RAC镜像恢复的单实例数据库Redo日志增量抽取报错: ORA-01291 & 删除日志组报错: ORA-01567
今天碰到一个Oracle单实例数据库,是Oracle 12c RAC环境(2节点)克隆出来的一套单实例数据库,在进行Redo日志增量抽取时遇到报错:ORA-01291: missing logfile
结果查看日志组信息,发现是日志组还存在2个节点的原因导致的,排查过程及信息如下:
首先确认当前在哪个数据库中:
select sys_context ('USERENV', 'CON_NAME') from dual;
如果是在CDB中会返回CDB容器名(CDB$ROOT),可以继续执行下面命令查看pdb:select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
如果是在PDB中会返回 PDB容器名(例如:PDBORCL),切换容器可以用命令(alter session set container=容器名)
如果是在单实例数据库中会返回实例名(例如:ORCL)
查看当前日志组成员:
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_3_kdyz0m6q_.log
/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_2_kdyz0dq9_.log
/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_1_kdyz069k_.log
/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_4_kdyz0wo8_.log
/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_5_kdyz1634_.log
查看当前日志组状态:
SQL> select group#,members,bytes/1024/1024,status from v$log;
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------------------
1 1 256 INACTIVE
2 1 256 CURRENT
3 1 256 INACTIVE
GROUP# MEMBERS BYTES/1024/1024 STATUS
---------- ---------- --------------------------
4 1 256 INACTIVE
5 1 256 UNUSED
查看当前日志组的状态、完整信息(包括THREAD节点信息):
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ---------- ---------- ---------- ----------
1 1 28 268435456 512 1 YES INACTIVE 4.8522E+10 17-JUL-22 4.8522E+10 17-JUL-22 0
2 1 29 268435456 512 1 NO CURRENT 4.8522E+10 17-JUL-22 2.8147E+14 0
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ---------- ---------- ---------- ----------
3 1 27 268435456 512 1 YES INACTIVE 4.8522E+10 17-JUL-22 4.8522E+10 17-JUL-22 0
4 2 1 268435456 512 1 YES INACTIVE 4.8522E+10 14-JUL-22 4.8522E+10 14-JUL-22 0
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ---------- ---------- ---------- ----------
5 2 0 268435456 512 1 YES UNUSED 0 0 0
SQL>
也可以执行:
SQL> SELECT SEQUENCE# AS SEQ,FIRST_CHANGE#,NEXT_CHANGE#,STATUS,V$DATABASE.CURRENT_SCN,THREAD# FROM V$LOG OUTER JOIN V$DATABASE ON 1=1 ORDER BY SEQUENCE# DESC;
确定了 THREAD=2 (logfile group 4 和 logfile group 5)的日志组可以删除 (从Oracle RAC镜像过来的节点,节点2已结不在了)
通过单节点上进行日志文件切换时(alter system switch logfile;),只会在 logfile group 1、2、3 这三个日志组质检循环切换,
不会切换到4和5上,4和5对应的节点THREAD=2节点已不在了
尝试直接删除THREAD=2对应的日志文件组 4 和 5:
alter database drop logfile group 4;
alter database drop logfile group 5;
结果执行报错:
SQL> alter database drop logfile group 4;
alter database drop logfile group 4
*
ERROR at line 1:
ORA-01623: log 4 is current log for instance sjzy2 (thread 2) - cannot drop
ORA-00312: online log 4 thread 2:
'/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_4_kdyz0wo8_.log'
SQL> alter database drop logfile group 5;
alter database drop logfile group 5
*
ERROR at line 1:
ORA-01567: dropping log 5 would leave less than 2 log files for instance sjzy2
(thread 2)
ORA-00312: online log 5 thread 2:
'/data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_5_kdyz1634_.log'
删除时提示数据库实例的日志文件组不能少于2个,就剩2个的时候,无法删除了。这是Oracle Redo的机制,每个节点不能少于2个日志组,如果少于2个日志无法切换了。
解决方法很简单,直接把下线的节点2剔除掉(disable)、然后再删除对应的日志文件组:
alter database disable THREAD 2;
alter database drop logfile group 4;
alter database drop logfile group 5;
OK,删除成功了。
ls -l /data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_4_kdyz0wo8_.log
ls -l /data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_5_kdyz1634_.log
确认一下,如果日志文件没有自动删除,就手动删除掉
rm -rf /data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_4_kdyz0wo8_.log
rm -rf /data1/oradata121/datafile/sjzy/SJZY/onlinelog/o1_mf_5_kdyz1634_.log
再尝试重新Redo日志增量抽取,成功了,原来的报错问题也解决了。
边栏推荐
- Extract a subset from a point cloud
- It's annoying to have to write headlines
- Interpretation of pancake's IFO
- 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载Navicat
- SushiSwap的MasterChef解读
- Concurrent programming (XXIII) - thread interrupt mechanism
- 1-10000 daffodils
- 上榜 | Navicat 入选信通院发布《全球数据库产业图谱》
- Concurrent programming (XXV) - volatile and final principles
- Voting implementation of sushitoken
猜你喜欢
PCL runtime ucrtbased Exception thrown by DLL
Concurrent programming (19) -aqs of JUC
基于双数组实现Set功能(基于Solidity)
Concurrent programming (XXV) - volatile and final principles
Compile and run typescript with vscode plug-in coderunner. When the output has Chinese, there is garbled code
Solana account details
并发编程(三十一) - ReetrantReadWriteLock 读写锁原理
投票 | 选出您希望Navicat支持的数据库
易语言学习笔记(二)
tic-tac-toe
随机推荐
并发编程(二十四) - JMM之happens-before原则
Segmentation based on normal differentiation
Navicat 16 是否支持原生苹果 Silicon M1 芯片?| 苹果用户必读
learning opencv3_ 2-11_ Write AVI file
非讓寫標題,煩死惹
SQL 汇总数据
Easy language learning notes (III)
并发编程(二十六)-ReentrantLock应用
Pancake的IFO解读
Solana项目学习(二): Escrow
并发编程(二十七) - JUC之原子类
VMware出现“该虚拟机似乎正在使用中”问题
Peoplecode 运算符
浅谈 | 嵌套连接
Metaforce: my view on the force meta universe, I will teach you to quickly understand the sliding mechanism
Rust short note: raw pointer
易语言学习笔记(一)
[permission promotion] MySQL authorization raising method
Volcano engine & SouFun: wisdom and "recommendation" behind clothing wholesale
[authority promotion] search ideas and utilization methods of raising rights exp