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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysqlimport匯入報錯的排查MySqlImport
- PythonMySQLdb匯入libmysqlclient報錯PythonMySqlIBMclient
- mysql匯入報錯怎麼解決?MySql
- expdp 全庫匯入報錯總結
- magento sql 4G 匯入報錯SQL
- 匯入專案@override 報錯處理IDE
- oracle 匯入報錯:field in data file exceeds maximum lengthOracle
- exp/imp匯入匯出版本問題和ORA-6550報錯
- Python匯入包報錯(沒有這個包)Python
- 【ORACLE 匯入匯出】exp 錯誤Oracle
- oracle匯入TYPE物件報錯ORA-02304Oracle物件
- Mysql資料庫使用Navicat Mysql匯入sql檔案報錯MySql資料庫
- 資料泵匯入分割槽表統計資訊報錯(七)
- 資料泵匯入分割槽表統計資訊報錯(二)
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵匯入分割槽表統計資訊報錯(三)
- 資料泵匯入分割槽表統計資訊報錯(六)
- 資料泵匯入分割槽表統計資訊報錯(五)
- 若依框架匯入阿里OSS報錯問題解決方案框架阿里
- Laravel 使用 laravel-excel擴充套件包(maatwebsite/excel)匯入報錯LaravelExcel套件Web
- MySQL:客戶端匯入資料Terminal close -- query aborted報錯MySql客戶端
- cacti匯入模板報錯Error: XML:雜湊版本不存在.ErrorXML
- mysql匯入報錯Variable 'sql_notes' can't be set to the value of 'NULL'MySqlNull
- impdp匯入包含xmltype型別欄位空表報錯問題XML型別
- IMP同庫Type物件匯入報錯ORA-02304物件
- 【MySQL篇】Navicat匯入SQL大檔案報錯終極解決方案MySql
- percona MYSQL 5.7.13 5.7.14 MYSQLDUMP 匯入報錯delimiter (修改MYSQLDUMP程式碼)MySqlMIT
- IMP同庫Type物件匯入報錯ORA-02304(續)物件
- vs2022匯入optional庫optional還報錯,解決
- [轉]Android Studio匯入工程報錯 Error:Cause: peer not authenticated 解決方案AndroidError
- 匯入sql時報日期型別錯誤SQL型別
- Excel匯入null錯誤解決方式ExcelNull
- 使用BCP匯入資料犯的錯
- 使用工具類 使用poi匯入匯出excel報表Excel
- 【匯出匯入】匯出匯入 大物件物件
- 【匯入匯出】sqlldr 匯入案例SQL
- 匯入 appium 報 SyntaxError: invalid syntaxAPPError
- ORACLE exp/imp匯入報錯IMP-00009&IMP-00028&IMP-00015Oracle