Oracle数据库问题汇总

Oracle自动维护任务

周日上午六点数据库报警,报ORA-1652错误,根据微信告警信息及告警时间点确认是Oracle自动维护任务启动,导致临时表空间不足
SQL Tuning Advisor这个自动任务很早就是要禁用掉的,本身数据库仅作数据存储,没有任何DML及查询任务,就没有处理,这次无论如何都是要关闭了的
在这里插入图片描述

查看自动维护任务状态

select client_name,status from dba_autotask_client;

在这里插入图片描述

关闭自动维护任务

数据库中一般会关闭自动分段顾问及自动SQL调整顾问

BEGIN
  DBMS_AUTO_TASK_ADMIN.disable(
    client_name => 'auto space advisor',
    operation   => NULL,
    window_name => 'NULL');

  DBMS_AUTO_TASK_ADMIN.disable(
    client_name => 'sql tuning advisor',
    operation => NULL,
    window_name => 'NULL');
END;
/

修改运行时间

为避开其他批处理任务,也可以修改自动维护任务的运行时间

BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
  'MONDAY_WINDOW',
  'repeat_interval',
  'freq=daily;byday=MON;byhour=1;byminute=0;bysecond=0');
end;
/

ORA-27302报错

数据库多次ORA-27302报错,报错会导致相关的会话中断。故障原因是用于网络缓冲区预留的可用空间较少,解决方案建议修改本地回环地址的MTU,设置系统内核参数vm.min_free_kbytes。这有助于为网络缓冲区保留更大范围的已整理内存页,从而降低出现低缓冲区空间条件的可能性。
在这里插入图片描述

  1. 设置vm.min_free_kbytes参数,避免尝试超过物理内存5%的设置,否则会立即触发内存不足的情况。建议按照官方建议进行设置。
    根据当前系统内存情况计算:0.00425110241024= 1052770 ,10527704= 4211080

    vm.min_free_kbytes = 4211080
    
  2. 设置MTU,修改 /etc/sysconfig/network-scripts/ifcfg-lo,添加如下内容,然后需要重启网络生效,同时建议重启操作系统。
    注意:RAC环境需要先停止集群,然后进行修改操作。

    MTU=16436
    

    也可以临时修改

    ifconfig bond0 mtu 16436
    

DRM引起的GC等待

前台主要的GC等待事件
在这里插入图片描述

对于数据库实例,在11版本中,隐含参数 _undo_autotune 负责 undo retention(即 undo 段的保持时间)的自动调整,若由 Oracle 自动负责 undo retention,则 Oracle 会根据事务量来占用 undo 表空间,可能会形成 undo 表空间的争用,建议将其关闭。
参考命令:

alter system set "_undo_autotune"=FALSE scope=spfile sid='*';

对于数据库实例,在11版本RAC中,DRM(Dynamic Resource Mastering)负责将 Cache 资源 Remaster 到频繁访问这部分数据的节点上,从而提高 RAC 的性能。但是 DRM 在实际使用中存在诸多 Bug,频繁的 DRM 会引发实例长时间 Hang 住甚至是宕机,建议关闭 DRM。
参考命令:

alter system set "_gc_policy_time"=0 scope=spfile sid='*';

对于数据库实例,在11版本RAC中,建议关闭集群 Undo Affinity,降低集群交互,避免触发相关 BUG。
参考命令:

alter system set "_gc_undo_affinity"=FALSE scope=spfile sid='*'

设置defer后rman删除日志失败

灾备环境要下架一台DG备库,需要在主库设置defer,但是后面发现主库过期归档总是失败

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process
archived log file name=+FRADG/honor/archivelog/2019_11_22/thread_1_seq_365.534.1024999167 thread=1 sequence=365

虽然log_archive_dest_state_x设置为DEFER,但是Oracle认为只要设置了log_archive_dest_n就会认定备库存在,只是暂时不可用而已,因此不会删除归档。 可以通过设置隐含参数(动态参数)来规避这个问题,默认值是true,该参数将认为延迟存档目的地完全不可用,并且不再为这些目的地保存归档日志
该参数可以动态修改,不需要重启数据库

alter system set "_deferred_log_dest_is_valid" = FALSE scope=both;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值