Oracle GoldenGate同步服务归档空间保护【引荐】

2019-01-02 14:58:25来历:作者:人点击

共享

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 root@dbsrc.localdomain Tue Aug 7 05:00:01 2018Return-Path: <root@dbsrc.localdomain>X-Original-To: rootDelivered-To: root@dbsrc.localdomainReceived: by dbsrc.localdomain (Postfix, from userid 0)  id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)From: "(Cron Daemon)" <root@dbsrc.localdomain>To: root@dbsrc.localdomainSubject: 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: <20180806210001.9662C2827@dbsrc.localdomain>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 root@dbsrc.localdomain Tue Aug 7 05:00:01 2018Return-Path: <root@dbsrc.localdomain>X-Original-To: rootDelivered-To: root@dbsrc.localdomainReceived: by dbsrc.localdomain (Postfix, from userid 0)  id 9662C2827; Tue, 7 Aug 2018 05:00:01 +0800 (CST)From: "(Cron Daemon)" <root@dbsrc.localdomain>To: root@dbsrc.localdomainSubject: 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: <20180806210001.9662C2827@dbsrc.localdomain>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 R 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同步服务归档空间保护,期望对咱们有所协助,假如咱们有任何疑问请给我留言,小编会及时回复咱们的。在此也非常感谢咱们对明升m88.com网站的支撑!

相关文章

    无相关信息

微信扫一扫

明升m88.com微信大众渠道