【问题标题】:oracle ORA-31603 even when sysdbaoracle ORA-31603 即使当 sysdba
【发布时间】:2017-07-17 12:29:59
【问题描述】:

我通过 sqlplus 与 sys 作为 sysdba 连接到 oracle 数据库 11.2.0.4 企业版。如果我运行查询:

   select DBMS_METADATA.GET_DDL ( 'TYPE' , 'SYS_PLSQL_9131_DUMMY_1' , 'SYS' ) from dual ; 

我得到错误错误

     *ORA-31603: object "SYS_PLSQL_9131_DUMMY_1" of type TYPE not found in  schema "SYS"
      ORA-06512: at "SYS.DBMS_METADATA", line 5805
      ORA-06512: at "SYS.DBMS_METADATA", line 8344*

如果我运行,我也会遇到类似的错误

      select DBMS_METADATA.GET_DDL ( 'TYPE_BODY' , 'SYS_PLSQL_9131_DUMMY_1' , 'SYS' ) from dual ;
      select DBMS_METADATA.GET_DDL ( 'TYPE_SPEC' , 'SYS_PLSQL_9131_DUMMY_1' , 'SYS' ) from dual ;

如果我查询DBA_OBJECTSDBA_SOURCE,TYPE类型的对象就在那里。

即使我在 SYS 架构中查询其他 TYPE 类型对象,我也会遇到这些错误,但并非所有 TYPE 类型对象都会给我这个问题。

【问题讨论】:

    标签: oracle types dbms-metadata


    【解决方案1】:

    为什么会抛出错误?问题不在于权限或代码。问题是,有时 Oracle 对象并不是真正声称的对象类型。不是所有的“表”都是真实的表,也不是所有的“类型”都是真实的类型。 Oracle 可以创建对象来支持其他对象,例如嵌套表和系统生成的集合类型。

    我怎样才能提前知道什么会引发错误? 据我所知,没有官方文档或数据字典视图可以告诉您对象何时不是真实对象。最好的指南可能是this answer 中的条件。具体这部分:

        ...
       --These objects are included with other object types.
        and object_type not in ('INDEX PARTITION','INDEX SUBPARTITION',
           'LOB','LOB PARTITION','TABLE PARTITION','TABLE SUBPARTITION')
        --Ignore system-generated types that support collection processing.
        and not (object_type = 'TYPE' and object_name like 'SYS_PLSQL_%')
        --Exclude nested tables, their DDL is part of their parent table.
        and (owner, object_name) not in (select owner, table_name from dba_nested_tables)
        --Exlclude overflow segments, their DDL is part of their parent table.
        and (owner, object_name) not in (select owner, table_name from dba_tables where iot_type = 'IOT_OVERFLOW')
    

    有些对象无法导出,需要忽略。

    【讨论】:

      【解决方案2】:

      这些类型应该由包隐式创建。在 DBA_OBJECTS 中查询 object_id 9131(类型名称中的数字)。

      它可能是指一个包,它有一个函数,该函数返回一个值,该值具有包规范中定义的数据类型,而不是简单的 VARCHAR2 / NUMBER / DATE。

      【讨论】:

        猜你喜欢
        • 2017-04-15
        • 2020-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 2016-03-07
        • 2018-01-22
        相关资源
        最近更新 更多