Oracle GoldenGate同步服务归档空间维护【推荐】
ORA-00257:archivererror.Connectinternalonly,untilfreed
查看归档日志序列
SQL>archiveloglist; AutomaticarchivalEnabled#自动归档 ArchivedestinationUSE_DB_RECOVERY_FILE_DEST#归档目录为指定的闪回恢复区 Oldestonlinelogsequence174#最旧的在线日志序列 Nextlogsequencetoarchive176#下一个日志序列归档 Currentlogsequence176#当前日志序列
归档日志默认是保存在oracle系统的闪回恢复区(Flashrecoveryarea)
查看闪回恢复区参数
SQL>showparameterdb_recovery_file_dest; NAMETYPEVALUE ------------------------------------------------------------ db_recovery_file_deststring/data/oracle/flash_recovery_area db_recovery_file_dest_sizebiginteger3G
检查flashrecoveryarea的使用情况
SQL>select*fromV$FLASH_RECOVERY_AREA_USAGE; FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES ------------------------------------------------------------------ CONTROLFILE000 REDOLOG000 ARCHIVEDLOG99.98023 BACKUPPIECE000 IMAGECOPY000 FLASHBACKLOG000 FOREIGNARCHIVEDLOG000
可以看到ARCHIVELOG日志已占用99.98%的闪存空间
方案一:删除过期归档日志,增大闪回恢复区空间大小
若有需要先行将归档日志备份再删除
一、删除归档日志文件
找到归档日志存放目录:/data/oracle/flash_recovery_area/ORCL/archivelog
删除不需要的归档日志文件
直接删除归档日志后,必须用RMAN维护控制文件
二、使用RMAN维护控制文件
[oracle@dbsrc~]$rmantargetsys/pass RMAN>crosscheckbackup;#核对所有备份集 RMAN>run{ deletenopromptobsolete; crosscheckarchivelogall; deletenopromptexpiredarchivelogall; crosscheckbackup; deletenopromptexpiredbackup; } RMAN>exit;
run{}中的命令被视为一个作业,一个失败整个命令停止执行
deleteobsolete; #删除超出保存策略的备份
crosscheckarchivelogall; #检查无效的归档日志(失效的标记为expired)
deleteexpiredarchivelogall; #删除expired的归档日志
deleteexpiredbackup; #删除所有失效的备份集
deleteexpired 删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录;
deleteobsolete 删除旧于备份保留策略定义的备份数据同时也更新RMAN资料库以及控制文件。
noprompt 指无需确认
三、增大闪回恢复区空间大小
SQL>altersystemsetdb_recovery_file_dest_size=8G;
查看闪回恢复区参数
SQL>showparameterdb_recovery_file_dest;
四、重新检查flashrecoveryarea的使用情况
SQL>select*fromV$FLASH_RECOVERY_AREA_USAGE; FILE_TYPEPERCENT_SPACE_USEDPERCENT_SPACE_RECLAIMABLENUMBER_OF_FILES ------------------------------------------------------------------ CONTROLFILE000 REDOLOG000 ARCHIVEDLOG4.503 BACKUPPIECE000 IMAGECOPY000 FLASHBACKLOG000 FOREIGNARCHIVEDLOG000
五、添加定时任务,清理归档日志存储空间
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*"-execrm-rf{}\;
3、设置脚本文件权限
[root@dbsrc~]#chmod777/backup/oracledata/oracle_archivelog_clean.sh
4、添加计划任务(系统调度任务和用户调度任务添加其一)
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下crontab文件,这个就是系统任务调度的配置文件。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。
1)、系统任务调度
编辑系统任务计划
[root@dbsrc~]#vim/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root #SHELL变量指定了系统要使用哪个shell,这里是bash #PATH变量指定了系统执行命令的路径 #MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户 #Fordetailsseeman4crontabs #Exampleofjobdefinition: #.----------------minute(0-59) #|.-------------hour(0-23) #||.----------dayofmonth(1-31) #|||.-------month(1-12)ORjan,feb,mar,apr... #||||.----dayofweek(0-6)(Sunday=0or7)ORsun,mon,tue,wed,thu,fri,sat #||||| #*****user-namecommandtobeexecuted #(*):代表所有(,):多个值间隔(-):范围连接符 #(/)指定时间间隔频率,例如(*/10)如果在minute字段,表示每十分钟执行一次 #以管理员身份每天凌晨05:00,执行相应目录下的脚本任务 05***root/backup/oracledata/oracle_archivelog_clean.sh
2)、用户任务调度
编辑用户任务计划
[root@dbsrc~]#crontab-e #以管理员身份每天凌晨05:00,执行相应目录下的脚本 05***/backup/oracledata/oracle_archivelog_clean.sh
无需再添加执行用户,否则任务计划无法执行,将有以下报错
[root@dbsrc~]#cat/var/spool/mail/root Fromroot@dbsrc.localdomainTueAug705:00:012018 Return-Path:X-Original-To:root Delivered-To:root@dbsrc.localdomain Received:bydbsrc.localdomain(Postfix,fromuserid0) id9662C2827;Tue,7Aug201805:00:01+0800(CST) From:"(CronDaemon)" To:root@dbsrc.localdomain Subject:Cron root/backup/oracledata/oracle_archivelog_clean.sh Content-Type:text/plain;charset=UTF-8 Auto-Submitted:auto-generated Precedence:bulk X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: Message-Id:<20180806210001.9662C2827@dbsrc.localdomain> Date:Tue,7Aug201805:00:01+0800(CST) /bin/sh:root:commandnotfound
查看用户计划
[root@dbsrc~]#crontab-l 05***/backup/oracledata/oracle_archivelog_clean.sh
5、查看cron服务是否在设定时间调用
[root@dbsrc~]#cat/var/log/cron Aug705:00:01dbsrcCROND[12655]:(root)CMD(root/backup/oracledata/oracle_archivelog_clean.sh) Aug705:01:01dbsrcCROND[12795]:(root)CMD(run-parts/etc/cron.hourly) Aug705:01:01dbsrcrun-parts(/etc/cron.hourly)[12795]:starting0anacron Aug705:01:01dbsrcrun-parts(/etc/cron.hourly)[12804]:finished0anacron
6、查看shell脚本是否报错(cat/var/spool/mail/用户名)
[root@dbsrc~]#cat/var/spool/mail/root Fromroot@dbsrc.localdomainTueAug705:00:012018 Return-Path:X-Original-To:root Delivered-To:root@dbsrc.localdomain Received:bydbsrc.localdomain(Postfix,fromuserid0) id9662C2827;Tue,7Aug201805:00:01+0800(CST) From:"(CronDaemon)" To:root@dbsrc.localdomain Subject:Cron /backup/oracledata/oracle_archivelog_clean.sh Content-Type:text/plain;charset=UTF-8 Auto-Submitted:auto-generated Precedence:bulk X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: Message-Id:<20180806210001.9662C2827@dbsrc.localdomain> Date:Tue,7Aug201805:00:01+0800(CST) find:‘/data/oracle/flash_recovery_area/ORCL/archivelog/2018_08_04':Nosuchfileordirectory
7、重启crond服务
[root@dbsrc~]#servicecrondrestart
或者
[root@dbsrc~]#/etc/init.d/crondrestar
注释
servicecrondstart//启动服务 servicecrondstop//关闭服务 servicecrondrestart//重启服务 servicecrondreload//重新载入配置 servicecrondstatus//查看服务状态 crontab[-uuser][-e|-l|-r] -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。 -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。 -i:在删除用户的crontab文件时给确认提示。 #提示Youhavenewmailin/var/spool/mail/root解决 [root@dbsrc~]#echo"unsetMAILCHECK">>/etc/profile; [root@dbsrc~]#source/etc/profile
方案二:修改归档目录位置
一、创建新的归档文件存放目录
[root@dbsrc~]#mkdir/data/oracle/archive_log
二、设置目录拥有者和权限
[root@dbsrc~]#chown-Roracle:oinstall/data/oracle/archive_log [root@dbsrc~]#chmod–R775/data/oracle/archive_log
三、禁止往闪回恢复区放归档日志
SQL>altersystemsetdb_recovery_file_dest='';
四、设置归档日志存放目录
SQL>altersystemsetlog_archive_dest='/data/oracle/archive_log';
五、查看归档日志序列
SQL>archiveloglist; AutomaticarchivalEnabled Archivedestination/data/oracle/archive_log Oldestonlinelogsequence174 Nextlogsequencetoarchive176 Currentlogsequence176
总结
以上所述是小编给大家介绍的OracleGoldenGate同步服务归档空间维护,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。