侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Oracle GoldenGate同步服务归档空间维护【推荐】

数据库  /  管理员 发布于 6年前   192

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

查看归档日志序列

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

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

查看闪回恢复区参数

SQL> show parameter db_recovery_file_dest;NAME          TYPE   VALUE-----------------------    --------- ----------------------------db_recovery_file_dest     string  /data/oracle/flash_recovery_areadb_recovery_file_dest_size    big integer  3G

检查flash recovery area的使用情况

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE   PERCENT_SPACE_USED  PERCENT_SPACE_RECLAIMABLE  NUMBER_OF_FILES---------   ------------------  -------------------------  --------------CONTROL FILE   0       0       0REDO LOG    0       0       0ARCHIVED LOG   99.98      0       23BACKUP PIECE   0       0       0IMAGE COPY    0       0       0FLASHBACK LOG   0       0       0FOREIGN ARCHIVED LOG 0       0       0

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

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

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

一、删除归档日志文件

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

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

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

二、使用RMAN维护控制文件

[oracle@dbsrc ~]$ rman target sys/passRMAN> crosscheck backup;     #核对所有备份集RMAN> run{delete noprompt obsolete;crosscheck archivelog all;delete noprompt expired archivelog all;crosscheck backup;delete noprompt expired backup;}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         指无需确认

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

SQL> alter system set db_recovery_file_dest_size=8G;

查看闪回恢复区参数

SQL> show parameter db_recovery_file_dest;

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

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE   PERCENT_SPACE_USED  PERCENT_SPACE_RECLAIMABLE  NUMBER_OF_FILES---------   ------------------  -------------------------  --------------CONTROL FILE    0       0       0REDO LOG     0       0       0ARCHIVED LOG    4.5      0       3BACKUP PIECE    0       0       0IMAGE COPY    0       0       0FLASHBACK LOG    0       0       0FOREIGN ARCHIVED LOG  0       0       0

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

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

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

2、编辑脚本内容

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

3、设置脚本文件权限

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

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

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

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

1)、系统任务调度

编辑系统任务计划

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

2)、用户任务调度

编辑用户任务计划

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

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

[root@dbsrc ~]# cat /var/spool/mail/rootFrom [email protected] Tue Aug 7 05:00:01 2018Return-Path: <[email protected]>X-Original-To: rootDelivered-To: [email protected]: by dbsrc.localdomain (Postfix, from userid 0)  id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)From: "(Cron Daemon)" <[email protected]>To: [email protected]: Cron <root@dbsrc> root /backup/oracledata/oracle_archivelog_clean.shContent-Type: text/plain; charset=UTF-8Auto-Submitted: auto-generatedPrecedence: bulkX-Cron-Env: <XDG_SESSION_ID=6910>X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>X-Cron-Env: <LANG=en_US.UTF-8>X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>X-Cron-Env: <USER=root>Message-Id: <[email protected]>Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST)/bin/sh: root: command not found

查看用户计划

[root@dbsrc ~]# crontab -l0 5 * * * /backup/oracledata/oracle_archivelog_clean.sh

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

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

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

[root@dbsrc ~]# cat /var/spool/mail/rootFrom [email protected] Tue Aug 7 05:00:01 2018Return-Path: <[email protected]>X-Original-To: rootDelivered-To: [email protected]: by dbsrc.localdomain (Postfix, from userid 0)  id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)From: "(Cron Daemon)" <[email protected]>To: [email protected]: Cron <root@dbsrc> /backup/oracledata/oracle_archivelog_clean.shContent-Type: text/plain; charset=UTF-8Auto-Submitted: auto-generatedPrecedence: bulkX-Cron-Env: <XDG_SESSION_ID=6910>X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>X-Cron-Env: <LANG=en_US.UTF-8>X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>X-Cron-Env: <USER=root>Message-Id: <[email protected]>Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST)find: ‘/data/oracle/flash_recovery_area/ORCL/archivelog/2018_08_04': No such file or directory

 7、重启crond服务

[root@dbsrc ~]# service crond restart

或者

[root@dbsrc ~]# /etc/init.d/crond restar

注释

service crond start //启动服务service crond stop //关闭服务service crond restart //重启服务service crond reload //重新载入配置service crond status //查看服务状态crontab [-u user] [ -e | -l | -r ]-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。-i:在删除用户的crontab文件时给确认提示。#提示You have new mail in /var/spool/mail/root解决[root@dbsrc ~]# echo "unset MAILCHECK">> /etc/profile;[root@dbsrc ~]# source /etc/profile 

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

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

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

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

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

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

SQL> alter system set db_recovery_file_dest='';

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

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

五、查看归档日志序列

SQL> archive log list;Automatic archival    EnabledArchive destination    /data/oracle/archive_logOldest online log sequence  174Next log sequence to archive  176Current log sequence    176

总结

以上所述是小编给大家介绍的Oracle GoldenGate同步服务归档空间维护,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!


  • 上一条:
    解决Oracle数据库归档日志占满磁盘空间问题
    下一条:
    Oracle 12c 新特性之多线程数据库操作
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客