oracle 启动mrp进程,DataGuard MRP进程crash的处理案例 ORA-01111
今天发生一起DataGuard 归档无法同步的情况,查看主库LNS进程存在表示,主库正常向备库传送归档日志:SQL> SELECT PROCESS,PID,GROUP#,RESETLOG_ID,THREAD#,SEQUENCE#,BLOCK#,BLOCKS,DELAY_MINS,KNOWN_AGENTS FROM V$MANAGED_STANDBY;
PROCESS PID GROUP# RESETLOG_ID THREAD# SEQUENCE# BLOCK# BLOCKS DELAY_MINS KNOWN_AGENTS
--------- ---------- ---------- ----------- ---------- ---------- ---------- ---------- ---------- ------------
ARCH 8067 1 845994484 1 23362 106496 685 0 0
ARCH 8069 3 845994484 1 23360 149504 1659 0 0
ARCH 8071 4 845994484 1 21741 1 2 0 0
ARCH 8073 4 845994484 1 23361 133120 1223 0 0
LNS 8075 2 845994484 1 23363 117792 1 0 0
但备库的MRP进程不在,判断是否存在归档的GAP:SQL> SELECT THREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
no rows selected
不存在GAP,手动启动MRP进程,仍无法启动查看告警日志,找到关键内容如下:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSIONAttempt to start background Managed Standby Recovery process (sss)
Thu Oct 09 11:38:58 2014
MRP0 started with pid=30, OS id=102010
MRP0: Background Managed Standby Recovery process started (sss)
started logmerger process
Thu Oct 09 11:39:03 2014
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Errors in file /dba/oracle/diag/rdbms/sss/sss/trace/sss_pr00_102070.trc:
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
Slave exiting with ORA-1111 exception
Errors in file /dba/oracle/diag/rdbms/sss/sss/trace/sss_pr00_102070.trc:
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01111: name for data file 12 is unknown - rename to correct file
ORA-01110: data file 12: '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012'
Recovery Slave PR00 previously exited with exception 1111
MRP0: Background Media Recovery process shutdown (sss)
可以看到数据库尝试启动MRP进程,但后台进行介质恢复时,被错误1111码终端(即ORA-01111),ORA-01111提示数据文件12是未知的。而后续的ORA-01110报错显示该数据文件的位置应该是$ORACLE_HOME/UNNAMED00012文件。
实际在该路径下是查找不到该文件的:find /u01/oracle/product/11.2.0.3.0/dbs/ -name 'UNNAMED00012'
那么问题就来了,为什么数据库需要找到该文件进行恢复?
我们都清楚DG的备库是通过归档日志进行恢复的。在归档获取正确的情况下,会把主库的对数据的更新内容都传递到备库进行应用。也就是说上面报错在于,主库传过来一条更新记录,对于备库是无法判断的。
通过网上查找相关答案,发现原来当主库异常宕机重启之后,数据库会进行自动恢复,也就是Instance Recovery,这部分缺失的数据被记录再Redo之中,在异常关闭后,传输到备库的归档中并不包含这部分内容,而主库通过一个临时的数据文件(UNNAMED命名方式)恢复后,这部分被恢复的记录在后续的归档中被传输到备库,当备库恢复到这个归档时,备库无法自动去创建这个UNNAMED临时数据文件。
解决方式:
停止备库归档应用(实际已停止,非必要),同步归档将备库归档自动管理该为手动,手工创建该数据文件,启动归档应用进程,将归档管理由手动转自动。SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL SCOPE=MEMEORY;
SQL> ALTER DATABASE CREATE DATAFILE '/u01/oracle/product/11.2.0.3.0/dbs/UNNAMED00012' as '/u01/oradata/sss/sys07.dbf'
SQL> ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=MEMORY;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
到这里查看告警日志:Attempt to start background Managed Standby Recovery process (sss)
Thu Oct 09 11:41:08 2014
MRP0 started with pid=30, OS id=102513
MRP0: Background Managed Standby Recovery process started (sss)
started logmerger process
Thu Oct 09 11:41:14 2014
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 24 slaves
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Thu Oct 09 11:41:14 2014
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
Media Recovery Log /u01/sss/SSS/archivelog/2014_10_03/o1_mf_1_13523_b2wzmf1b_.arc
Thu Oct 09 11:41:36 2014
告警日志已经说明归档已经正常应用了,如果不放心也可以查看一下V$MANAGED_STANDBY视图,确认一下MRP进程是否启用。
这里我还有一个疑问,就是我手工创建的这个数据文件,等数据库恢复以后是否可以删除呢?
oracle 启动mrp进程,DataGuard MRP进程crash的处理案例 ORA-01111相关推荐
- oracle集群启动状态,循序渐进:Oracle 11.2 RAC集群进程的初始化与启动过程
张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consul ...
- oracle 启动crs进程,由于CRS磁盘dismount造成的CRS进程无法启动问题
0 CRS 0DISMOUNTED 2 DATA1 ...
- day06 : 01 Oracle 体系结构概念,内存结构,内存结构(服务器进程和用户进程)
一 概念: 1. 实例/instance: 后台进程+共享内存 用于管理和控制数据库 数据库/database: 物理文件的集合 为实例提供数据,如数据文件,控制文件,参数文件,日志文件等 ...
- oracle lms进程 内存,Oracle进程:LMS 进程与Oracle RAC
Oracle进程:LMS 进程与Oracle RAC LMS进程是Oracle RAC环境下非常重要的一个进程,关于这个进程的解释在不同文档中也有所不同. 在Oracle 9iR2的概念手册中这样介绍 ...
- Oracle processes和sessions参数(进程连接数会话连接数)
Oracle processes和sessions参数(进程连接数&会话连接数) 如果配置过小,连接时可能会报错:ORA-12519, TNS:no appropriate service h ...
- Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型
1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...
- linux杀死tomcat进程6,Linux下启动停止查看杀死Tomcat进程(示例代码)
文章来自:http://www.linuxidc.com/Linux/2011-06/37180.htm 启动 一般是执行tomcat/bin/startup.sh,sh tomcat/bin/sta ...
- 启动进程 问号_有两个这样的进程:僵尸进程amp;孤儿进程,蓝瘦香菇
进程 先来说下什么是进程: 来看下百度是怎么说的: 光看说的不够形象,在windows系统中,它长这样: 在Mac系统中,它长这样: Linux中是这样的:(有点长截图一部分好了) [root@iz2 ...
- mysql启动成功但是没有进程_zabbix_server表面启动成功,但是没有进程
zabbix_server表面启动成功,但是没有进程 [root@iZ25m1box8cZ zabbix]# /etc/init.d/zabbix_server start Starting zabb ...
最新文章
- java 不同数据类型之间的转换
- php 接收序列化数据,PHP如何序列化数据?
- 大型网站技术架构 读书笔记
- 根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化C源码
- 深度解读 MongoDB 4.4 新特性
- 搭建spring boot环境并测试一个controller
- ue4玻璃材质_UE4-材质
- 在Spring Cloud中集成和使用CSE快速实现商业产品
- Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)
- windows生成当前目录树
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
- SQL server 2008 安装教程
- 厉害了:tcgames电脑玩手游助手新功能强势上线,可编程游戏按键
- 2159: H.ly的小迷弟
- MacOS基金管理软件
- APIO2019 打铁记
- 【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment
- TDA4程序刷写方案
- [M1]Daily Scum 10.8
- java 命令 线程栈_JVM调试常用命令——jstack命令与Java线程栈(1)