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太小了 我手动更改了一下 还是报这个错在此请教各位高手了  

解决方案 »

  1.   

    数据量太大了,那就写个循环来取吧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;
      

  2.   

    提示很明确,ORA-31603: 对象 "AAAA" 属于类型 TABLE, 在方案 "SYS" 中未找到
    这个表是用户 COMM的,而不是sys的。
    所以,再调用的时候,应该加上属主参数
    DBMS_METADATA.GET_DDL('TABLE',u.table_name,'COMM');