如何利用errorstack分析exp或imp問題
利用errorstack event解決問題
某天現場人員報告說exp的時候報許可權不足的錯誤。
是用當前使用者作的使用者級別的exp,按理說應該沒有什麼許可權的問題。
按照現場的情況作了測試,果然重現了問題。
d:\Temp>exp parfile=exp.par
Export: Release 9.2.0.5.0 - Production on Tue Dec 21 22:27:13 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
EXP-00008: ORACLE error 1031 encountered
ORA-01031: insufficient privileges
EXP-00000: Export terminated unsuccessfully
其中exp.par的內容如下:
userid=scott/tiger
file=.\scott.dmp
indexes=y
grants=y
rows=y
constraints=y
owner=scott
direct=n
compress=n
feedback=10000
resumable=y
resumable_timeout=7200
log=.\export.log
沒有發現什麼問題,那麼作一個trace吧,於是決定使用errorstack event,由於exp是在命令列中直接執行的,所以只能對整個資料庫系統作trace,由於只是想知道ORA-01031錯誤的發生原因,所以用以下語句:
alter system set events '1031 trace name errorstack level 3';
如果想捕獲什麼錯誤,就直接用錯誤號作trace,此處我們想獲知ORA-01031的錯誤原因,所以使用了’1031 trace name errorstack level 3’。
然後重新執行exp,仍然報錯,這時候在udump目錄中生成了trace檔案,檢查檔案內容,發現:
*** SESSION ID:(15.210) 2004-12-21 22:22:36.704
*** 2004-12-21 22:22:36.704
ksedmp: internal or fatal error
ORA-01031: insufficient privileges
Current SQL statement for this session:
ALTER SESSION ENABLE RESUMABLE TIMEOUT 7200
原來問題出在ENABLE RESUMABLE部分,這是9i的新特性,用於在出現空間不足的問題時,掛起整個操作以等待操作人員解決空間問題。
只要確認了問題所在,就很好解決了,其實如果詳細地看過adminitrator文件,也就不會犯這個錯誤,文件裡面Enabling and Disabling Resumable Space Allocation部分很清楚地寫著:如果要使用resumbale特性,那麼必須有resumable系統許可權。
檢查現場使用者的許可權,發現只有connect和resource許可權。於是:
grant resumable to username;
當然如果象一些應用裡面那樣,使用者始終是具有DBA角色的話,那麼永遠也不會發生這個錯誤,因為DBA角色本來就具有esumable系統許可權。不過為了安全起見,我們的應用中使用者都不會具有DBA許可權。
解決問題的方法很簡單,沒什麼好說的,本文想介紹的也是發現問題的手段,也就是利用set events的方法。這個方法在我們對一個錯誤感到莫名其妙的時候往往會成為指路明燈。
作為本文的補充,提供幾個常見的用於Troubleshooting或者Tuning或者Interal研究的Oracle Events。
10032事件:用於dump排序操作的統計值,Level 10是最詳細的級別。
ALTER SESSION SET EVENTS '10032 trace name context forever, level 10';
10046事件:用於跟蹤SQL執行過程,這是我們在調整一個SQL時比較常見的方法。Level 12是最詳細的級別。
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
其中各個Level的含義:
1:顯示SQL語句,執行計劃和執行統計值
4:顯示級別1的內容和繫結變數
8:顯示級別1的那同和等待事件統計
12:顯示級別1的內容和繫結變數、等待事件統計
10053事件:當Oracle使用CBO進行執行計劃的生成時,可以使用這個事件對於執行計劃的生成過程進行跟蹤。
ALTER SESSION SET EVENTS '10053 trace name context forever, level 1';
10081事件:用於跟蹤HWM(高水位標誌)的變更
ALTER SESSION SET EVENTS '10081 trace name context forever, level
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-573063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用errorstack event解決問題Error
- Oracle Exp/Imp常見問題Oracle
- imp/EXP 表空間轉換問題
- Oracle exp/imp字符集相關問題Oracle
- exp/imp工具
- Oracle imp/expOracle
- [20160803]exp/imp語法問題.txt
- 解決Oracle中Exp/Imp大量資料處理問題Oracle
- 如何優化10g exp/imp優化
- 【EXP/IMP】使用EXP /IMP工具“模糊”匯出和匯入
- 大物件(blob)表或分割槽表的exp和imp物件
- oracle exp和impOracle
- oracle imp和expOracle
- exp imp資料
- oracle exp imp 用法Oracle
- EXP&IMP PIPE
- 探索Oracle之 EXP/IMP過程中的字符集問題Oracle
- 使用strace分析exp的奇怪問題
- 【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事項Oracle
- exp/imp匯入匯出版本問題和ORA-6550報錯
- exp和imp詳解
- 淺談exp/imp(上)
- 淺談exp/imp(下)
- exp/imp命令詳解
- exp/imp工具的使用
- IMP和EXP筆記筆記
- EXP/IMP 學習(五)
- EXP/IMP 學習(四)
- EXP/IMP 學習(三)
- EXP/IMP 學習(二)
- EXP/IMP 學習(一)
- EXP/IMP 學習(六)
- exp_imp實戰
- Oracle的exp/imp詳解Oracle
- exp,imp 遷移資料
- imp/exp資料遷移
- oracle exp_imp小記Oracle
- 大表exp/imp遷移