发表于: 2006.10.25 16:39
分类: Oracle技术
出处: http://logzgh.itpub.net/post/3185/223918
---------------------------------------------------------------
客户将super用户下面所有表格的统计信息导到测试库中:
exec dbms_stats.import_schema_stats('SUPER','STATTAB',null,'SUPER',true);
但是报出了下述错误:
ORA-20000: Schema SUPER does not exist or insufficient privileges to analyze an object within it
ORA-06512: at "SYS.DBMS_STATS", line 4844
ORA-06512: at "SYS.DBMS_STATS", line 4867
ORA-06512: at "SYS.DBMS_STATS", line 5383
ORA-06512: at line 1
本来想查看这个过程的源代码,但是oracle把它加密了,无法看。
后来把10046事件打开,跟踪了一下,发现出错在HPCHEN_TB_YHYY表格上。
于是单独import这张表,
EXEC dbms_stats.import_table_stats('SUPER','HPCHEN_TEMP_ALL_INFO', null,'STATTAB',null,TRUE,'SUPER',false);
报出无法set area_id字段.
比较一下两边数据库,发现这张表格,两边的结构不一样。
于是怀疑就是这个问题引起的。
set serveroutput on
begin
for x in (select table_name from dba_tables where owner='SUPER')
loop
--dbms_output.put_line('TABLE : ' || x.table_name);
begin
dbms_stats.import_table_stats('SUPER',x.table_name, null,'STATTAB',null,TRUE,'SUPER',false);
exception
when others then
dbms_output.put_line('### ERROR: '||x.table_name || sqlerrm);
end;
end loop;
end;
运行结果为:
### ERROR: HPCHEN_TEMP_ALL_INFO ORA-20000: Unable to set values for column AREA_ID: does not exist or insufficient privileges
### ERROR: HPCHEN_TEMP_CSGD_XX ORA-20000: Unable to set values for column ACC_NBR: does not exist or insufficient privileges
### ERROR: HPCHEN_TEMP_NBR ORA-20000: Unable to set values for column ACCT_NBR: does not exist or insufficient privileges
### ERROR: HPCHEN_TEMP_XSRY ORA-20000: Unable to set values for column AREA_ID: does not exist or insufficient privileges
### ERROR: HPCHEN_TEMP_YHSJQD ORA-20000: Unable to set values for column APPL_DATE: does not exist or insufficient privileges
### ERROR: HPCHEN_YWSLQD ORA-20000: Unable to set values for column ACC_NBR: does not exist or insufficient privileges
### ERROR: HPCHEN_YWSLQD_WL ORA-20000: Unable to set values for column ACC_NBR: does not exist or insufficient privileges
### ERROR: SO_LAN_GENGX ORA-20000: Unable to set values for column ACCT_TYPE: does not exist or insufficient privileges
### ERROR: YX_LH_0801A ORA-20000: Unable to set values for column ACCT_NBR: does not exist or insufficient privileges
### ERROR: YX_LH_CCP ORA-20000: Unable to set values for column AREA: does not exist or insufficient privileges
这样很明显,这些表格都存在这个问题。
于是将这些表格从stattab表格中删掉。然后再执行:
exec dbms_stats.import_schema_stats('SUPER','STATTAB',null,'SUPER',true);后成功。











