首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

请问DBMS_METADATA.GET_DDL报错 error stack

2012-09-20 
请教DBMS_METADATA.GET_DDL报错 error stackpl/sql执行SELECT DBMS_METADATA.GET_DDL(TABLE,u.table_nam

请教DBMS_METADATA.GET_DDL报错 error stack
pl/sql执行

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) 
  FROM ALL_TABLES u
  WHERE u.owner = 'COMM' and u.nested='NO' 
  AND (u.iot_type is null or u.iot_type='IOT');

error stack


CMD窗口执行

SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
  2 FROM ALL_TABLES u
  3 WHERE u.owner = 'COMM' and u.nested='NO'
  4 AND (u.iot_type is null or u.iot_type='IOT');
ERROR:
ORA-31603: 对象 "AAAA" 属于类型 TABLE, 在方案 "SYS" 中未找到
ORA-06512: 在 "SYS.DBMS_METADATA", line 1968
ORA-06512: 在 "SYS.DBMS_METADATA", line 2011
ORA-06512: 在 "SYS.DBMS_METADATA", line 2343
ORA-06512: 在 "SYS.DBMS_METADATA", line 3247
ORA-06512: 在 "SYS.DBMS_METADATA", line 4863
ORA-06512: 在 line 1


我看网上的解释是共享池和java pool太小了 我手动更改了一下 还是报这个错

在此请教各位高手了

[解决办法]
数据量太大了,那就写个循环来取吧

SQL code
begin  for rec in (    select table_name from all_tables u      where u.owner = 'COMM' and u.nested='NO'      and (u.iot_type is null or u.iot_type='IOT'))  loop    dbms_output.put_line(dbms_metadata.get_ddl('TABLE', rec.table_name));  end loop;end;
[解决办法]
提示很明确,ORA-31603: 对象 "AAAA" 属于类型 TABLE, 在方案 "SYS" 中未找到
这个表是用户 COMM的,而不是sys的。
所以,再调用的时候,应该加上属主参数
DBMS_METADATA.GET_DDL('TABLE',u.table_name,'COMM');

热点排行