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

论坛 期权论坛 脚本     
niminba   2021-5-23 04:59   3151   0

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、添加计划任务(系统调度任务和用户调度任务添加其一)

系统

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP