精华内容
下载资源
问答
  • 将以下代码保存为.sh文件,并放到crontab里就可以实现自动清理
  • Oracle归档日志清理

    千次阅读 2019-02-07 20:36:35
    Oracle归档日志清理 一、Linux平台 备注:RAC环境同样适用 操作步骤: 1、在/home/oracle内创建一个目录,用来放shell脚本日志。 [root@orcldb4 arch_clean_log]$ su - oracle --->从root用户切换...

    Oracle归档日志清理

    一、Linux平台

    备注:RAC环境同样适用
    操作步骤:
    1、在/home/oracle内创建一个目录,用来放shell脚本日志。

    [root@orcldb4 arch_clean_log]$ su - oracle 
    --->从root用户切换到oracle用户,注意横线“-”左右都有空格
    [oracle@orcldb4 arch_clean_log]$ mkdir /home/oracle/arch_clean_log
    

    2、查看Oracle环境变量

    [oracle@orcldb ~]$ env|grep ORA --->敲完命令之后,将如下名称记录下来,用于第三步设置脚本的环境变量
    
    ORACLE_SID=orcl
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
    

    3、在/home/oracle/目录下新建脚本文件
    以下的环境变量需要在第2步中获取

    [oracle@orcldb4 ORACLE]vi clean_arch.sh
    
    #!/bin/bash
    export ORACLE_SID=orcl   --->生产环境中Oracle实例名
    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 --->数据库软件目录
    export ORACLE_BASE=/u01/app/oracle --->Oracle基目录
    time=`date +"20%y%m%d%H%M%S"` --->日期格式
    logdir="/home/oracle/arch_clean_log" --->脚本执行日志
    find $logdir -type f -name "*.log" -mtime +7 -exec rm -rf {} \;--->此处保留7天脚本执行日志
    $ORACLE_HOME/bin/rman target /  log=$logdir/archClean_$time.log  <<EOF
    run{
    crosscheck archivelog all;
    delete noprompt expired archivelog all;
    DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';--->此处示例为保留7天的归档日志
    }
    exit
    EOF
    

    4、对脚本文件赋予可执行权限

    [oracle@orcldb4 ORACLE]$ chmod +x clean_arch.sh 
    

    5、设置定时计划
    在oracle用户下,添加crontab
    下面示例为每天凌晨3点开始执行定时清理脚本

    [oracle@orcldb4 arch_clean_log]$ crontab -e
    0 3 * * * /bin/bash /home/oracle/clean_arch.sh >/dev/null 2>&1
    

    最后检查下crontab是否已添加

    [oracle@orcldb4 arch_clean_log]$ crontab -l
    0 3 * * * /bin/bash /home/oracle/clean_arch.sh >/dev/null 2>&1
    

    二、Windows平台

    操作步骤:
    1、新建一个文件夹用于存放脚本执行的日志
    在这里插入图片描述

    2、查看Oracle sid
    在Windows环境可以:
    开始—>运行(输入regedit),在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb开头g_home1中有ORACLE_SID的键值(系统默认值),如下图所示:

    在这里插入图片描述
    在这里插入图片描述

    3、新建txt,将如下内容复制到文本内

    set ORACLE_SID=orcl --->注册表中Oracle实例名
    set arch_log=D:\arch_log --->脚本执行日志目录
    rman target / cmdfile='%arch_log%\script.txt' log='%arch_log%\del_arch_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log'
    --->调用RMAN脚本
    forfiles /P %arch_log% /M *.log /S /D -7 /C "cmd /c del /F /s /q @file"
    --->此处示例为保留7天的脚本日志记录
    

    在这里插入图片描述

    4、添加RMAN脚本

    run{
       crosscheck archivelog all;
       delete noprompt expired archivelog all;
       DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
       --->此处示例为保留7天的归档日志
    }
    

    在这里插入图片描述

    5、修改脚本后缀名为bat
    确保bat文件与script文件在一个目录
    在这里插入图片描述

    6、添加任务计划
    在windows添加任务计划,设定时间即可

    展开全文
  • oracle归档日志清理

    2021-03-03 21:20:55
    在开启归档并没有截断日志的情况下,归档日志会越来越大,在此情况下,我们该如何去清理!两种方法:1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;2、可以手工来...

    在开启归档并没有截断日志的情况下,归档日志会越来越大,在此情况下,我们该如何去清理!

    两种方法:

    1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;

    2、可以手工来处理,步骤如下

    1)将/oracle下的相关ARCHIVELOG日志文件移到别的文件系统下(保留一段时间的ARCHIVELOG日志即可,其他的可移走,用系统命令 mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的/oracle打包了,否则空间占满了就有些麻烦了。

    2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,进入rman

    3)在rman中执行

    RMAN>list archivelog all;            /*列出所有的归档日志文件

    RMAN>crosscheck archivelog all;      /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在/oracle目录下找不到的归档日志标记为expired

    RMAN>list expired archivelog all;    /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired

    RMAN>delete expired archivelog all;  /*在oracle中删除所有过期的expired文件

    RMAN>list archivelog all;            /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了

    RMAN>exit                            /*退出

    展开全文
  • 1.oracle数据库管理员登陆AIX服务器 2.指定数据库实例 $export ORACLE_SID=实例名称 ...5.查看归档日志状态 RMAN>list archivelog all 6.root用户重新登陆服务器,根据归档日志状态找到日志文件目录删除日...

    1.oracle数据库管理员登陆AIX服务器

    2.指定数据库实例 

    $export ORACLE_SID=实例名称

    3.进入RMAN

    $rman

    4.连接数据库

    RMAN>connect target sys/password

    5.查看归档日志状态

    RMAN>list archivelog all

    6.root用户重新登陆服务器,根据归档日志状态找到日志文件目录删除日志

    $chmod 777 * ; rm * -rf;

    7.更新归档日志

    RMAN> crosscheck archivelog all;

    RMAN>delete expired archivelog all;

    8退出rman

    RMAN>exit

     

    展开全文
  • Oracle清除归档日志

    2016-06-21 13:55:50
    Oracle清除归档日志
  • 之前也出现过类似的情况,当时为了紧急恢复业务通过人工手动的方式去进行了清理过期归档,最近正好通过脚本的方式实现定时自动清理归档日志,或者可以结合监控系统,如Zabbix,当Zabbix原文链接:...

    一、场景介绍

    公原文链接:https://www.dqzboy.com司最近Oracle数据库出现归档日志超过归档空间阈值,导致数据库夯住无法正常使用;之前也出现过类似的情况,当时为了紧急恢复业务通过人工手动的方式去进行了清理过期归档,最近正好通过脚本的方式实现定时自动清理归档日志,或者可以结合监控系统,如Zabbix,当Zabbix原文链接:https://www.dqzboy.com监控归档日志阈值超过了告警触发器定义值时则先去进行触发归档日志清理脚本;这里我是通过定时任务的方式去定时清理归档日志的。

    二、工具介绍

    这里我们使用的是RMAN,RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复文章来源(Source):https://www.dqzboy.com(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整文章来源(Source):https://www.dqzboy.com个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文原文链接:https://www.dqzboy.com件。

    三、实践过程

    1、自动清理脚本

    脚本中我是清理了7天前的所有归档日志

    [root@ localhost ~]# su - oracle

    [oracle@localhost ~]$ mkdir /home/oracle/logs

    [oracle@localhost ~]$ mkdir /home/oracle/script/

    [oracle@localhost ~]$ cd script/

    [oracle@localhost script]$ vim del_archivelog.sh

    #!/bin/bash

    oracle_env() {

    if [ -f ~/.bash_profile ]; then

    . ~/.bash_profile

    fi

    }

    arch_log_dir() {

    if [ -d /home/oracle/logs ];then

    echo "true"

    else

    mkdir -p /home/oracle/logs

    fi

    }

    oracle_clean() {

    oracle_env

    exec >> /home/oracle/logs/delarch`date +%Y-%T`.log

    $ORACLE_HOME/bin/rman target /<

    crosscheck archivelog all;

    delete noprompt expired archivelog all;

    delete noprompt archivelog all completed before 'sysdate - 7';

    exit;

    EOF

    }

    main() {

    arch_log_dir

    oracle_clean

    }

    main

    2、添加定时任务

    注:我这里定时任务设置为,每周三凌晨整进行一次清理任务,大家可以根据自己项目中数据库实际的情况进行修改

    [oracle@localhost ~]$ crontab -e

    00 00 * * 3 . ~/.bash_profile; /home/oracle/script/del_archivelog.sh

    展开全文
  • #功能:自动删除ORACLE归档日志文件 #删除方式:rman ,deletearchivelog #调用方式:可单独调用,或在job_clean_archivlog.sh脚本中根据需要调用见另外的附件) ##############################################
  • Oracle归档日志使用情况及自动清理

    千次阅读 2020-06-18 16:33:48
    百度后,确定原因为归档日志空间不足,也查询了具体的归档日志扩容方法及清理方法,记录一下,帮助自己也帮助其他其他朋友。 归档日志使用情况查询 使用sys用户登录数据库使用如下语句可以查询归档日志的使用情况及...
  • 如何正确删除Oracle 归档日志文件

    千次阅读 2021-04-30 09:03:24
    Oracle中的归档日志空间满时,则需要把它清空,否则将会影响数据库正常运行,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入Oracle。一、首先删除归档日志物理文件,归档日志一般都是位于archive目录...
  • Linux定时清理oracle归档日志

    千次阅读 2018-09-11 12:12:29
    oracle归档日志隔一段时间就会满了,需要手动清理。 使用linux定时任务 crontab +rman 定时清理oracle 归档日志 编写脚本: vim test.sh #!/bin/bash rman target "数据库用户"/"数据库密码"...
  • Linux的定时清理oracle归档日志文件及脚本定时crontab够执行。该定时任务并能生成rman的日志文件。该文件是清理超过5天的archivelog文件定时清理oracle数据库的archivelog文件#rman_del_arch.sh#liul21...
  • Windows环境定期清理Oracle归档日志

    千次阅读 2020-02-13 15:19:04
    原理:通过系统的任务计划执行Oracle归档日志。 1、系统环境变量中新建变量示例:ORACLE_SID:ORCL 变量名称:ORACLE_SID 值:ORCL 2、创建删除归档日志命令的del_archivelog.txt文件,写入内容: connect target / ...
  • Oracle Linux 定期清理归档日志: 1.执行 sqlplus /nology 进入 SQL Plus,执行 conn / as sysdba; 2.执行 show parameter recover; //查询归档日志的位置,注意:如果更改过归档日志的路径,执行 archive log list;...
  • oracle数据库清理归档日志步骤

    千次阅读 2020-08-17 19:24:39
    1.root登陆后切换oracle用户 [root@localhost]# su - oracle 2.执行 sqlplus / as sysdba进入oracle数据库 ...**命令查看日志大小 SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; 查看ARCHIVELOG的百分比
  • 计划保留三天的归档日志 以下操作全是在Oracle用户下执行 定义rman cmd命令 cat >>del_ora_log.rman <<EOF crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt ...
  • #功能:当空间占用率高于60%时自动删除ORACLE归档日志文件 # #删除方式:高于60%时使用rman+deletearchivelog,高于79%时使用武力删除 #调用方式:可单独调用,或配置定时任务自动执行脚本(会调用clean_archivelog....
  • Oracle 定时清理归档日志脚本

    千次阅读 2019-07-25 09:00:12
    1 报错信息 数据库报如下错误: ora-27101: shared memory realm does not exist ora-01034: oracle not ...原因:由于数据库归档日志满了,不能继续往数据库里写数据。 2 查看归档日志大小 # su - oracle $...
  • [root@hfcwroot ~]# su - oracle [oracle@hfcwroot ~]$ mkdir -p /home/oracle/delarchlog [oracle@hfcwroot ~]$ cd /home/oracle/delarchlog ...# 删除归档脚本 # 修改区域 # ========================
  • Windows Oracle 定期清理归档日志

    千次阅读 2019-09-20 19:35:31
    1.创建一个删除归档日志的内容:del_archivelog.txt connect target / run { DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-2’; //删除两天前归档日志 crosscheck archivelog all; delete expired archivelog ...
  • 利用脚本自动清理Oracle归档日志

    万次阅读 2016-01-04 09:07:12
    背景由于Oracle数据库开启了归档模式,经常因为归档日志文件占用空间过大而导致数据库无法正常连接,发现问题后需要手动清理归档日志,而发现问题时可能已经过去很长时间了,在生产环境中对用户的使用有非常严重的...
  • ORACLE 定时清理归档日志详细过程

    千次阅读 2019-02-14 16:16:11
    ORACLE 定时清理归档日志详细过程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,949
精华内容 2,379
关键字:

oracle归档日志清理