ORACLE 11G DB RAC ORA-00257archiver error解決辦法

來源:互聯網
上載者:User

標籤:orcale11g rac   ora00257   處理asm磁碟空間不足問題

ORA-00257archiver error解決辦法

1.之前有處理單機過oracle 11.2.0.4歸檔日誌磁碟空間不足的問題 ,但是沒有處理過ORACLE RAC的歸檔日誌磁碟空間不足的問題 

所以沒有預想到會是出現asm磁碟空間不足的議題


Oracle資料庫是目前業界最常用的大型資料庫系統,我在單機ORACLE的實際項目中有遇到出現ORA-00257錯誤(空間不足錯誤),

通過尋找資料,發現絕大部分說這是由于歸檔日誌太多,佔用了全部的硬碟剩餘空間導致的,可通過簡單刪除日誌或加大儲存空間就能夠解決。但是我在Oracle11g RAC上兩個RAC節點發現,它們的儲存空間都還有很大,卻也報這個錯誤,經過大半天的折騰,發現原來是Oracle11g RAC中的ASM磁碟空間不足導致的。


作業系統CentOS 6.5 x86-64Linux

資料庫Oracle 11.2.0.4.0


2.問題現象

資料庫系統已經運行了一年多,在5月8號開發同事用應用帳號串連資料庫後,發現無法串連登入,並且出現ORA-00257:archive error.connect internal only,until freed 錯誤。

提示歸檔錯誤,通過尋找ORACLE錯誤碼,解釋為硬碟空間不足,需要刪除歸檔日誌增加空間,但是伺服器兩個節點可用空間都還有1.4T,目前只用了10GB左右,這是為什麼呢?

且在5月8號用rman形式刪除清理系統100天以前的歸檔日誌以後好了,沒想到第二天5月9號又出現了。沒有理由啊,一天的歸檔日誌大過一百天的歸檔日誌,所以我就質疑資料庫報錯的準確性,認為這隻是表面的歸檔日誌空間已滿,實質性的問題卻還不知道。


3.診斷過程: 

因為資料庫不是我架設的,對oracle也不太熟,所以不知道歸檔日誌放置的路徑,通過語句尋找也得到的是個+ARC/back/archivelog/**之類的,但是我就是想破腦袋,用find的方式也找不到具體存放路徑。


a.查看資料庫REDOLOG情況

[[email protected]~]$ sqlplus / as sysdba

SQL> connect / as sysdba

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE#FIRST_TIME


---------- ---------- ---------- ---------- ---------- ------------------------------------------ --------------


1 1 101 52428800 1 NO CURRENT 3621973 9-5月 -17


2 1 99 52428800 1 NO INACTIVE 3600145 9-5月 -17


3 1 100 52428800 1 NO INACTIVE 3611932 9-5月 -17


發現ARC狀態為NO,表示系統沒法自動做歸檔。



b.查看Oracle資料庫後台歸檔服務進程 

[[email protected]~ ]ps -ef | grep oracle

發現grid       3081      1  0 10:14 ?        00:00:00 oracle+ASM1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

一個節點如上述服務正常,但另外一個節點卻LOCAL=NO的類似情況,反正服務不正常


c.查看FLASH_RECOVERY_AREA空間中各部分使用方式


SQL> select * from v$recovery_file_dest;


NAME

--------------------------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

----------- ---------- ----------------- ---------------

+BACKUP

 1.2885E+11  484442112       0       5

##註:空間大把的有

 

SQL> select * from v$flash_recovery_area_usage;


FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

CONTROL FILE    .04 0 1


REDO LOG    .33 0 4


ARCHIVED LOG      0 0 0



FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

BACKUP PIECE      0 0 0


IMAGE COPY      0 0 0


FLASHBACK LOG      0 0 0



FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES

---------------

FOREIGN ARCHIVED LOG      0 0 0

7 rows selected.

發現ARCHIVELOG、BACKUPPIRCR都不大,就是0,沒什麼佔用率,這樣FLASH_RECOVERY_AREA空間的空間還大把的有。


因為之前報錯時,不知道如何處理問題,就像直接shutdown immediate一個節點看看,沒想到半天沒任何反應,就直接使用shutdown abort強行關閉,該節點出現下列節點掛載執行個體報問題

d.故障節點掛載執行個體報錯:

SQL> startup  

ORACLE instance started.  

  

Total System Global Area  413372416 bytes  

Fixed Size                  2253784 bytes  

Variable Size             327158824 bytes  

Database Buffers           79691776 bytes  

Redo Buffers                4268032 bytes  

Database mounted.  

ORA-03113: end-of-file on communication channel  

Process ID: 2420  

Session ID: 1 Serial number: 5 


e.尋找資料發現,下面做法可行:

SQL> conn / as sysdba  

Connected to an idle instance.  

SQL> startup nomount  

ORACLE instance started.  

  

Total System Global Area  413372416 bytes  

Fixed Size                  2253784 bytes  

Variable Size             327158824 bytes  

Database Buffers           79691776 bytes  

Redo Buffers                4268032 bytes  

SQL> alter database mount;  

  

Database altered.  


SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0 


發現在開啟資料檔案報錯


SQL> recover database until time ‘2017-05-09‘

ORA-00283: recovery session canceled due to errors

ORA-01124: cannot recover data file 1 - file is in use or recovery

ORA-01110: data file 1: ‘+DATADG/fmall/datafile/system.259.907327891‘

用覆蓋形式恢複也報錯


f.後面有資料提出可使用RMAN作業系統刪掉歸檔來解決問題

rman下crosscheck然後delete。

[[email protected]~ ]rman target  sys/pass

RMAN > crosscheck archivelog all;

validation succeeded for archived log

archived log file name=+ARCH/fmall/archivelog/2017_03_08/thread_2_seq_6362.21528.938070989 RECID=43022 STAMP=938070990

validation succeeded for archived log

RMAN-06900: WARNING: unable to generate V$RMAN_STATUS or V$RMAN_OUTPUT row

RMAN-06901: WARNING: disabling update of the V$RMAN_STATUS and V$RMAN_OUTPUT rows

ORACLE error from target database: 

ORA-01089: immediate shutdown in progress - no operations are permitted

Process ID: 14578

Session ID: 235 Serial number: 2647

校正日誌的可用性,報錯或者等待很久沒有結果出來


RMAN > delete archivelog all completed before ‘sysdate-30‘; 

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process

如果你刪除三十天前的歸檔日誌,等待很久卻沒有結果,甚至像上面一樣報錯可以參考我下面的做法


RMAN > delete force noprompt archivelog until time ‘sysdate-30‘; 

強制性刪除三十天前的歸檔日誌


網站異常警示解除,說明歸檔日誌騰出空間,致使資料庫可正常提供應用串連。


g.執行個體證明,歸檔日誌空間已滿導致應用無法串連資料庫

有經驗的DBA告訴我說,RAC會有一個ASM的磁碟空間議題,我經過查詢ASM磁碟空間發現,我的媽呀,ARCH的空間就才騰出282M。


SQL> select name,total_mb,free_mb from v$asm_disk;

NAME TOTAL_MB    FREE_MB

------------------------------ ---------- ----------

GRIDDG_0001           4768      4585

ARCH_0000           944137      282

DATADG_0000         1238390      1202771

GRIDDG_0000           4768      4553

BACKUP_0000          953675      949001


再次進入RMAN,使用delete archivelog的方式再刪除15天后,查看ASM磁碟空間大小:

SQL> select name,total_mb,free_mb from v$asm_disk;

NAME TOTAL_MB    FREE_MB

------------------------------ ---------- ----------

GRIDDG_0001            4768        4585

ARCH_0000             944137       716045

DATADG_0000            1238390      1202771

GRIDDG_0000            4768        4553

BACKUP_0000            953675       949001


空出了將近700多G的空間,太可怕了,短短十五天就能夠用掉將近七百多G的歸檔日誌空間,我的資料庫大小才1.1G,歸檔日誌就一天以十幾二十G的速度瘋長。一定是哪裡出了問題,必須徹查。

當然首先要做的估計就是把清理歸檔日誌命令寫成指令碼納入crontab裡,按一定時間進行處理。初步懷疑是應用程式sql語句中存在類似於死迴圈的東西,導致歸檔日誌如此龐大,後續有什麼發現,我將再次記錄下來。


致此,歸檔日誌空間已滿議題是暫時解決了。

本文出自 “10793382” 部落格,請務必保留此出處http://10803382.blog.51cto.com/10793382/1924973

ORACLE 11G DB RAC ORA-00257archiver error解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.