您好,登錄后才能下訂單哦!
維護的一個庫,最近發現undo表空間的使用率已經到了95%。
讓undo表空間的自動擴展,或新建undo表空間進行切換都可以解決這個問題。
undo表空間自動擴展,可能會導致undo不釋放,undo表空間的增大,浪費存儲空間。
新建undo表空間進行切換,也需要人工干預。
能不能讓Oracle自動進行undo表空間的收縮呢?查了MOS,找到一種方法。
設置undo表空間為自動擴展,并設置數據文件自動擴展的最大值MAXSIZE。
這樣可以不用調整undo_retention,在最大限度滿足閃回的同時,
也可以避免undo表空間使用率過高,不釋放的問題。
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 1800 undo_tablespace string UNDOTBS1
SQL> SELECT autoextensible FROM dba_data_files WHERE tablespace_name = 'UNDOTBS1';AUTOEXTENSIBLE--------------YES SQL> SELECT (sum(blocks) * 8) / 1024, status2 FROM dba_undo_extents group by status;(SUM(BLOCKS)*8)/1024 STATUS-------------------- ---------------------6648.375 UNEXPIRED504.625 EXPIRED
設置undo表空間為自動擴展,并設置數據文件自動擴展的最大值MAXSIZE
SQL>ALTER DATABASE DATAFILE '/opt/ora11g/datafile/LiangWei/undotbs01.dbf' AUTOEXTEND ON NEXT 1M MAXSIZE 8192M
經過大約5到10分鐘后,查看undo表空間使用率
SQL>SELECT ((SELECT (NVL(SUM(bytes), 0))FROM dba_undo_extentsWHERE tablespace_name = 'UNDOTBS1'AND status IN ('ACTIVE', 'UNEXPIRED')) * 100) /(SELECT SUM(bytes)FROM dba_data_filesWHERE tablespace_name = 'UNDOTBS1') PCT_INUSEFROM dual; PCT_INUSE----------5.50333658
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。