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_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维护控制文件

[oracle@dbsrc ~]$ rman target sys/pass

RMAN> 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 0
REDO LOG 0 0 0
ARCHIVED LOG 4.5 0 3
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN 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/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)、用户任务调度

编辑用户任务计划

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

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

[root@dbsrc ~]# cat /var/spool/mail/root

From root@dbsrc.localdomain  Tue Aug  7 05:00:01 2018
Return-Path: <root@dbsrc.localdomain>
X-Original-To: root
Delivered-To: root@dbsrc.localdomain
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: root@dbsrc.localdomain
Subject: Cron <root@dbsrc> 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: <.9662C2827@dbsrc.localdomain>
Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST) /bin/sh: root: command not found

查看用户计划

[root@dbsrc ~]# crontab -l

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

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

[root@dbsrc ~]# 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/用户名)

[root@dbsrc ~]# cat /var/spool/mail/root

From root@dbsrc.localdomain  Tue Aug  7 05:00:01 2018
Return-Path: <root@dbsrc.localdomain>
X-Original-To: root
Delivered-To: root@dbsrc.localdomain
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: root@dbsrc.localdomain
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: <.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 Enabled
Archive destination /data/oracle/archive_log
Oldest online log sequence 174
Next log sequence to archive 176
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. MySQL查询(未完结)

    MySql查询 单表查询: 查询所有字段 SELECT * FROM 表名; '*' 代表所有字段 查询指定字段 SELECT 字段名1, 字段名2 FROM 表名; 按照指定条件查询记录 1. 查询 ...

  2. Bzoj1498&1416: [NOI2006]神奇的口袋

    什么鬼双倍经验题??? Sol 考虑在第\(k\)次摸到\(y\)的概率 如果上次摸到\(y\),目前有\(sum\)个球,\(y\)有\(a[y]\)个,那么概率就是\(\frac{a[y]+d}{ ...

  3. 在IIS中浏览网站时出现:无法打开登录所请求的数据库 "***",登录失败

    在IIS中发布Web应用程序后,浏览网站时出现无法打开登录所请求的数据库 "***",登录失败错误,如下图所示: 解决办法:打开系统Web.Config配置文件,查看数据库连接串是 ...

  4. 遍历查询结果集,update数据

    select NULL mykey, * into #mytemp from dbo.DIM_DISTRIBUTOR declare @i int begin ) print @i )) where ...

  5. .net 面向对象程序设计深入](1)UML

    1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...

  6. QT网络编程Tcp下C/S架构的即时通信

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include <QDialog> #in ...

  7. Sandworm Attack小结

    这个漏洞刚出来时就分析过,当时大致弄明白了原理,但对很多细节和原理还是一知半解.后来开始找工作……今天终于有时间来把欠的这部分功课补上. 这个漏洞网上的各种中英文分析已经很多了,因此这里我只根据自己的 ...

  8. laravel where筛选会判断类型吗?

    laravel where筛选会判断类型吗? laravel where筛选会判断类型吗? laravel where筛选会判断类型吗? 这个说会判断不对,说不会判断也不对. 当字符串'1'和数值1是 ...

  9. Future Research Directions in Social Recommendation

    From the tutorial published by Martin Ester in RecSys 2013 Future Research Directions --Recommendati ...

  10. [原]Android打包之Eclipse打多渠道包

    Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" ...