ORA-19706: Invalid SCN 的一點總結
最近幾個客戶到遇到了ORA-19706: Invalid SCN
這個錯誤時由於SCN激增超過SCN HEADROOM導致。
SCN HEADROOM由在CPUJAN2012引入的一個引數_external_scn_rejection_threshold_hours控制,其作用是防止過高的CPU被傳播過來。
1.該引數不一定能防止傳播:
某客戶的一套5個庫組成的系統,11.2.0.3.1,其中一個庫被傳染了很高的SCN,而其他庫正常,_external_scn_rejection_threshold_hours引數為24,導致業務發生故障。
2.有該引數後,在拒絕SCN傳播的同時,會做CDMP
同樣是這套系統,一個資料庫被外圍系統連線的比較多,其由於已經是11.2.0.3.1,包含了CPUJAN2012,其拒絕了SCN傳播,但是其不停的寫CDMP,當監控發現檔案系統到達90%時,開始人工介入刪除CDMP,刪除速度跟不上產生速度。開始擴檔案系統,由於擴的時候檔案系統利用已經100%,擴檔案系統動作卡死,資料庫完全HANG住。
3.CPUJAN2012在增加該引數的同時,引入了其他導致SCN激增的問題
某系統,10204,打了10.2.0.4.11後,其SCN自增突然無原因變快,可能是觸發了BUG:12780098。其可能是10204.11引入的問題
4.對於沒有安裝CPUJAN2012的資料庫,從當前經驗來看,其是安全的
其他兩個客戶,大量9i,10g的庫,並且這些庫都未安裝CPUJAN2012,SCN HEADROOM低值1小時。
從現在觀察的情況看,未安裝CPUJAN2012的資料庫正常,只是存在一些DBLINK的報錯,未發生當機
只有唯一一個安裝了CPUJAN2012的10204的RAC庫,其中一個節點經常性由於ORA-600[16384]當機
所以,不要考慮盲目升級
5.當前已知的幾個SCN自增速度過快的BUG:
12780098 12748240 13916709 13503598
6.處理該問題的步驟:
斷開和外圍系統的連線,如省局斷開到總局的連線。
觀察SCN是否持續下降,如果仍然持續下降,那麼說明自己有問題,如果沒有,說明受到其他地方的影響
如果自己有問題,使用下面SQL檢查所有資料庫的自增,隔離異常增長的資料庫
CREATE OR REPLACE FUNCTION F_SLEEP(AN_SEC NUMBER)
RETURN NUMBER
AS
BEGIN
dbms_lock.sleep(AN_SEC);
RETURN AN_SEC;
END;
/
----------------------------------------------------
SET pagesize 999 linesize 130
break on ID
col info for a50
set timing on
WITH SAMPLE AS (
select /*+MATERIALIZE*/* from(
-- **************************************************************************
select /*+leading(b) use_nl(a)*/* FROM
-- view a beg -------------------------------------------------------------
(SELECT VALUE FROM v$sysstat WHERE NAME='calls to kcmgas'
UNION ALL
SELECT (0-F_SLEEP(10)) s1
FROM dual ) a,
-- view b beg -------------------------------------------------------------
(select * from dual connect by rownum<=12) b
-- **************************************************************************
) where VALUE>0)
SELECT (VALUE-LAG(VALUE) OVER(ORDER BY VALUE))/10 KCMGAS FROM SAMPLE;
7.隔離出異常機器,加大監控即可,補丁不是必須的。
如果考慮要打補丁,一定要安裝該版本最新的PATCHSET+PSU。10204最好能升級到10205。
並且整個DBLINK連線的網狀機器都需要升級,只升級部分機器意義不大
這個錯誤時由於SCN激增超過SCN HEADROOM導致。
SCN HEADROOM由在CPUJAN2012引入的一個引數_external_scn_rejection_threshold_hours控制,其作用是防止過高的CPU被傳播過來。
1.該引數不一定能防止傳播:
某客戶的一套5個庫組成的系統,11.2.0.3.1,其中一個庫被傳染了很高的SCN,而其他庫正常,_external_scn_rejection_threshold_hours引數為24,導致業務發生故障。
2.有該引數後,在拒絕SCN傳播的同時,會做CDMP
同樣是這套系統,一個資料庫被外圍系統連線的比較多,其由於已經是11.2.0.3.1,包含了CPUJAN2012,其拒絕了SCN傳播,但是其不停的寫CDMP,當監控發現檔案系統到達90%時,開始人工介入刪除CDMP,刪除速度跟不上產生速度。開始擴檔案系統,由於擴的時候檔案系統利用已經100%,擴檔案系統動作卡死,資料庫完全HANG住。
3.CPUJAN2012在增加該引數的同時,引入了其他導致SCN激增的問題
某系統,10204,打了10.2.0.4.11後,其SCN自增突然無原因變快,可能是觸發了BUG:12780098。其可能是10204.11引入的問題
4.對於沒有安裝CPUJAN2012的資料庫,從當前經驗來看,其是安全的
其他兩個客戶,大量9i,10g的庫,並且這些庫都未安裝CPUJAN2012,SCN HEADROOM低值1小時。
從現在觀察的情況看,未安裝CPUJAN2012的資料庫正常,只是存在一些DBLINK的報錯,未發生當機
只有唯一一個安裝了CPUJAN2012的10204的RAC庫,其中一個節點經常性由於ORA-600[16384]當機
所以,不要考慮盲目升級
5.當前已知的幾個SCN自增速度過快的BUG:
12780098 12748240 13916709 13503598
6.處理該問題的步驟:
斷開和外圍系統的連線,如省局斷開到總局的連線。
觀察SCN是否持續下降,如果仍然持續下降,那麼說明自己有問題,如果沒有,說明受到其他地方的影響
如果自己有問題,使用下面SQL檢查所有資料庫的自增,隔離異常增長的資料庫
CREATE OR REPLACE FUNCTION F_SLEEP(AN_SEC NUMBER)
RETURN NUMBER
AS
BEGIN
dbms_lock.sleep(AN_SEC);
RETURN AN_SEC;
END;
/
----------------------------------------------------
SET pagesize 999 linesize 130
break on ID
col info for a50
set timing on
WITH SAMPLE AS (
select /*+MATERIALIZE*/* from(
-- **************************************************************************
select /*+leading(b) use_nl(a)*/* FROM
-- view a beg -------------------------------------------------------------
(SELECT VALUE FROM v$sysstat WHERE NAME='calls to kcmgas'
UNION ALL
SELECT (0-F_SLEEP(10)) s1
FROM dual ) a,
-- view b beg -------------------------------------------------------------
(select * from dual connect by rownum<=12) b
-- **************************************************************************
) where VALUE>0)
SELECT (VALUE-LAG(VALUE) OVER(ORDER BY VALUE))/10 KCMGAS FROM SAMPLE;
7.隔離出異常機器,加大監控即可,補丁不是必須的。
如果考慮要打補丁,一定要安裝該版本最新的PATCHSET+PSU。10204最好能升級到10205。
並且整個DBLINK連線的網狀機器都需要升級,只升級部分機器意義不大
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-749366/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-19706: invalid SCN 問題分析
- 關於SCN的總結測試
- Duplicate的一點總結
- ash的一點總結
- 一點總結
- oracle 學習總結篇三:SCN的理解Oracle
- clickhouse使用的一點總結
- flashback database的一點總結Database
- rowid的一點總結!
- 一點ASMM總結ASM
- 使用繫結變數的一點總結!變數
- 大學兩年的一點總結
- 總結的小知識點(一)
- 線段樹的一點總結
- 關於ORACLE的一點總結Oracle
- 有關role的一點總結!
- sql loader的一點總結SQL
- data buffer cache的一點總結。
- rowid一點總結
- 【體系結構】SCN與checkpoint(檢查點)
- in、exists操作與null的一點總結Null
- linux調優的一點總結Linux
- rman的一點簡單總結 1
- 左值右值的一點總結
- 列許可權的一點總結!
- oracle資料字典的一點總結!Oracle
- data buffer cache的一點總結 -- 轉
- profile中password limit的一點總結MIT
- sql load的一點小總結SQL
- dmt、lmt、mssm,assm的一點總結!SSM
- 以前學習sql的一點總結SQL
- 關於v-for的一點小總結
- GAN做影象翻譯的一點總結
- GAN做影像翻譯的一點總結
- 自定義定時器的一點總結定時器
- 新學Node-JS的一點總結JS
- 關於SGA設定的一點總結
- 和分割槽表相關的一點總結