oracle 11g rac ORA-01555 快照過舊報錯處理

來源:互聯網
上載者:User

標籤:oracle   11g   rac   


ORA-01555 快照過舊,是資料庫中很常見的一個錯誤,比如當我們的事務需要使用undo來構建CR塊的時候,

而此時對應的undo 已經不存在了, 這個時候就會報ORA-01555的錯誤。

環境是Oracle 11g RAC 由於客戶執行一個比較複雜的SQL,使用PLSQL運行了88分鐘後出現報錯,這是一個要查看報表的SQL。


臨時的處理方法如下:

以下為虛擬機器類比操作,建議資料庫安裝的時候這個參數一定要提前調整最佳化一下,不要使用預設值。

[[email protected] ~]# su - oracle[[email protected] ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Fri Dec 23 10:39:44 2016Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing options[email protected]>show parameter undo;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------undo_management                      string      AUTOundo_retention                       integer     900     --預設15分鐘undo_tablespace                      string      UNDOTBS1[email protected]>[email protected]>alter system set undo_retention=10800 scope=both;System altered.


--查看錶空間容量

[email protected]>col tablespace_name for a15[email protected]>col free_rate for a15[email protected]>SELECT a.tablespace_name,             ROUND (a.total_size) "total_size(MB)",             ROUND (a.total_size) - ROUND (b.free_size, 3) "used_size(MB)",             ROUND (b.free_size, 3) "free_size(MB)",             ROUND (b.free_size / total_size * 100, 2) || ‘%‘ free_rate      FROM ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 total_size                  FROM dba_data_files              GROUP BY tablespace_name) a,             ( SELECT tablespace_name, SUM (bytes) / 1024 / 1024 free_size                 FROM dba_free_space             GROUP BY tablespace_name) b    WHERE a.tablespace_name = b.tablespace_name(+);TABLESPACE_NAME total_size(MB) used_size(MB) free_size(MB) FREE_RATE--------------- -------------- ------------- ------------- ---------------SYSAUX                     600       178.625       421.375 70.23%UNDOTBS1                   200        56.062       143.938 71.97%USERS                        5             1             4 80%SYSTEM                     700         287.5         412.5 58.93%UNDOTBS2                   200         6.687       193.313 96.66%
[email protected]> SELECT   tablespace_name, status, SUM (bytes) / 1024 / 1024 "Bytes(M)"        FROM   dba_undo_extents    GROUP BY   tablespace_name, status;TABLESPACE_NAME      STATUS      Bytes(M)TABLESPACE_NAME STATUS      Bytes(M)--------------- --------- ----------UNDOTBS1        UNEXPIRED         11UNDOTBS2        UNEXPIRED      2.125UNDOTBS1        EXPIRED      44.0625UNDOTBS2        EXPIRED       3.5625


1.出現ORA-01555錯誤,通常有2種情況:

    1)SQL語句執行時間太長,或者UNDO資料表空間過小,或者事務量過大,或者過於頻繁的提交,導致執行SQL過程中進行一致性讀時,SQL執行後修改的前鏡像(即UNDO資料)在UNDO資料表空間中已經被覆蓋,不能構造一致性讀塊(CR blocks)。  這種情況最多。

    2)SQL語句執行過程中,訪問到的塊,在進行延遲塊清除時,不能確定該塊的事務提交時間與SQL執行開始時間的先後次序。 這種情況很少。

 

 

2.第1種情況解決的辦法:

  1)增加UNDO資料表空間大小

  2)增加undo_retention 時間,預設只有15分鐘

  3)最佳化出錯的SQL,減少查詢的時間,首選方法

  4)避免頻繁的提交


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

oracle 11g rac ORA-01555 快照過舊報錯處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.