• 查找Oracle数据库每天深夜自动重启的原因
  • 发布于 2个月前
  • 471 热度
    0 评论
问题现象:
几年前的一家公司,刚入职时从乙方单位接手了全部的数据库,其中一个Oracle数据库,检查告警日志,发现数据库每天凌晨2点自动重启,由于数据库每次都能重启成功,并且对应的应用也能正常使用,之前的同事并没有发现这个问题。

Tue Jun 12 02:00:28 2018
Shutting down instance (immediate)
Stopping background process SMCO
Shutting down instance: further logons disabled

数据库环境:

OS:Windws Server 2012
DB:Oracle 11.2.0.1.0

问题分析:
咨询同事没有设置过数据库自动重启的任务;
检查操作系统也没发现对应的计划任务,

自动重启之前,告警日志没有报错;


查看2点生成的所有trace日志,发现每天的trace日志都和OEM有关,部分内容如下:
# 堆代码 duidaima.com
*** MODULE NAME:(OEM.CacheModeWaitPool)
--------Dumping Sorted Master Trigger List --------
Trigger Owner : SYSMAN
Trigger Name : JOB_SUMM_INS_TRIGGER2
Trigger Owner : SYSMAN
Trigger Name : JOB_SUMM_INS_TRIGGER
……
问题原因:
推测问题原因是:当初的数据库实施人员并不是专业的DBA,在使用DBCA创建数据库时,在第四步,选择了”配置Enterprise Manager”,这个配置会有一个"启用到恢复区的每日磁盘备份"的选项,默认时间就是每天2点,正是因为这个原因导致数据库每天2点自动重启,因为数据库是非归档模式,Oracle每天2点通过RMAN自动停库做冷备;

闪回区可以看到通过OEM自动备份的文件如下,由于闪回区空间满了,导致后续备份都失败了:

SELECT start_time, end_time, operation, status
  FROM V$RMAN_STATUS
 order by start_time desc;

解决方案:
How to stop Database Autobackup Every Day At 02:00 Am which was configured during Database creation using DBCA ? (文档 ID 1992075.1)
-- Identify the Backup Job name
select JOB_OWNER, JOB_NAME
  from SYSMAN.MGMT_JOB
 where JOB_NAME like '%BACKUP%';

-- Delete the Job from DB Control Jobs repository
begin
  sysman.mgmt_jobs.delete_job('BACKUP_EASORCL_000001', 'SYS');
end;
删除时会报如下错误:

---通过下面的文档可以解决;
---How to Force Stop a Stuck Job in Grid Console (文档 ID 430626.1)
begin
  sysman.mgmt_job_engine.stop_all_executions_with_id('F01FFCEEC1DD42EB94B6D12622E25EB4',
                                                     TRUE);
end;
begin
  sysman.mgmt_jobs.delete_job('BACKUP_EASORCL_000001', 'SYS');
end;
select JOB_OWNER, JOB_NAME,JOB_ID
  from SYSMAN.MGMT_JOB
 where JOB_NAME like '%BACKUP%';

用户评论