缥缈游侠-logzgh
===========================================================
当使用import_schema_stats时报出ORA-20000: Schema SUPER does not exist or insufficient privileges
===========================================================

客户将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);

后成功。

logzgh 发表于:2006.10.25 16:39 ::分类: ( Oracle技术 ) ::阅读:(973次) :: Permanent link
自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
网站链接...