Oracle Windows/Linux定期清理归档日志

一、Windows环境下的配置

原理:通过系统的任务计划执行Oracle归档日志。

1、设置系统环境变量ORACLE_SID,如实例名称:ORCL

image.png

2、创建删除归档日志命令的del_archivelog.txt文件,写入内容:

connect target  /
run{
    crosscheck archivelog all;
    DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
    delete expired archivelog all;
}

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //删除七天前的归档日志

3、创建执行删除归档日志的del_archivelog.bat脚本文件,写入内容为:

@echo off
set "filename=del_archivelog_task_log_%date:~0,4%%date:~5,2%%date:~8,2%.txt"
(
echo.
echo =========================  正在清除过期归档文件,请稍等...... %date% %time%  =========================
echo.
rman cmdfile=D:\app\admin\del_archivelog.txt
echo.
echo =========================              【结束清理 %date% %time%】                  =========================
echo.
)>>D:\app\admin\%filename% 2>&1<nul
pause

* 注意修改文件路径

4、测试删除归档日志的脚本

下图是根据上面教程创建的两个文件


image.png

(1)、先查看归档日志路径,确认归档日志文件信息情况。

  • 首先进入SQL Plus查看归档日志的位置
SQL > show parameter recover;
image.png
  • 随便打开一个在清理范围内的日期文件夹


    image.png

image.png

(2)、双击del_archivelog.bat脚本,然后将自动生成日志文件del_archivelog_task_log_20190202.txt
image.png

(3)、双击日志文件del_archivelog_task_log_20190202.txt,查看执行情况
del_archivelog_task_log_20190202.txt

(4)、再回到前面打开的清理范围内的日期文件夹查看文件是否已被删除

5、添加系统任务计划,位置:开始 => 所有程序 => 附件 => 系统工具 => 任务计划

打开任务计划
  • 双击打开任务计划程序
  • 点击右侧新建任务
    image.png

    填写任务基本信息
    添加任务基本信息

    新建触发器
    新建触发器

    选择操作 > 新建操作 - >浏览选择del_archivelog.bat脚本文件
    image.png

    image.png

    image.png

    到此整个Windows下的配置已结束,注意定期观察任务的运行情况。
    观察结果

二、Linux环境下的配置

  • 执行 sqlplus /nolog进入SQLPlus, 执行 conn / as sysdba
[oracle@custom04 data]$  sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 2 16:37:55 2019

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected.
SQL> 
  • 执行show parameter recover;查询归档日志的位置,注意:如果更改过归档日志路径,请执行archive log list;查看
SQL> show parameter recover;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /data/oracle/flash_recovery_area
db_recovery_file_dest_size           big integer 70G
recovery_parallelism                 integer     0
SQL> 

更改过归档日志路径的情况查看,执行archive log list;

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/oracle_fast_recovery_area
Oldest online log sequence     1622
Next log sequence to archive   1624
Current log sequence           1624
SQL> 
  • 进入归档日志目录,查看并记住文件个数。执行ls -l |grep "^-"|wc -l
[root@custom04 oracle_fast_recovery_area]# ls -l |grep "^-"|wc -l
1215
  • 建立del_archivelog.sh脚本,执行vi del_archivelog.sh
[oracle@custom04 oracle]$ vi del_archivelog.sh 

输入内容,注意修改/data/oracle/del_archivelog/路径

#!/bin/bash
echo "----------------------------------------`date`---------------------------------------"
source ~/.bash_profile
LOG_DIR=/data/oracle/del_archivelog/
DATEL=`date '+%Y-%m-%d'`
LOG_NAME=${LOG_DIR}${DATEL}".log"

rman log=$LOG_NAME target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
EOF
echo -e "\n"
echo "------------------------------------- FINISHED -------------------------------------"

注意赋予文件的可执行权限,执行chmod 777 del_archivelog.sh

[oracle@custom04 oracle]$ chmod 777 del_archivelog.sh 
  • 测试脚本是否有效,执行./del_archivelog.sh
[oracle@custom04 oracle]$ ./del_archivelog.sh 
----------------------------------------Sun Feb  3 13:41:11 CST 2019---------------------------------------
RMAN> RMAN> RMAN> RMAN> 

------------------------------------- FINISHED -------------------------------------
[oracle@custom04 oracle]$ 
  • 再次查看归档日志目录文件个数。执行ls -l |grep "^-"|wc -l
[root@custom04 oracle_fast_recovery_area]# ls -l |grep "^-"|wc -l
1189
对比结果
  • 创建 crontab定时任务,执行crontab -e
[oracle@custom04 oracle]$ crontab -e

写入内容,每天凌晨4点执行脚本del_archivelog.sh,并将执行结果输出到task.log

00 4 * * * sh /data/oracle/del_archivelog.sh >> /data/oracle/del_archivelog/task.log 2>&1 &

查看crontab所有定时任务,执行crontab -l

[oracle@custom04 oracle]$ crontab -l 
00 4 * * * sh /data/oracle/del_archivelog.sh >> /data/oracle/del_archivelog/task.log 2>&1 &

到此整个Linux下的配置已结束,注意定期观察任务的运行情况。

Oracle ORA-03113: 通信通道的文件结尾 故障处理

  • 使用 sqlplus 登陆数据库,提示连接到空闲例程,发现数据库没有启动,于是启动数据库:


    启动时报ORA-03113错误
SQL> startup

ORACLE 例程已经启动。

Total System Global Area 1.3696E+10 bytes
Fixed Size                  2294256 bytes
Variable Size            7985958416 bytes
Database Buffers         5670699008 bytes
Redo Buffers               36937728 bytes
数据库装载完毕。
ORA-03113: 通信通道的文件结尾
进程 ID: 3816
会话 ID: 2826 序列号: 3
  • 重新登陆数据库,分步启动,查询alert日志所在位置
sqlplus / as sysdba

SQL> startup nomount;

SQL> select value from v$diag_info
image.png

从 v$diag_info 获取 alert 日志位置为E:\app\Administrator\diag\rdbms\neubi\neubi\trace\alert_neubi.log
查看 alert 日志,日志中报空间不足

image.png

检查Windows 磁盘空间发现数据盘已满。


image.png

确定问题后,开始清理空间。初步分析,发现FRA空间占用比较高,里面都是归档日志。


image.png
  • 准备通过 rman 清理归档日志


    image.png

    rman 无法在 nomount 状态下清理日志,将数据库置为mount状态。

SQL> alter database mount;
image.png

重新连接 rman


image.png
RMAN> crosscheck archivelog all;

RMAN> delete archivelog all completed before 'sysdate-3';

清理后,空间腾出了100G

  • 此时考虑将数据库打开
SQL> alert database open;
image.png

最后检查监听状态,监听已恢复


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容