ORA-00257: archiver error. Connect internal only, until freed


問題描述:本來還在愉快的工作中,突然同時通知客戶主數據庫無法登陸了,心中莫名的一緊,趕緊登陸數據庫查看,發現只有sys賬號可以正常登錄,其他賬號登錄均提示ORA00257錯誤。

image

趕緊百度一下,看大致的意思為歸檔日志寫滿了、閃回日志寫滿了。根據網上提供的方法進行查看:

select * from v$recovery_file_dest;
select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
select * from v$flash_recovery_area_usage;
select * from v$version;

發現根本沒有信息返回,應該是未開啟閃回日志,正好想起前一階段數據庫才開啟了歸檔日志,因此懷疑是歸檔日志寫滿的問題。歸檔日志信息可以在v$archived_log表中查詢到。

解決方法:

因為時間比較緊急,沒空給我進行慢慢的排查解決了(主要是我太菜),直接求助公司大神吧。具體解決步驟如下:

1、遠程登錄數據庫任意節點(現場為rac集群),切換到oracle賬號通過lsnrctl status命令查看監聽到的服務。

image

在執行lsnrctl status命令時候,如果提示命令未找到,很可能是環境變量的問題,通過source ~/.bash_profile命令使之生效即可。

2、到grid用戶下,分別執行以下命令,進入asmcmd命令行。

su – grid 
export ORACLE_SID=+ASM1
asmcmd

image

這里需要注意一下,su – grid 而不是su grid之前執行的時候就想當然的弄錯了,結果執行命令的時候一直報錯。

其簡單區別如下:

su - grid 要給grid 重新配置環境變量
su grid 使用切換到grid 用戶之前的那個用戶的環境變量。

執行lsdg命令查看磁盤組使用情況:

image

可以查看磁盤組總量,以及可使用量(我這里是刪除部分日志后的截圖),查看其可用空間是否滿足。

3、如果需要刪除歸檔日志,需要定位到歸檔日志目錄,查看歸檔日志情況。

cd +DATADG/orcl/archivelog

ls

image

4、根據自己需要,刪除執行的歸檔日志即可。例如,刪除2020年2月份的歸檔日志可以使用rm -rf 2020_02*命令。

優化建議:

對於出現這種情況,歸根結底是磁盤無法放下過多的歸檔日志,可以考慮:

1、掛接單獨的磁盤組存儲歸檔日志,並同步進行備份(推薦)。

2、對當前磁盤組進行擴容。

3、定期進行人工檢查,刪除部分歸檔日志以保證磁盤空間保持有剩余狀態,或者設置自動刪除較早的歸檔日志。


后續補充:通過下面語句可以查看磁盤歸檔日志的大小占用情況。

SELECT TRUNC(FIRST_TIME) "日期",
TRUNC(SUM(BLOCKS*BLOCK_SIZE)/1024/1024/1024,2) "大小(GB/DAY)"
FROM V$ARCHIVED_LOG GROUP BY TRUNC(FIRST_TIME)  ORDER BY 1 DESC

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM