Oracle GoldenGate同步服务归档空间维护
ORA-00257: archiver error. Connect internal only,until freed 查看归档日志序列 SQL> archive log list;
归档日志默认是保存在oracle系统的闪回恢复区(Flash recovery area) 查看闪回恢复区参数 SQL> show parameter db_recovery_file_dest; NAME TYPE VALUE ----------------------- --------- ----------------------------
db_recovery_file_dest string /data/oracle/flash_recovery_area db_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 0 REDO LOG 0 0 0 ARCHIVED LOG 99.98 0 23
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0 FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
?可以看到ARCHIVE LOG日志已占用99.98%的闪存空间 方案一:删除过期归档日志,增大闪回恢复区空间大小若有需要先行将归档日志备份再删除 一、删除归档日志文件找到归档日志存放目录:/data/oracle/flash_recovery_area/ORCL/archivelog 删除不需要的归档日志文件 直接删除归档日志后,必须用RMAN维护控制文件 二、使用RMAN维护控制文件[[email?protected] ~]$ rman target sys/pass RMAN> crosscheck backup; #核对所有备份集
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;
五、添加定时任务,清理归档日志存储空间1、新建脚本文件存放文件夹[[email?protected] ~]# mkdir -p /backup/oracledata
2、编辑脚本内容[[email?protected] ~]# vim /backup/oracledata/oracle_archivelog_clean.sh
3、设置脚本文件权限[[email?protected] ~]# chmod 777 /backup/oracledata/oracle_archivelog_clean.sh
4、添加计划任务(系统调度任务和用户调度任务添加其一)系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下crontab文件,这个就是系统任务调度的配置文件。 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。 1)、系统任务调度编辑系统任务计划 [[email?protected] ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=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)、用户任务调度编辑用户任务计划 [[email?protected] ~]# crontab -e
无需再添加执行用户,否则任务计划无法执行,将有以下报错 [[email?protected] ~]# cat /var/spool/mail/root From [email?protected] Tue Aug 7 05:00:01 2018 Return-Path: <root@dbsrc.localdomain> X-Original-To: root Delivered-To: [email?protected] Received: 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: [email?protected] Subject: Cron <[email?protected]> root /backup/oracledata/oracle_archivelog_clean.sh Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-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[email?protected]> Date: Tue,7 Aug 2018 05:00:01 +0800 (CST) /bin/sh: root: command not found
查看用户计划 [[email?protected] ~]# crontab -l
5、查看cron服务是否在设定时间调用[[email?protected] ~]# cat /var/log/cron
Aug 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 0anacron
Aug 7 05:01:01 dbsrc run-parts(/etc/cron.hourly)[12804]: finished 0anacron
6、查看shell脚本是否报错(cat /var/spool/mail/用户名)[[email?protected] ~]# cat /var/spool/mail/root From [email?protected] Tue Aug 7 05:00:01 2018 Return-Path: <root@dbsrc.localdomain> X-Original-To: root Delivered-To: [email?protected] Received: by dbsrc.localdomain (Postfix,7 Aug 2018 05:00:01 +0800 (CST) From: "(Cron Daemon)" <root@dbsrc.localdomain> To: [email?protected] Subject: Cron <root@dbsrc> /backup/oracledata/oracle_archivelog_clean.sh Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-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[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服务[[email?protected] ~]# service crond restart
或者
[[email?protected] ~]# /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解决 [[email?protected] ~]# echo "unset MAILCHECK">> /etc/profile;
[[email?protected] ~]# source /etc/profile
? 方案二:修改归档目录位置一、创建新的归档文件存放目录[[email?protected] ~]# mkdir /data/oracle/archive_log
二、设置目录拥有者和权限[[email?protected] ~]# chown -R oracle:oinstall /data/oracle/archive_log
[[email?protected] ~]# 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 Enabled
Archive destination /data/oracle/archive_log
Oldest online log sequence 174
Next log sequence to archive 176
Current log sequence 176
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |