1. 程式人生 > >報錯ORA-19809 ORA-19804

報錯ORA-19809 ORA-19804

acdb 優化策略 對象 使用 ros pac class policy seq

現象

技術分享圖片

問題檢查

查看群集狀態,發現歸檔掛起

[oracle@jydb1 ~]$ srvctl status database -d orcl -v

技術分享圖片

查看空間使用情況

#大小查看
SQL> show parameter db_recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +FRA
db_recovery_file_dest_size           big integer 18471M

#占用比查看
SQL> select sum(percent_space_used) from v$flash_recovery_area_usage; SUM(PERCENT_SPACE_USED) ----------------------- 99.88 #asm磁盤查看 SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup; GROUP_NUMBER NAME TOTAL_MB FREE_MB ------------ ------------------------------ ---------- ---------- 1 DATA 20480 7236 2 FRA 20480 1732
3 MGMT 51200 14408 4 OCR 3072 2204

結論:

db_recovery_file_dest_size已使用完,flash recovery area閃回恢復區空間滿,無法再歸檔。  

處理

解決辦法:
1.將歸檔設置到其他目錄,修改alter system set log_archive_dest = 其他路徑
2.轉移或者刪除閃回恢復區裏的歸檔日誌。
3.增大閃回恢復區。

適合我的方案:在RMAN下刪除目標數據庫中過期的或是刪除指定時間之前的歸檔日誌。

[oracle@jydb1 ~]$ rman target /

-- 運行這個命令可以把無效的expired的archivelog標出來。
RMAN> crosscheck archivelog all;

使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=101 實例 = racdb11 設備類型 = DISK
對歸檔日誌的驗證成功

...
...
...
對歸檔日誌的驗證成功
歸檔日誌文件名 = +FRA/ORCL/ARCHIVELOG/2018_09_10/thread_2_seq_69.291.986488695 RECID=150 STAMP=986488701
對歸檔日誌的驗證成功
歸檔日誌文件名 = +FRA/ORCL/ARCHIVELOG/2018_09_10/thread_2_seq_70.289.986488703 RECID=151 STAMP=986488703
已交叉檢驗的 80 對象

----刪除過期的歸檔日誌
RMAN> delete expired archivelog all;

釋放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=101 實例 = racdb11 設備類型 = DISK
說明與資料檔案庫中的任何歸檔日誌都不匹配

RMAN> delete archivelog until time "sysdate-10"; --刪除10天前的歸檔日誌。或者:delete noprompt archivelog until time "sysdate - 10";
或者:
RMAN> delete archivelog until time "to_date(‘2018-08-01 23:59:59‘,‘yyyy-mm-dd hh24:mi:ss‘)"; --刪除指定日期之前的所有歸檔日誌。

驗證

查看空間使用情況,看到已經恢復正常

SQL> select sum(percent_space_used) from v$flash_recovery_area_usage;

SUM(PERCENT_SPACE_USED)
-----------------------
                  29.31

查看數據庫狀態也恢復到了open

[oracle@jydb1 ~]$ srvctl status database -d orcl -v
實例 racdb11 正在節點 jydb1 上運行。實例狀態: Open。
實例 racdb12 正在節點 jydb2 上運行。實例狀態: Mounted (Closed),Open Initiated。

進一步優化策略

指定retention的策略,使得archivelog不至於這樣增加

RMAN> configure retention policy to recovery window of 7 days;
舊的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
新的 RMAN 配置參數:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
已成功存儲新的 RMAN 配置參數

  


---------------------
作者:weixin_40283570
來源:CSDN
原文:https://blog.csdn.net/weixin_40283570/article/details/81533204
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

報錯ORA-19809 ORA-19804