真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

事務(wù)槽引起的ORA-600事件

問題描述

執(zhí)行 update 時(shí)出現(xiàn)告警:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了香坊免費(fèi)建站歡迎大家使用!

ORA-00600: 內(nèi)部錯誤代碼, 參數(shù): [4521], [11], [18446744073606860068], [11], [399824003], [18446744073709551615], [18446744073709551615], [], [], [], [], []

事務(wù)槽引起的 ORA-600 事件

相關(guān)概念

ITL描述

ITL(Interested Transaction List) 是 Oracle 數(shù)據(jù)塊內(nèi)部的一個組成部分,位于數(shù)據(jù)塊頭(block header),itl 由 xid,uba,flag,lck 和 scn/fsc 組成,用來記錄該塊所有發(fā)生的事務(wù),一個 itl 可以看作是一條事務(wù)記錄。當(dāng)然,如果這個事務(wù)已經(jīng)提交,那么這個 itl 的位置就可以被反復(fù)使用了,因?yàn)?itl 類似記錄,所以,有的時(shí)候也叫itl槽位。如果一個事務(wù)一直沒有提交,那么,這個事務(wù)將一直占用一個itl槽位,itl里面記錄了事務(wù)信息,回滾段的入口,事務(wù)類型等等。如果這個事務(wù)已經(jīng)提交,那么,itl 槽位中還保存的有這個事務(wù)提交時(shí)候的 SCN 號。

ITL個數(shù)其最小值為 1,由參數(shù) initrans 控制(由于兼容性的原因,oracle 會在對象的存儲塊分配兩個itl,所以 initrans 的最小值實(shí)際上為 2),最大值為 255,由參數(shù) maxtrans 控制,最大值參數(shù)在 10g 以后不能被修改,itl 是 block 級的概念,一個 itl 占用塊 46B 的空間,參數(shù) initrans 意味著塊中除去 block header 外一部分存儲空間無法被記錄使用(46B*initrans),當(dāng)塊中還有一定的 free space 時(shí),oracle 可以使用 free space 構(gòu)建 itl 供事務(wù)使用,如果沒有了 free space,那么,這個塊因?yàn)椴荒芊峙湫碌?itl,所以就可能發(fā)生 itl 等待。

簡述一下事務(wù)的流程

  1. 開始一個事務(wù),首先Oracle給這個事務(wù)分配XID,并找到一個回滾段,在回滾段頭塊將事務(wù)信息存放在事務(wù)表中,并給這個事務(wù)分配undo塊,并將undo塊的地址也寫入事務(wù)表中(UBA地址) 。

  2. 事務(wù)準(zhǔn)備修改一個數(shù)據(jù)塊,在該數(shù)據(jù)塊的頭部的事務(wù)槽中寫入事務(wù)信息(XID ,UBA(這個UBA指向相對應(yīng)的undo塊))。

  3. 開始修改數(shù)據(jù),將數(shù)據(jù)塊修改的前映像存放在 undo 塊中。

問題信息獲取

一般ORA-600的錯誤都會在后臺進(jìn)行記錄,下面是我們找到的記錄內(nèi)容

事務(wù)槽引起的 ORA-600 事件

根據(jù)記錄內(nèi)容,我們可以獲取到相應(yīng)的trace文件,仔細(xì)查看可知如下信息

  1. 異常語句(紅色遮住的部分為語句,由于涉及的客戶語句,且與本博客無關(guān),所以此處不顯示)
    事務(wù)槽引起的 ORA-600 事件

  2. 涉及到的函數(shù)
    事務(wù)槽引起的 ORA-600 事件

  3. ERROR的原因
    事務(wù)槽引起的 ORA-600 事件

  4. ITL 槽被占用了 24 個
    事務(wù)槽引起的 ORA-600 事件

  5. 產(chǎn)生了大量的行鎖
    事務(wù)槽引起的 ORA-600 事件

原因分析

根據(jù) mos,比對現(xiàn)象發(fā)現(xiàn)

  1. 版本復(fù)合,錯誤一致
    事務(wù)槽引起的 ORA-600 事件

  2. 函數(shù)調(diào)用一致
    事務(wù)槽引起的 ORA-600 事件

  3. 原因則是ITL事務(wù)槽滿造成的該事件

解決方案

通過重新創(chuàng)建表或索引并修改 INITRANS 或 PCTFREE 參數(shù)來增加表或索引的ITL能力,以便能夠處理更多并發(fā)事務(wù)。

  1. 增加INITRANS

    1. 根據(jù)表中事務(wù)的數(shù)量,我們需要改變初始值。這里改為 50:

      alter table <表名> INITRANS 50;
    2. 然后使用move重新組織表(alter table move;)

    3. 然后重新構(gòu)建這個表的所有索引,如下所示

      alter index <索引名> rebuild INITRANS 50;
  2. 增加 PCTFREE
    如果增加 INITRANS 不能解決這個問題,那么嘗試增加 PCTFREE。增加 PCTFREE 會保留更多的空間,因此將相同數(shù)量的行分散到更多的塊上。總的來說,這意味著有更多的 ITL 插槽可用。

    1. 將行擴(kuò)展到更多的塊中也有助于減少這個等待事件。

      alter table <表名> PCTFREE 20
    2. 然后使用move重新組織表(alter table move;)

    3. 重建索引

      alter index <索引名> rebuild PCTFREE 20
  3. 增加 INITRANS 和 PCTFREE 的組合

    1. 將 INITRANS 設(shè)置為 50,pct_free 設(shè)置為 20

      alter table <表名> PCTFREE 20 INITRANS 50
    2. 使用 move 重新組織表(alter table move;)

    3. 然后重新構(gòu)建表的所有索引,如下所示

      alter index  rebuild PCTFREE 20 INITRANS 50;

參考

  • ORA-00600: Internal Error Code, Arguments: [4521] (Doc ID 2648741.1)

  • Troubleshooting waits for 'enq: TX - allocate ITL entry' (Doc ID 1472175.1)


網(wǎng)站標(biāo)題:事務(wù)槽引起的ORA-600事件
瀏覽路徑:http://weahome.cn/article/gdhepp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部