DROP_SNAPSHOT_RANGE過程不能清理表RM$_SNAPSHOT_DETAILS

来源:http://www.cnblogs.com/kerrycode/archive/2016/06/30/5631564.html
-Advertisement-
Play Games

今天在測試、驗證DROP_SNAPSHOT_RANGE不能徹底快照的過程中遇到了DROP_SNAPSHOT_RANGE無法清理WRM$_SNAPSHOT_DETAILS表中數據的情況,測試伺服器版本為10.2.0.5.0,AWR的快照是1小時採集一次數據,快照保留14天,也就是二周。具體情況如下所示... ...


    今天在測試、驗證DROP_SNAPSHOT_RANGE不能徹底快照的過程中遇到了DROP_SNAPSHOT_RANGE無法清理WRM$_SNAPSHOT_DETAILS表中數據的情況,測試伺服器版本為10.2.0.5.0,AWR的快照是1小時採集一次數據,快照保留14天,也就是二周。具體情況如下所示:

 
SQL> select * from v$version;       
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
PL/SQL Release 10.2.0.5.0 - Production
CORE    10.2.0.5.0      Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production
 
 
SQL> COL SNAP_INTERVAL FOR A20;
SQL> COL TETENTION FOR A26;
SQL> SELECT * FROM dba_hist_wr_control;
 
      DBID SNAP_INTERVAL        RETENTION                     TOPNSQL
---------- -------------------- --------------------------- ----------
3990839260 +00000 01:00:00.0    +00014 00:00:00.0             DEFAULT
 
SQL> SELECT MIN(SNAP_ID), MAX(SNAP_ID) FROM dba_hist_snapshot;
 
MIN(SNAP_ID) MAX(SNAP_ID)
------------ ------------
        7417        59195
 
SQL> 

clip_image001

SQLSELECT MIN(SNAP_ID), MAX(SNAP_ID) FROM dba_hist_snapshot;
 
MIN(SNAP_ID) MAX(SNAP_ID)
------------ ------------
        7417        59196
 
SQL> select dbid, status, count(*)
  2  from wrm$_snapshot
  3  group by dbid, status;
 
      DBID     STATUS   COUNT(*)
---------- ---------- ----------
3990839260          0       1250
 
SQL> select min(snap_id), max(snap_id), dbid from wrm$_snapshot
  2  group by dbid; 
 
MIN(SNAP_ID) MAX(SNAP_ID)       DBID
------------ ------------ ----------
        7417        59196 3990839260
 
SQL> exec dbms_workload_repository.drop_snapshot_range(7417,59196,3990839260);
 
PL/SQL procedure successfully completed.
 
SQLselect min(snap_id), max(snap_id), dbid from wrm$_snapshot
  2  group by dbid;
 
MIN(SNAP_ID) MAX(SNAP_ID)       DBID
------------ ------------ ----------
        7417        59197 3990839260
 
SQL> select min(snap_id), max(snap_id), dbid from wrm$_snapshot
  2  group by dbid;
 
MIN(SNAP_ID) MAX(SNAP_ID)       DBID
------------ ------------ ----------
        7417        59197 3990839260
 
SQL> SELECT MIN(SNAP_ID), MAX(SNAP_ID) FROM dba_hist_snapshot;
 
MIN(SNAP_ID) MAX(SNAP_ID)
------------ ------------
        7417        59197

clip_image003

 

    如上實驗所示,DROP_SNAPSHOT_RANGE不能清理WRM$_SNAPSHOT_DETAILS中的數據,當然對於的空間就不會釋放,另外,有些版本中Oracle僅僅修改了對應SNAPSHOT的狀態,而並沒有刪除快照。PS:有些人可能被上面又是DBA_HIST_SNAPSHOT,又是WRM$_SNAPSHOT_DETAILS弄得有點暈,其實DBA_HIST_SNAPSHOT是視圖,它的數據來源於表WRM$_SNAPSHOT_DETAILS,使用下麵SQL就能查看具體定義

SELECT OWNER, VIEW_NAME, TEXT FROM DBA_VIEWS WHERE VIEW_NAME='DBA_HIST_SNAPSHOT';

"select snap_id, dbid, instance_number, startup_time,
       begin_interval_time, end_interval_time,
       flush_elapsed, snap_level, error_count
from WRM$_SNAPSHOT
where status = 0"

 

其實這個是一個Bug引起的,官方文檔WRM$_SNAPSHOT_DETAILS Table is Not Purged (文檔 ID 1489801.1) 和文檔 Document 9797851.8 Bug 9797851 - WRM$_SNAPHOST_DETAILS is never purged 都有描述這個Bug

APPLIES TO:

Oracle Database - Enterprise Edition - Version 11.2.0.3 to 12.1.0.1 [Release 11.2 to 12.1]
Information in this document applies to any platform.


SYMPTOMS

The following symptoms are observed:

  • AWR purge code is not automatically purging WRM$_SNAPSHOT_DETAILS, as expected
  • Even after dropping a range of snap id's using dbms_workload_repository.drop_snapshot_range(), the table is not purged.
  • Table WRM$_SNAPSHOT_DETAILS grows indefinitely.
  • There are many orphaned entries in the table WRM$_SNAPSHOT_DETAILS.

The number of orphaned rows for the table WRM$_SNAPSHOT_DETAILS can be found by running the following sql:

SQL> SELECT MIN(snap_id),
  max(snap_id) ,
  cast(min(begin_time) as date) "Min Begin Time",
  CAST(MAX(begin_time) AS  DATE) "Max Begin Time",
  COUNT(*) 
FROM sys.wrm$_snapshot_details a 
WHERE NOT EXISTS 
  (SELECT * 
  FROM sys.wrm$_snapshot b 
  WHERE b.snap_id       = a.snap_id 
  AND a.dbid            = b.dbid 
  and a.instance_number = b.instance_number
  )


MIN(SNAP_ID) MAX(SNAP_ID) Min Begin Time       Max Begin Time         COUNT(*)
------------ ------------ -------------------- -------------------- ----------
           1         6993 29-nov-2011 21:00:01 24-sep-2012 22:00:17     577574

 

CAUSE

This issue is caused by an unpublished bug:

Document 9797851.8 Bug 9797851 - WRM$_SNAPHOST_DETAILS is never purged

The verification criteria for the bug are:

  1. Drop a range of snap id's using dbms_workload_repository.drop_snapshot_range()
  2. Check the corresponding snap id's in WRM$_SNAPSHOT_DETAILS.
  3. If snap id's from the range that you chose to drop are still present, then you are hitting this bug.

SOLUTION

The following solutions are available:

  • The Patch 9797851 for unpublished Bug 9797851 is available for some platforms and can be downloaded from My Oracle Support
  • If the patch is not available on your platform on a supported version, please contact Oracle Support.
  • This issue will be fixed from release Oracle 12.1

As a workaround, it is possible to manually purge the range of snap id's from the table WRM$_SNAPSHOT_DETAILS using appropriate delete statments under the guidance of Oracle Support.

Note:

 

在下麵版本中,這些bug才fix掉了,請留意自己的版本信息。

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 工程在經過多人後,往往會出現較多的垃圾,導致打包出來的ipa文件偏大,有時候我們會通過清理代碼來給程式瘦身,而瘦身ipa效果明顯的,主要通過清理程式里的無用圖片。 推薦一個清理圖片的應用 https://github.com/tinymind/LSUnusedResources 直接打開運行,點擊B ...
  • JNI簡介 JNI (Java Native Interface),Java的本地介面 JNI是Java眾多開發技術中的一門,意在利用本地代碼,為Java程式提供 更高效,更靈活的拓展。應用場景包括:對運行效率敏感的演算法實現、跨平臺應用移植、調用系統的底層驅動、調用硬體等。儘管Java一貫以其良好的 ...
  • 本文為原創文章,轉載請註明出處。 文章最後附帶DEMO,請需要的朋友下載。 從API 17開始,Android提供了Presentation類,為多屏異顯開發提供了官方支持,當然最終需求的實現也需要底層硬體及驅動的支持。 基本需求:控制輔屏全屏顯示與主顯不同的內容,且當主顯全屏顯示的內容變化後對輔屏 ...
  • PS:註意事項 一些坑在此聲明: 1、安裝Eclipse後,記得設置各項編碼格式為utf-8 請移步:http://www.blogjava.net/xiaomage234/archive/2014/05/13/413626.html(我也是網上查閱的~~) 2、下載Android SDK時需要翻牆 ...
  • 一、背景 很久之前就想寫一篇文章來記錄Cordova的使用了,上次用到它是在一年前,這次用到它是在這個月。下次用到它還不知道是什麼時候了,為了供以後翻閱,在此做個記錄。現在很多資料都是在硬碟里、網路收藏夾里。這次就一次性彙總到這裡吧。 二、簡介 Cordova提供了一組設備相關的API,通過這組AP ...
  • CocoaLumberjack是一個很好用的日誌列印工具,它可以幫助我們把工程中的日誌信息列印到終端或者輸出到文件中。 地址:https://github.com/CocoaLumberjack/CocoaLumberjack 類圖: 一:插件的運用 因為網上已經對CocoaLumberjack的運 ...
  • sql 的發佈訂閱,想必大家都瞭解,但一般都是在預設的1433的情況下搭建的,那麼1433換成別的埠,發佈還能正常工作嗎? 在一次客戶的真實場景上我就遇到了。 好了,今天不想寫太多,簡化下, 測試環境 發佈伺服器 電腦名 win-01 分發伺服器 電腦名 win-01 (與發佈用的同一臺) 訂 ...
  • 介紹 以前沒有太註意MySQL密碼安全策略的配置方法,只是人為了將密碼設為複雜密碼,但是沒有找到配置的方法,今天薑承堯的微信公眾號正好發佈了一篇關於這個的文章,所以在這裡也順便將方法寫下來。首先該功能是在5.5以後的mysql版本才引入的插件,預設源碼安裝和二進位安裝都沒有啟用該功能,如果沒有開啟該 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...