ORA-00257: archiver error. Connect internal only, until freed
查看歸檔日志序列
SQL> archive log list;
Automatic archival Enabled #自動(dòng)歸檔
Archive destination USE_DB_RECOVERY_FILE_DEST #歸檔目錄為指定的閃回恢復(fù)區(qū)
Oldest online log sequence 174 #最舊的在線日志序列
Next log sequence to archive 176 #下一個(gè)日志序列歸檔
Current log sequence 176 #當(dāng)前日志序列
歸檔日志默認(rèn)是保存在oracle系統(tǒng)的閃回恢復(fù)區(qū)(Flash recovery area)
查看閃回恢復(fù)區(qū)參數(shù)
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%的閃存空間
方案一:刪除過期歸檔日志,增大閃回恢復(fù)區(qū)空間大小
若有需要先行將歸檔日志備份再刪除
一、刪除歸檔日志文件
找到歸檔日志存放目錄:/data/oracle/flash_recovery_area/ORCL/archivelog
刪除不需要的歸檔日志文件
直接刪除歸檔日志后,必須用RMAN維護(hù)控制文件
二、使用RMAN維護(hù)控制文件
[oracle@dbsrc ~]$ rman target sys/pass
RMAN> crosscheck backup; #核對(duì)所有備份集
RMAN> run{
delete noprompt obsolete;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
}
RMAN> exit;
run{}中的命令被視為一個(gè)作業(yè),一個(gè)失敗整個(gè)命令停止執(zhí)行
delete obsolete; #刪除超出保存策略的備份
crosscheck archivelog all; #檢查無(wú)效的歸檔日志(失效的標(biāo)記為expired)
delete expired archivelog all; #刪除expired的歸檔日志
delete expired backup; #刪除所有失效的備份集
delete expired 刪除的是那些本來(lái)RMAN以為存在但是實(shí)際上在磁盤或者磁帶上已經(jīng)被刪除了的信息,刪除的只是RMAN資料庫(kù)中的記錄;
delete obsolete 刪除舊于備份保留策略定義的備份數(shù)據(jù)同時(shí)也更新RMAN資料庫(kù)以及控制文件。
noprompt 指無(wú)需確認(rèn)
三、增大閃回恢復(fù)區(qū)空間大小
SQL> alter system set db_recovery_file_dest_size=8G;
查看閃回恢復(fù)區(qū)參數(shù)
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
五、添加定時(shí)任務(wù),清理歸檔日志存儲(chǔ)空間
1、新建腳本文件存放文件夾
[root@dbsrc ~]# mkdir -p /backup/oracledata
2、編輯腳本內(nèi)容
[root@dbsrc ~]# vim /backup/oracledata/oracle_archivelog_clean.sh
#腳本內(nèi)容 (/backup/oracledata/oracle_archivelog_clean.sh)刪除三天前的所有歸檔文件
find /data/oracle/flash_recovery_area/ORCL/archivelog/ -mtime +3 -name "201*" -exec rm -rf {} \;
3、設(shè)置腳本文件權(quán)限
[root@dbsrc ~]# chmod 777 /backup/oracledata/oracle_archivelog_clean.sh
4、添加計(jì)劃任務(wù)(系統(tǒng)調(diào)度任務(wù)和用戶調(diào)度任務(wù)添加其一)
系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下crontab文件,這個(gè)就是系統(tǒng)任務(wù)調(diào)度的配置文件。
用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時(shí)郵件提醒等。用戶可以使用crontab工具來(lái)定制自己的計(jì)劃任務(wù)。所有用戶定義的crontab文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致。
1)、系統(tǒng)任務(wù)調(diào)度
編輯系統(tǒng)任務(wù)計(jì)劃
[root@dbsrc ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
#SHELL 變量指定了系統(tǒng)要使用哪個(gè)shell,這里是bash
#PATH 變量指定了系統(tǒng)執(zhí)行命令的路徑
#MAILTO 變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶
# 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
#(*):代表所有 (,):多個(gè)值間隔 (-):范圍連接符
#(/)指定時(shí)間間隔頻率,例如(*/10)如果在minute字段,表示每十分鐘執(zhí)行一次
# 以管理員身份每天凌晨05:00,執(zhí)行相應(yīng)目錄下的腳本任務(wù)
0 5 * * * root /backup/oracledata/oracle_archivelog_clean.sh
2)、用戶任務(wù)調(diào)度
編輯用戶任務(wù)計(jì)劃
[root@dbsrc ~]# crontab -e
#以管理員身份每天凌晨05:00,執(zhí)行相應(yīng)目錄下的腳本
0 5 * * * /backup/oracledata/oracle_archivelog_clean.sh
無(wú)需再添加執(zhí)行用戶,否則任務(wù)計(jì)劃無(wú)法執(zhí)行,將有以下報(bào)錯(cuò)
[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: 20180806210001.9662C2827@dbsrc.localdomain>
Date: Tue, 7 Aug 2018 05:00:01 +0800 (CST)
/bin/sh: root: command not found
查看用戶計(jì)劃
[root@dbsrc ~]# crontab -l
0 5 * * * /backup/oracledata/oracle_archivelog_clean.sh
5、查看cron服務(wù)是否在設(shè)定時(shí)間調(diào)用
[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腳本是否報(bào)錯(cuò)(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: 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服務(wù)
[root@dbsrc ~]# service crond restart
或者
[root@dbsrc ~]# /etc/init.d/crond restar
注釋
service crond start //啟動(dòng)服務(wù)
service crond stop //關(guān)閉服務(wù)
service crond restart //重啟服務(wù)
service crond reload //重新載入配置
service crond status //查看服務(wù)狀態(tài)
crontab [-u user] [ -e | -l | -r ]
-e:編輯某個(gè)用戶的crontab文件內(nèi)容。如果不指定用戶,則表示編輯當(dāng)前用戶的crontab文件。
-l:顯示某個(gè)用戶的crontab文件內(nèi)容,如果不指定用戶,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容。
-r:從/var/spool/cron目錄中刪除某個(gè)用戶的crontab文件,如果不指定用戶,則默認(rèn)刪除當(dāng)前用戶的crontab文件。
-i:在刪除用戶的crontab文件時(shí)給確認(rèn)提示。
#提示You have new mail in /var/spool/mail/root解決
[root@dbsrc ~]# echo "unset MAILCHECK">> /etc/profile;
[root@dbsrc ~]# source /etc/profile
方案二:修改歸檔目錄位置
一、創(chuàng)建新的歸檔文件存放目錄
[root@dbsrc ~]# mkdir /data/oracle/archive_log
二、設(shè)置目錄擁有者和權(quán)限
[root@dbsrc ~]# chown -R oracle:oinstall /data/oracle/archive_log
[root@dbsrc ~]# chmod –R 775 /data/oracle/archive_log
三、禁止往閃回恢復(fù)區(qū)放歸檔日志
SQL> alter system set db_recovery_file_dest='';
四、設(shè)置歸檔日志存放目錄
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
總結(jié)
以上所述是小編給大家介紹的Oracle GoldenGate同步服務(wù)歸檔空間維護(hù),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- 基于django2.2連oracle11g解決版本沖突的問題
- django連接oracle時(shí)setting 配置方法
- Go語(yǔ)言連接Oracle數(shù)據(jù)庫(kù)的方法