前几天有位朋友在留言板上提了这样一个问题:

Fri May 25 20:46:06 2007  //自动备份controlfile

Starting control autobackup

Control autobackup written to DISK device

handle '/ora_rman_backup/crtl_backup/c-4205638757-20070525-00'

Fri May 25 20:46:11 2007   //发生日志切换

Thread 1 advanced to log sequence 535

Current log# 1 seq# 535 mem# 0: /dev/udpay/lv_redo11_256m

Current log# 1 seq# 535 mem# 1: /dev/udpay/lv_redo12_256m

Fri May 25 20:46:11 2007   //同时启动归档

ARCH: Evaluating archive  log 6 thread 1 sequence 534

ARCH: Beginning to archive log 6 thread 1 sequence 534

Creating archive destination LOG_ARCHIVE_DEST_1: '/archivelog/arch/1_534.dbf'

Fri May 25 20:46:12 2007   //一秒后另一进程启动,失败

ARC0: Evaluating archive  log 6 thread 1 sequence 534

ARC0: Unable to archive log 6 thread 1 sequence 534

Log actively being archived by another process

Fri May 25 20:46:15 2007   //3秒后成功归档

ARCH: Completed archiving log 6 thread 1 sequence 534

Fri May 25 20:46:18 2007   //3秒后日志切换

Thread 1 advanced to log sequence 536

Current log# 2 seq# 536 mem# 0: /dev/udpay/lv_redo21_256m

以上日志是备份过程中产生的,备份脚本如下:

$ORACLE_HOME/bin/rman

connect target sys/sys@udpay;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ora_rman_backup/crtl_backup/%F';

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CROSSCHECK ARCHIVELOG ALL;

run{

ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;

backup full database format 'D:/%T_%d' include current controlfile;

sql 'alter system archive log current';

backup filesperset 3 format 'D:/arch%u_%s_%p' archivelog all;

DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-2';

release channel ch1;

}

!!

这位朋友提出的问题是,为什么会有:

Log actively being archived by another process

如果一个归档进程已经开始归档日志,为什么另外一个进程又来归档日志?

研究了一下,有了一点新的发现。

首先,归档进程的数量是受初始化参数log_archive_max_processes控制,初始的,这个参数设置为2,Oracle启动两个归档进程:

[oracle@jumper bdump]$ ps -ef|grep ora_arc

oracle 11938 1 0 18:24 ? 00:00:00 ora_arc0_eygle

oracle 11940 1 0 18:24 ? 00:00:00 ora_arc1_eygle

oracle 16260 11894 0 20:21 pts/5 00:00:00 grep ora_arc

其中主归档进程会持续访问控制文件:

*** 2007-06-06 20:23:50.510

WAIT #0: nam='rdbms ipc message' ela= 59999293 p1=6000 p2=0 p3=0

WAIT #0: nam='control file sequential read' ela= 76 p1=0 p2=1 p3=1

WAIT #0: nam='control file sequential read' ela= 36 p1=0 p2=370 p3=1

WAIT #0: nam='control file sequential read' ela= 36 p1=0 p2=8 p3=1

WAIT #0: nam='control file sequential read' ela= 30 p1=0 p2=9 p3=1

*** 2007-06-06 20:24:51.950

WAIT #0: nam='rdbms ipc message' ela= 59999344 p1=6000 p2=0 p3=0

WAIT #0: nam='control file sequential read' ela= 72 p1=0 p2=1 p3=1

WAIT #0: nam='control file sequential read' ela= 35 p1=0 p2=370 p3=1

WAIT #0: nam='control file sequential read' ela= 35 p1=0 p2=8 p3=1

WAIT #0: nam='control file sequential read' ela= 29 p1=0 p2=9 p3=1

另外一个归档进程以'rdbms ipc message' 事件处于等待:

*** 2007-06-06 20:01:15.830

WAIT #0: nam='rdbms ipc message' ela= 148300048 p1=14831 p2=0 p3=0

a*** 2007-06-06 20:06:23.030

WAIT #0: nam='rdbms ipc message' ela= 299999745 p1=30000 p2=0 p3=0

a*** 2007-06-06 20:11:30.230

WAIT #0: nam='rdbms ipc message' ela= 299999735 p1=30000 p2=0 p3=0

a*** 2007-06-06 20:16:37.430

WAIT #0: nam='rdbms ipc message' ela= 299999779 p1=30000 p2=0 p3=0

a*** 2007-06-06 20:21:44.630

当我们执行alter system archive log current命令时,Oracle Post归档进程时,主归档进程首先执行归档,而次归档进程则需要去读取控制文件,以获得当前及下一归档日志信息:

*** 2007-06-06 19:58:43.970

WAIT #0: nam='rdbms ipc message' ela= 148134746 p1=30000 p2=0 p3=0

WAIT #0: nam='control file sequential read' ela= 36 p1=0 p2=1 p3=1

WAIT #0: nam='control file sequential read' ela= 29 p1=0 p2=369 p3=1

WAIT #0: nam='control file sequential read' ela= 32 p1=0 p2=8 p3=1

WAIT #0: nam='control file sequential read' ela= 29 p1=0 p2=10 p3=1

这就导致次归档进程始终会落后于主归档进程,会在警告日志中看到如下信息:

Wed Jun 6 19:58:43 2007

ARCH: Evaluating archive log 4 thread 1 sequence 305

ARCH: Beginning to archive log 4 thread 1 sequence 305

Creating archive destination LOG_ARCHIVE_DEST_1: '/opt/oracle/product/9.2.0/dbs/arch1_305.dbf'

Wed Jun 6 19:58:43 2007

ARC1: Evaluating archive log 4 thread 1 sequence 305

ARC1: Unable to archive log 4 thread 1 sequence 305

Log actively being archived by another process

这在正常情况下是不会出现的,如果一个归档进程能够满足系统需要,第二个进程就无需启动,而手动switch log则会Post所有归档进程。

在Oracle10g中,情况同样如此:

Wed Jun 6 20:32:57 2007

ARCH: Evaluating archive log 4 thread 1 sequence 75268

Wed Jun 6 20:32:57 2007

ARC0: Evaluating archive log 4 thread 1 sequence 75268

ARC0: Unable to archive log 4 thread 1 sequence 75268

Log actively being archived by another process

Wed Jun 6 20:32:57 2007

ARCH: Beginning to archive log 4 thread 1 sequence 75268 (2074.-1351690850:2074.-1351608674) (mmsdb)

-The End-

Oracle 应用归档 卡死,关于Oracle归档进程的运行机制相关推荐

  1. oracle归档原理,增加ORACLE归档位置到NFS(转)

    NFS文件服务器系统搭建 1什么是NFS NFS(network file system),网络文件系统,不同的操作系统可以通过NFS来共享文件,可以简单地将之看成是一个文件服务器.可以将远端的主机分 ...

  2. oracle 创建模式语句,ORACLE基本使用SQL语句以及归档模式的操作

    --1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tabl ...

  3. Oracle归档日志与非归档日志的切换及路径设置

    Oracle归档日志与非归档日志的切换及路径设置 Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档.相应的日志被称为归档日志. 一.归档日志 是联机重做日志 ...

  4. oracle归档模式教程,Oracle从归档模式变成非归档模式详细步骤

    更改Oracle数据库的非归档模式需要重新启动数据库,在mount模式下修改,简要步骤1 以shutdown immediate方式关闭数据库2 启动实 Oracle从归档模式变成非归档模式详细步骤 ...

  5. oracle在非归档模式下,Oracle在非归档模式下不能更改表空间为备份模式

    Oracle表空间设置为备份模式后,便可以联机对表空间下数据文件进行文件系统级别的copy备份操作,因为期间对表空间的修改都记录到数据库的重做日志文件中. 由此想到数据库如果是非归档模式,那么这个表空 ...

  6. 一 如何检查oracle的归档日志及空间占用率,清除归档日志、Oracle归档日志使用情况查询、查看oracle数据库一周产生的归档日志

    一 如何解决"归档日志已满问题" 问题描述:所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文 ...

  7. oracle改成归档模式_oracle 11g开启归档模式及修改归档目录

    11G开启归档模式 在oracle 11g,开启archive log模式时,默认归档目录为db_recovery_file_dest指定.此参数在pfile/spfile中可以指定: db_reco ...

  8. oracle数据库归档闪回,[Oracle]Oracle的闪回归档

    Oracle的闪回归档 场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题.Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据.实践如下: 1.创建 ...

  9. rman打开oracle归档日志,Oracle RAC中使用RMAN管理归档日志

    RMAN归档配置的两种方案1.在Oracle asm和集群文件系统时的归档方案 对于Oracle RAC来说首选是使用Oracle asm作为reocvery区域.可选择的你也可以使用集群文件系统的归 ...

最新文章

  1. Window10设置护眼色
  2. Spring 入门知识点笔记整理
  3. Linux内核通知链机制的原理及实现【转】
  4. linux查看某端口进程占用,Linux下查看某端口占用进程
  5. 一次竞赛案例的分享——基于正则表达式的深度学习应用
  6. edittext怎么输入默认内容覆盖_Linux Shell 输入与输出重定向
  7. Transifex与GTK文档翻译, Linux镜像文件, 外设接口杂谈
  8. 人工智能是互联网下一轮变革的核心
  9. android startanimation 回调,ScheduledThreadPoolExecutor执行莫名停止问题Android几个动画回调运行线程...
  10. 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)
  11. 数字图像处理--微分算子为什么也是空间滤波器
  12. c# 日期转换为单词
  13. mysql 查询某个值非空_MySQL查询在单行中计算非空值
  14. 使用selenium爬取百度文库文章(动态)
  15. 有关于fprintf()函数的用法
  16. php图片颤抖,如何实现图片抖动效果
  17. 《VoIP技术构架(第2版·修订版)》一1.4 语音与数据网合二为一的驱动力
  18. iPhone 电池和性能
  19. 挑战杯获奖作品_创新筑梦济南大学“挑战杯”获奖作品展示(二)
  20. 隐藏滚动条css3实现滚动同时隐藏滚动条

热门文章

  1. linux存储pdf伟岸_Linux 文件恢复的原理
  2. python bool类型return_Python bool()函数可以为无效参数引发异常吗?
  3. id3决策树_信息熵、信息增益和决策树(ID3算法)
  4. filenotfoundexception是什么异常_Java异常处理:给程序罩一层保险
  5. 缓慢的http拒绝服务攻击 tomcat_常见的网络攻击类型
  6. gerber文件怎么导贴片坐标_PCBA贴片加工厂家的上机贴片编程
  7. 计算机可移动磁盘无法显示图片,手机插电脑不显示可移动磁盘的详细解决方法...
  8. linux搭建vsftp服务器_Linux安装配置vsftp搭建FTP的详细配置
  9. android:ellipsize = marquee 跑马灯,Android-单行跑马灯(一直循环)效果
  10. php oracle按时间查询,Oracle日期查询:季度、月份、星期等时间信息