expdp導(dǎo)出數(shù)據(jù)時(shí)掠剑,ORA-31693,ORA-02354郊愧,ORA-01555錯(cuò)誤問題處理

expdp導(dǎo)出數(shù)據(jù)時(shí)朴译,ORA-31693井佑,ORA-02354,ORA-01555錯(cuò)誤問題處理

一眠寿、機(jī)器及數(shù)據(jù)庫配置
OS:RHEL6.5
內(nèi)核:2.6.32-431.el6.x86_64
CPU:4顆96c
內(nèi)存:256G

數(shù)據(jù)版本:oracle 11.2.0.4 rac 雙節(jié)點(diǎn)
數(shù)據(jù)文件存儲(chǔ):ASM
數(shù)據(jù)導(dǎo)出方式:expdp ... compression=all cluster=n parallel=12

二躬翁、報(bào)錯(cuò)信息
1)expdp日志報(bào)錯(cuò)信息

ORA-31693: Table data object "schema1"."table1" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01555: snapshot too old: rollback segment number 20 with name "_SYSSMU20_3347302954$" too small
......

2)實(shí)例上alter.log報(bào)錯(cuò)信息

Wed Aug 14 21:57:03 2019
ORA-01555 caused by SQL statement below (SQL ID: bcmcxyhhx3ns4, SCN: 0x09eb.de998b9e):
SELECT * FROM RELATIONAL("schema1"."table1")
......

可以看到,alter日志和expdp日志報(bào)錯(cuò)一致盯拱,是同一個(gè)問題盒发。

三、解決思路
ORA-01555問題狡逢,一般是undo表空間不足宁舰,或undo_retention參數(shù)設(shè)置太小,導(dǎo)致導(dǎo)出大表時(shí)奢浑,之前的undo記錄被覆蓋

1)表上沒有LOB字段
1.先檢查undo表空間使用率

#表空間使用率查詢SQL
SQL> SELECT UPPER(F.TABLESPACE_NAME) AS "表空間名",
    D.TOT_GROOTTE_MB AS "表空間大小(M)",
    D.TOT_GROOTTE_MB-F.TOTAL_BYTES AS "已使用空間(M)",
    TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
    F.TOTAL_BYTES AS "空閑空間(M)",
    F.MAX_BYTES AS "最大塊(M)"
    FROM (SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
    ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
    FROM SYS.DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME) F,
    (SELECT DD.TABLESPACE_NAME,
    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
    FROM SYS.DBA_DATA_FILES DD
    GROUP BY DD.TABLESPACE_NAME) D
    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;

2.檢查undo_retention參數(shù)設(shè)置

SQL> show parameter undo_retention;

3.檢查undo中最長查詢時(shí)間

SQL> select max(maxquerylen) from v$undostat;

小結(jié):
如果undo表空間使用率已滿蛮艰,擴(kuò)展undo表空間。
根據(jù)undo中最長查詢時(shí)間雀彼,設(shè)置undo_retention參數(shù)值印荔。

2)表上有LOB字段
oracle的lob大字段有自己的retention參數(shù),如果只調(diào)整undo_retention详羡,而沒有同步到lob大字段仍律,該參數(shù)還是默認(rèn)的900s,所以除了設(shè)置全局retention參數(shù)外实柠,
還應(yīng)設(shè)置lob字段的retention參數(shù)水泉。
1.檢查LOB字段retention

SQL> select table_name,column_name,pctversion,retention from dba_lobs where owner='SCHEMA1' and table_name='TABLE1';
 或
SQL> select column_name, pctversion, retention from user_lobs where table_name='TABLE1' 
    注意:如果表是使用之前的pctversion,要同步修改為retention

2.修改LOB字段retention時(shí)間

SQL>ALTER TABLE schema1.table1 MODIFY LOB(lob_colume)(retention);

四窒盐、解決問題
1)檢查表結(jié)構(gòu)草则,確認(rèn)表上是否有LOB字段

SQL> desc schema1.table1
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
POLICYNO                                  NOT NULL VARCHAR2(30)
ENDORSEQNO                                NOT NULL VARCHAR2(3)
PLANCODE                                  NOT NULL VARCHAR2(4)
RISKCODE                                  NOT NULL VARCHAR2(4)
CLAUSECODE                                NOT NULL VARCHAR2(12)
LINENO                                    NOT NULL NUMBER(20)
CLAUSECNAME                                        VARCHAR2(255)
CLAUSECONTEXT                                      VARCHAR2(2000)
TITLEIND                                  NOT NULL VARCHAR2(1)
SERIALNO                                  NOT NULL NUMBER(4,1)
READONLYIND                               NOT NULL VARCHAR2(1)
DISPLAYNO                                          NUMBER(7,2)
FLAG                                               VARCHAR2(2)
CREATED_BY                                         VARCHAR2(100)
DATE_CREATED                              NOT NULL DATE
UPDATED_BY                                         VARCHAR2(100)
DATE_UPDATED                              NOT NULL DATE

可見,表上沒有LOB字段蟹漓。

2)檢查undo表空間使用率
可以看到undo表空間使用率并不高炕横,節(jié)點(diǎn)1的使用率只有2%

UNDOTBS1                                 32867.98             663.04    2.02%        32204.94         3968
UNDOTBS2                                    25550             862.06    3.37%        24687.94         3968

3)檢查undo_retention

SQL> show parameter undo_retention;
    NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     900

4)檢查檢查undo中最長查詢時(shí)間

SQL> select max(maxquerylen) from v$undostat;
MAX(MAXQUERYLEN)
----------------
          11972

11972s約3.5小時(shí),數(shù)據(jù)庫的undo_retention=900(默認(rèn))葡粒,我們把保留時(shí)間設(shè)置為4小時(shí)(14400s)

5)設(shè)置undo_retention時(shí)間

alter system set undo_retention=14400 sid='*' scope=both;

五份殿、最終效果
expdp導(dǎo)出數(shù)據(jù)正常,報(bào)錯(cuò)消失嗽交。
1)參數(shù)undo_retention時(shí)間

SQL> show parameter undo_retention;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     14400

2)undo中最長查詢時(shí)間卿嘲,與之前沒有變化

SQL> select max(maxquerylen) from v$undostat;

MAX(MAXQUERYLEN)
----------------
        11972   

3)undo表空間使用率,相比之前有所增加

UNDOTBS1                                 32867.98            2103.04    6.40%        30764.94         3968
UNDOTBS2                                    25550            1822.06    7.13%        23727.94         3968

六夫壁、總結(jié)
分析產(chǎn)生該錯(cuò)誤的主要原因?yàn)榛貪L段設(shè)置太小拾枣,通常在UNDO回滾段中會(huì)保留數(shù)據(jù)庫在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù),用來保證數(shù)據(jù)的一致性讀。而在用戶利用數(shù)據(jù)泵工具執(zhí)行導(dǎo)出數(shù)據(jù)表操作時(shí)梅肤,又有其它用戶對(duì)該表進(jìn)行了修改司蔬,如果修改提交后UNDO中無足夠空間,之前保存在UNDO中的數(shù)據(jù)資料就會(huì)被覆蓋姨蝴,從而依賴于這些數(shù)據(jù)資料的操作就無法獲得一致性讀俊啼,導(dǎo)致數(shù)據(jù)遷移過程產(chǎn)生以上報(bào)錯(cuò)。而且Oracle由參數(shù)undo_retention指定時(shí)間去釋放UNDO回滾段似扔,所以如果數(shù)據(jù)遷移時(shí)長超過undo_retention指定時(shí)間也會(huì)導(dǎo)致快照過舊的問題產(chǎn)生吨些。

七、知識(shí)點(diǎn)
LOB字段的PCTVERSIOIN與RETENTION
1)老的方式:PCTVERSIOIN
這個(gè)參數(shù)關(guān)系到LOB數(shù)據(jù)的一致讀炒辉,指的是表lob字段所在的表空間需要預(yù)留給lob的前映象使用的最大百分比豪墅,默認(rèn)值是10。也就是說黔寇,只要使用不超過10%偶器,LOB字段的前映像的數(shù)據(jù)是不會(huì)被覆蓋的。
2) 新的方式(自動(dòng)還原段管理使用):RETENTION
Oracle用UNDO_RETENTION參數(shù)來決定在數(shù)據(jù)庫中保留多少已經(jīng)提交的UNDO數(shù)據(jù)缝裤。這種方式LOB段跟普通段使用相同的過期策略屏轰。

計(jì)算業(yè)務(wù)高峰期每秒產(chǎn)生undo數(shù)據(jù)塊的個(gè)數(shù)

SQL> select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市憋飞,隨后出現(xiàn)的幾起案子霎苗,更是在濱河造成了極大的恐慌,老刑警劉巖榛做,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唁盏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡检眯,警方通過查閱死者的電腦和手機(jī)厘擂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锰瘸,“玉大人刽严,你說我怎么就攤上這事”苣” “怎么了舞萄?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恕曲。 經(jīng)常有香客問我鹏氧,道長,這世上最難降的妖魔是什么佩谣? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮实蓬,結(jié)果婚禮上茸俭,老公的妹妹穿的比我還像新娘吊履。我一直安慰自己,他們只是感情好调鬓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布艇炎。 她就那樣靜靜地躺著,像睡著了一般腾窝。 火紅的嫁衣襯著肌膚如雪缀踪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天虹脯,我揣著相機(jī)與錄音驴娃,去河邊找鬼。 笑死循集,一個(gè)胖子當(dāng)著我的面吹牛唇敞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咒彤,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼疆柔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了镶柱?” 一聲冷哼從身側(cè)響起旷档,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎歇拆,沒想到半個(gè)月后鞋屈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡查吊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年谐区,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻卖。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宋列,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出评也,到底是詐尸還是另有隱情炼杖,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布盗迟,位于F島的核電站坤邪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罚缕。R本人自食惡果不足惜艇纺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧黔衡,春花似錦蚓聘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侣签,卻和暖如春塘装,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背影所。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工蹦肴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人型檀。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓冗尤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胀溺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裂七,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350