dbms_stats.import_table_stats匯入報錯ORA-20000
將主庫的統計資訊透過expdp/impdp傳輸到測試庫,然後呼叫dbms_stats.import_table_stats匯入,卻遭遇以下錯誤
SQL> exec dbms_stats.import_table_stats(ownname => user,tabname => 'a',stattab => 'a_stat');
begin dbms_stats.import_table_stats(ownname => user,tabname => 'a',stattab => 'a_stat'); end;
ORA-20000: TABLE "SYS"."a_stat" does not exist or insufficient privileges
ORA-06512: at "SYS.DBMS_STATS", line 7115
ORA-06512: at "SYS.DBMS_STATS", line 8016
ORA-06512: at line 2
表明明屬於justin使用者,錯誤資訊卻顯示該API去查詢sys使用者
呼叫10046,發現錯誤出現在哪裡了,這是語句終止前最後一條
select obj#,type#,ctime,mtime,stime,status,dataobj#,flags,oid$, spare1, spare2 from obj$ where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
END OF STMT
PARSE #12:c=1000,e=707,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1273851541041681
BINDS #12:
kkscoacd
Bind#0
acdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
acflg=08 fl2=0001 frm=00 csi=00 siz=24 ff=0
kxsbbbfp=2a97487930 bln=22 avl=01 flg=05
value=0
Bind#1
acdty=01 mxl=32(19) mxlc=00 mal=00 scl=00 pre=00
acflg=18 fl2=0001 frm=01 csi=871 siz=32 ff=0
kxsbbbfp=2a974878f8 bln=32 avl=19 flg=05
value="a"
Bind#2
acdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
acflg=08 fl2=0001 frm=00 csi=00 siz=24 ff=0
kxsbbbfp=2a974878c8 bln=24 avl=02 flg=05
value=1
user#=0對應的是sys使用者,
SQL> select name,user# from USER$ where user# =0;
NAME USER#
------------------------------ ----------
SYS 0
以sys使用者登入
SQL> create table a_stat as select * from justin.a_stat;
Table created.
SQL> show user;
USER is "SYS"
然後繼續
SQL> exec dbms_stats.import_table_stats(ownname => 'justin',tabname => 'a',stattab => 'a_stat');
PL/SQL procedure successfully completed
現在則成功,可為什麼為import_table_stats會到sys裡面去查詢表哪?
把表drop purge掉,重新測試,剛才的現象重現,換了一個表進行同樣的測試卻能成功,可見並不是bug導致,接下來使用ctas建立新表,沒有問題
SQL> create table a_middle as select * from a where 1=0;
Table created
SQL> exec dbms_stats.import_table_stats(ownname => 'justin',tabname => 'a_middle',stattab => 'a_stat');
PL/SQL procedure successfully completed
a_middle比起a缺失的是其上的索引
初步懷疑是表a上的索引導致的
SQL> select owner,index_name from dba_indexes where table_name ='a';
OWNER INDEX_NAME
------------------------------ ------------------------------
justin justin_id
SYS justin_time
果然,第三個索引的owner居然是sys,新增引數statown
SQL> exec dbms_stats.import_table_stats(ownname => 'justin',tabname => 'a',stattab => 'a_stat',statown => 'justin');
PL/SQL procedure successfully completed
最後解決方案,把索引justin_time刪掉然後在justin使用者下重建,錯誤消失。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-694582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql匯入報錯怎麼解決?MySql
- 匯入sql時報日期型別錯誤SQL型別
- oracle匯入TYPE物件報錯ORA-02304Oracle物件
- oracle 匯入報錯:field in data file exceeds maximum lengthOracle
- Python匯入包報錯(沒有這個包)Python
- impdp匯入報ORA-00001 ORA-04088錯誤
- mysql匯入sql檔案報錯 ERROR 2013 2006 2002MySqlError
- PyCharm匯入Selenium包時報錯,需要升級pipPyCharm
- vs2022匯入optional庫optional還報錯,解決
- Mysql資料庫使用Navicat Mysql匯入sql檔案報錯MySql資料庫
- MySQL:客戶端匯入資料Terminal close -- query aborted報錯MySql客戶端
- 若依框架匯入阿里OSS報錯問題解決方案框架阿里
- [轉]Android Studio匯入工程報錯 Error:Cause: peer not authenticated 解決方案AndroidError
- Laravel 使用 laravel-excel擴充套件包(maatwebsite/excel)匯入報錯LaravelExcel套件Web
- expdp匯出報錯ORA-39127
- ORACLE 資料泵impdp匯入報錯之ORA-31693 ORA-04098Oracle
- 【MySQL篇】Navicat匯入SQL大檔案報錯終極解決方案MySql
- 匯入 appium 報 SyntaxError: invalid syntaxAPPError
- Excel匯入null錯誤解決方式ExcelNull
- MYSQL5.7.22全庫備份匯入MYSQL8.0.20報錯ERROR3554MySqlError
- 登入harbor報錯
- vue2匯入專案遇到錯誤Vue
- python匯入dlib時出錯解決方法Python
- Spark原始碼編譯與匯入IDEA除錯Spark原始碼編譯Idea除錯
- ORACLE匯入遇到ORACLE錯誤959解決方法Oracle
- idea匯入專案報Maven version is not definedIdeaMaven
- Nuxtjs如果使用useHead()匯入swiper,除了在onMounted呼叫,切換報錯前面使用 await nextTick();UXJSAI
- Activity 流程模型匯入匯出-activity流程模型匯入匯出模型
- PPT匯入3D模型匯入出現錯誤或者模型紋理消失的解決方法3D模型
- PysimpleGui sg.Image()匯入圖片總是報錯,有什麼解決辦法嗎GUI
- 如何解決偶然Maven專案中匯入依賴,卻一直報錯,unresolved dependencyMaven
- MyISAM DEFAULT CHARACTER SET utf8 提示匯入錯誤
- Mysql匯入&匯出MySql
- doris匯入匯出
- esayExcel匯入匯出Excel
- exp匯出報錯EXP-00106問題處理
- 資料庫匯入匯出時報ORA-01843的解決方法資料庫
- vue匯入錯誤 eslintrc.js語法的問題VueEsLintJS
- vue excel匯入匯出VueExcel