ORA-00257: archiver error. Connect internal only, until freed

查看归档日志序列

  1. SQL> archive log list;

  2. Automatic archival Enabled #自动归档
  3. Archive destination USE_DB_RECOVERY_FILE_DEST #归档目录为指定的闪回恢复区
  4. Oldest online log sequence 174 #最旧的在线日志序列
  5. Next log sequence to archive 176 #下一个日志序列归档
  6. Current log sequence 176 #当前日志序列

归档日志默认是保存在oracle系统的闪回恢复区(Flash recovery area)

查看闪回恢复区参数

  1. SQL> show parameter db_recovery_file_dest;
  2.  
  3. NAME TYPE VALUE
  4. ----------------------- --------- ----------------------------
  5. db_recovery_file_dest string /data/oracle/flash_recovery_area
  6. db_recovery_file_dest_size big integer 3G

检查flash recovery area的使用情况

  1. SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
  2.  
  3. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
  4. --------- ------------------ ------------------------- --------------
  5. CONTROL FILE 0 0 0
  6. REDO LOG 0 0 0
  7. ARCHIVED LOG 99.98 0 23
  8. BACKUP PIECE 0 0 0
  9. IMAGE COPY 0 0 0
  10. FLASHBACK LOG 0 0 0
  11. FOREIGN ARCHIVED LOG 0 0 0

可以看到ARCHIVE LOG日志已占用99.98%的闪存空间

方案一:删除过期归档日志,增大闪回恢复区空间大小

若有需要先行将归档日志备份再删除

一、删除归档日志文件

找到归档日志存放目录:/data/oracle/flash_recovery_area/ORCL/archivelog

删除不需要的归档日志文件

直接删除归档日志后,必须用RMAN维护控制文件

二、使用RMAN维护控制文件

  1. [oracle@dbsrc ~]$ rman target sys/pass
  2.  
  3. RMAN> crosscheck backup; #核对所有备份集
  4. RMAN> run{
  5. delete noprompt obsolete;
  6. crosscheck archivelog all;
  7. delete noprompt expired archivelog all;
  8. crosscheck backup;
  9. delete noprompt expired backup;
  10. }

  11. RMAN> exit;

run{}中的命令被视为一个作业,一个失败整个命令停止执行

delete obsolete;                    #删除超出保存策略的备份

crosscheck archivelog all;          #检查无效的归档日志(失效的标记为expired)

delete expired archivelog all;      #删除expired的归档日志

delete expired backup;              #删除所有失效的备份集

delete expired   删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录;

delete obsolete  删除旧于备份保留策略定义的备份数据同时也更新RMAN资料库以及控制文件。

noprompt         指无需确认

三、增大闪回恢复区空间大小

  1. SQL> alter system set db_recovery_file_dest_size=8G;

查看闪回恢复区参数

  1. SQL> show parameter db_recovery_file_dest;

四、重新检查flash recovery area的使用情况

  1. SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

  2. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
  3. --------- ------------------ ------------------------- --------------
  4. CONTROL FILE 0 0 0
  5. REDO LOG 0 0 0
  6. ARCHIVED LOG 4.5 0 3
  7. BACKUP PIECE 0 0 0
  8. IMAGE COPY 0 0 0
  9. FLASHBACK LOG 0 0 0
  10. FOREIGN ARCHIVED LOG 0 0 0

五、添加定时任务,清理归档日志存储空间

1、新建脚本文件存放文件夹

  1. [root@dbsrc ~]# mkdir -p /backup/oracledata

2、编辑脚本内容

  1. [root@dbsrc ~]# vim /backup/oracledata/oracle_archivelog_clean.sh

  2. #脚本内容 (/backup/oracledata/oracle_archivelog_clean.sh)删除三天前的所有归档文件
  3. find /data/oracle/flash_recovery_area/ORCL/archivelog/ -mtime +3 -name "201*" -exec rm -rf {} \;

3、设置脚本文件权限

  1. [root@dbsrc ~]# chmod 777 /backup/oracledata/oracle_archivelog_clean.sh

4、添加计划任务(系统调度任务和用户调度任务添加其一)

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下crontab文件,这个就是系统任务调度的配置文件。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

1)、系统任务调度

编辑系统任务计划

  1. [root@dbsrc ~]# vim /etc/crontab
  2.  
  3. SHELL=/bin/bash
  4. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  5. MAILTO=root
  6. #SHELL 变量指定了系统要使用哪个shell,这里是bash
  7. #PATH 变量指定了系统执行命令的路径
  8. #MAILTO 变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
  9.  
  10. # For details see man 4 crontabs
  11.  
  12. # Example of job definition:
  13. # .---------------- minute (0 - 59)
  14. # | .------------- hour (0 - 23)
  15. # | | .---------- day of month (1 - 31)
  16. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  17. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  18. # | | | | |
  19. # * * * * * user-name command to be executed
  20.  
  21. #(*):代表所有 (,):多个值间隔 (-):范围连接符
  22. #(/)指定时间间隔频率,例如(*/10)如果在minute字段,表示每十分钟执行一次
  23. # 以管理员身份每天凌晨05:00,执行相应目录下的脚本任务
  24. 0 5 * * * root /backup/oracledata/oracle_archivelog_clean.sh

2)、用户任务调度

编辑用户任务计划

  1. [root@dbsrc ~]# crontab -e
  2. #以管理员身份每天凌晨05:00,执行相应目录下的脚本
  3. 0 5 * * * /backup/oracledata/oracle_archivelog_clean.sh

无需再添加执行用户,否则任务计划无法执行,将有以下报错

  1. [root@dbsrc ~]# cat /var/spool/mail/root
  2.  
  3. From root@dbsrc.localdomain Tue Aug 7 05:00:01 2018
  4. Return-Path: <root@dbsrc.localdomain>
  5. X-Original-To: root
  6. Delivered-To: root@dbsrc.localdomain
  7. Received: by dbsrc.localdomain (Postfix, from userid 0)
  8. id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)
  9. From: "(Cron Daemon)" <root@dbsrc.localdomain>
  10. To: root@dbsrc.localdomain
  11. Subject: Cron <root@dbsrc> root /backup/oracledata/oracle_archivelog_clean.sh
  12. Content-Type: text/plain; charset=UTF-8
  13. Auto-Submitted: auto-generated
  14. Precedence: bulk
  15. X-Cron-Env: <XDG_SESSION_ID=6910>
  16. X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
  17. X-Cron-Env: <LANG=en_US.UTF-8>
  18. X-Cron-Env: <SHELL=/bin/sh>
  19. X-Cron-Env: <HOME=/root>
  20. X-Cron-Env: <PATH=/usr/bin:/bin>
  21. X-Cron-Env: <LOGNAME=root>
  22. X-Cron-Env: <USER=root>
  23. Message-Id: <.9662C2827@dbsrc.localdomain>
  24. Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST)
  25.  
  26. /bin/sh: root: command not found

查看用户计划

  1. [root@dbsrc ~]# crontab -l

  2. 0 5 * * * /backup/oracledata/oracle_archivelog_clean.sh

5、查看cron服务是否在设定时间调用

  1. [root@dbsrc ~]# cat /var/log/cron
  2.  
  3. Aug 7 05:00:01 dbsrc CROND[12655]: (root) CMD (root /backup/oracledata/oracle_archivelog_clean.sh)
  4. Aug 7 05:01:01 dbsrc CROND[12795]: (root) CMD (run-parts /etc/cron.hourly)
  5. Aug 7 05:01:01 dbsrc run-parts(/etc/cron.hourly)[12795]: starting 0anacron
  6. Aug 7 05:01:01 dbsrc run-parts(/etc/cron.hourly)[12804]: finished 0anacron

6、查看shell脚本是否报错(cat /var/spool/mail/用户名)

  1. [root@dbsrc ~]# cat /var/spool/mail/root
  2.  
  3. From root@dbsrc.localdomain Tue Aug 7 05:00:01 2018
  4. Return-Path: <root@dbsrc.localdomain>
  5. X-Original-To: root
  6. Delivered-To: root@dbsrc.localdomain
  7. Received: by dbsrc.localdomain (Postfix, from userid 0)
  8. id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)
  9. From: "(Cron Daemon)" <root@dbsrc.localdomain>
  10. To: root@dbsrc.localdomain
  11. Subject: Cron <root@dbsrc> /backup/oracledata/oracle_archivelog_clean.sh
  12. Content-Type: text/plain; charset=UTF-8
  13. Auto-Submitted: auto-generated
  14. Precedence: bulk
  15. X-Cron-Env: <XDG_SESSION_ID=6910>
  16. X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
  17. X-Cron-Env: <LANG=en_US.UTF-8>
  18. X-Cron-Env: <SHELL=/bin/sh>
  19. X-Cron-Env: <HOME=/root>
  20. X-Cron-Env: <PATH=/usr/bin:/bin>
  21. X-Cron-Env: <LOGNAME=root>
  22. X-Cron-Env: <USER=root>
  23. Message-Id: <.9662C2827@dbsrc.localdomain>
  24. Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST)
  25.  
  26. find: ‘/data/oracle/flash_recovery_area/ORCL/archivelog/2018_08_04’: No such file or directory

7、重启crond服务

  1. [root@dbsrc ~]# service crond restart
  2. 或者
  3. [root@dbsrc ~]# /etc/init.d/crond restar

注释

  1. service crond start //启动服务
  2. service crond stop //关闭服务
  3. service crond restart //重启服务
  4. service crond reload //重新载入配置
  5. service crond status //查看服务状态
  6.  
  7. crontab [-u user] [ -e | -l | -r ]
  8. -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  9. -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
  10. -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
  11. -i:在删除用户的crontab文件时给确认提示。

#提示You have new mail in /var/spool/mail/root解决

  1. [root@dbsrc ~]# echo "unset MAILCHECK">> /etc/profile;
  2. [root@dbsrc ~]# source /etc/profile

方案二:修改归档目录位置

一、创建新的归档文件存放目录

  1. [root@dbsrc ~]# mkdir /data/oracle/archive_log

二、设置目录拥有者和权限

  1. [root@dbsrc ~]# chown -R oracle:oinstall /data/oracle/archive_log
  2. [root@dbsrc ~]# chmod R 775 /data/oracle/archive_log

三、禁止往闪回恢复区放归档日志

  1. SQL> alter system set db_recovery_file_dest='';

四、设置归档日志存放目录

  1. SQL> alter system set log_archive_dest='/data/oracle/archive_log';

五、查看归档日志序列

  1. SQL> archive log list;
  2. Automatic archival Enabled
  3. Archive destination /data/oracle/archive_log
  4. Oldest online log sequence 174
  5. Next log sequence to archive 176
  6. Current log sequence 176

Oracle GoldenGate同步服务归档空间维护的更多相关文章

  1. Oracle GoldenGate微服务架构的服务Shell脚本

    Oracle GoldenGate微服务架构的/etc/init.d下的OracleGoldenGate服务Shell脚本: #!/bin/sh # # Oracle GoldenGate Servi ...

  2. Oracle GoldenGate 同步数据至Hbase

    该方法没试过,先记下再说 1.软件版本说明: Goldengate 12c 12.2.0.1 for Oracle(源端) Goldengate 12c 12.3.0.1 for Bigdata (目 ...

  3. Oracle GoldenGate 12.3微服务架构指北

    Microservices Architecture introduction Microservices Architecture is a method or approach to develo ...

  4. Oracle GoldenGate实现数据库同步

    前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 1.安装包准备 数据库版本:Oracle Database 11g Release 2(1 ...

  5. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  6. 如何检查oracle的归档空间是否满了?

    如何检查oracle的归档空间是否满了? 关于如何检查归档空间是否慢了,大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情 ...

  7. Oracle GoldenGate 异构平台同步(Mysql到Oracle)

    一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...

  8. 如何检查oracle的归档空间是否满了

    如何检查oracle的归档空间是否满了   关于如何检查归档空间是否慢了,大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际 ...

  9. oracle 归档空间满的解决办法

    问题现象: 通过命令提示符登陆数据库,一般提示“ora-03113:通信通道的文件结尾”错误,查看trace日志,可以看到详细信息.部分摘录如下(橙色部分给出了建议方案): Errors in fil ...

随机推荐

  1. Linux基础之-利用shell脚本实现自动监控系统服务

    目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件: 1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命 ...

  2. hdu 1159 Common Subsequence(最长公共子序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  3. JAVA的静态方法,静态变量,静态类。

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  4. java几种基本排序算法

    1.选择排序 原理:将数组的每一个元素和第一个元素相比较,如果小于第一个元素则交换,选出第一小的,依次选出第二小,第三小的.... 代码 int[] a = {1,3,2,5}; int i,j,te ...

  5. 什么是git subcommand,如何创建git子命令?

    大多数git用户知道如何在git中创建一个alias以便更便利地使用相关命令.很少有人知道至少不会好好利用的是:你实际上可以为Git创建扩展或者plugin,以便上git完成任何你希望完成的工作.这就 ...

  6. [python错误]UnicodeDecodeError: 'gbk' codec can't decode byte...

    出现此错误的原因是使用'gbk'解码时报错,存在一些字符不能使用gbk来解码. 首先,简体中文字符编码(ASCII扩展字符集)有下列几种:GB2312.GBK.GB18030. GB2312: 中国国 ...

  7. 【Leetcode】【Medium】Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  8. CVE-2014-0322漏洞成因与利用分析

    CVE-2014-0322漏洞成因与利用分析 1. 简介 此漏洞是UAF(Use After Free)类漏洞,即引用了已经释放的内存,对指定内存处的值进行了加1.其特点在于攻击者结合flash实现了 ...

  9. 图的存储结构(邻接矩阵与邻接表)及其C++实现

    一.图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合. 注: 在线性表中,元素个数可以为零, ...

  10. 学习Road map Part 02 机器学习和图像识别

    方法:结合项目.竞赛.mentor计划