zoukankan      html  css  js  c++  java
  • EXPDP导数报ORA-00942案例

    使用数据泵(expdp)导数时遇到了ORA-31626 & ORA-00942 错误,数据库版本为Oracle Database 10g Release 10.2.0.5.0,具体错误如下所示:

     

    $ expdp system/xxx tables=xxx.xxx directory=DUMPDIR dumpfile=xxxx.dmp logfile=xxx.log;
     
    Export: Release 10.2.0.5.0 - 64bit Production on Saturday, 27 July, 2019 10:39:07
     
    Copyright (c) 2003, 2007, Oracle.  All rights reserved.
     
    Connected to: Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
    ORA-31626: job does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist
    ORA-00942: table or view does not exist

     

    检查验证发现表确实是存在的,搜索metalink,发现官方文档有介绍:DataPump Export (EXPDP) Reports ORA-942 Even If Table Exists (Doc ID 1371613.1),下面的的操作步骤基本按照官方文档的介绍处理:

     

     

     

    在数据库开启跟踪

     

    SQL> alter system set events '942 trace name errorstack level 3';

     

    System altered.

     

    然后使用expdp命令导数

     

    在数据库关闭跟踪

     

    SQL> alter system set events '942 trace name errorstack off';

     

    System altered.

     

    检查告警日志,就能发现对应的跟踪文件,如下所示:

     

     

    Errors in file /u01/app/oracle/admin/epps/udump/epps_ora_15524.trc:

    ORA-00942: table or view does not exist

    Sat Jul 27 10:39:08 CST 2019

    The value (30) of MAXTRANS parameter ignored.

     

    在跟踪文件,我们会发现PL/SQL Call Stack信息。这个跟官方文档的内容有所差别,这个也正常,一模一样的错误信息还是很少见的。

     

    clip_image001

     

     

    根据官方文档提示, 这个是因为DataPump内部包损坏了(damaged DataPump internal package),如果查单纯看包'DBMS_DATAPUMP',发现其状态是VALID,对这些没有多少研究。所以不清楚更深一层次的原因!

     

    SQL> select owner
      2      , object_name
      3      , object_type
      4      , status 
      5  from  dba_objects where object_name='DBMS_DATAPUMP';
     
    OWNER                          OBJECT_NAME              OBJECT_TYPE         STATUS
    ------------------------------ ------------------------ ------------------- -------
    SYS                            DBMS_DATAPUMP            PACKAGE             VALID
    SYS                            DBMS_DATAPUMP            PACKAGE BODY        VALID
    PUBLIC                         DBMS_DATAPUMP            SYNONYM             VALID
     
    SQL> 

     

    官方文档"How To Reload Datapump Utility EXPDP/IMPDP (文档 ID 430221.1)"给出了如何解决这个问题(个人根据下面步骤解决了这个问题):

     

     

    NOTE:
    For running catproc.sql, please refer to
    Note 863312.1
    - Best Practices for running catalog, catproc and utlrp script

    • The catalog or catproc script should be run after the database has been opened with startup migrate or startup upgrade depending on version.
    • The catalog and catproc script should not be run when the database is opened with unrestricted access.?
      This can cause the database to experience performance issues and can even lead to a hanging situation.

    In some cases DataPump utility may get corrupted and we need to recreate DataPump utility to overcome internal corruption. To do this, run specified scripts for Oracle version that you are running as given below.

    Note:  Run the following as sysdba user:

    SQL> connect / as sysdba


    For Oracle version 10.1 :

    -- 1. Catdp.sql orders the installation of all its components including the Metadata API which was previously installed separately. By default catproc.sql invoke this script.

    SQL> @$ORACLE_HOME/rdbms/admin/catdp.sql


    -- 2. dbmspump.sql will create DBMS procedures for dataPUMP

    SQL> @$ORACLE_HOME/rdbms/admin/dbmspump.sql

     
    For Oracle version 10.2:

    -- 1.Catdph.sql will Re-Install DataPump types and views

    SQL> @$ORACLE_HOME/rdbms/admin/catdph.sql


    -- Note:
    -- If XDB is installed, then it is required to run "catmetx.sql" script also.
    -- Use this code to verify if XDB is installed:

    SQL> select substr(comp_name,1,30) comp_name,
         substr(comp_id,1,10) comp_id,
         substr(version,1,12) version,
         status
         from dba_registry;

    -- Sample output if XDB installed,
    Oracle XML Database    XDB    -version-    VALID


    -- 2.prvtdtde.plb will re-install tde_library packages

    SQL> @$ORACLE_HOME/rdbms/admin/prvtdtde.plb


    -- 3. Catdpb.sql will Re-Install DataPump packages

    SQL> @$ORACLE_HOME/rdbms/admin/catdpb.sql


    -- 4.Dbmspump.sql will Re-Install DBMS DataPump objects

    SQL> @$ORACLE_HOME/rdbms/admin/dbmspump.sql


    -- 5. To recompile  invalid objects, if any

    SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

     
    For Oracle version 11g and higher prior to 12c:

     

    -- 1.Catproc.sql

    SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql


    -- 2.To recompile invalid objects, if any

    SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

     

    For Oracle version 12c:

    Note 1: Prior rebuilding DP catalog in 12.1.0.2 CDB , install?Patch 25139545 as alerted in?Document 2175021.1 - "Alert - Multitenant Customers: The objects created by the post-install steps of 12.1.0.2 Generic DataPump Patches Are not Shared Across All PDBS".

    Note 2: For issues regarding KU$ Invalid Objects Owned by SYS after upgrading or applying datapatch, refer to?Document 2289785.1 to rebuild Datapump.

     

    Rebuild the DataPump packages with the following steps.

    Under the ORACLE_HOME, execute:
    cd rdbms/admin

    -- run the dpload.sql in the CDB with all of the PDBs open

    From a SQL*Plus session, connect as sysdba

    and then run dpload.sql:

    @dpload.sql

    on the affected database.

    Note: If DataPump catalog is not valid in a PDB, same step should be executed to validate the DP catalog on a pluggable database.

     
    Additional Resources

    Community: Database Utilities

    Still have questions? Use the above community to search for similar discussions or start a new discussion on this subject.

     

    参考资料:

     

           DataPump Export (EXPDP) Reports ORA-942 Even If Table Exists (Doc ID 1371613.1)

    How To Reload Datapump Utility EXPDP/IMPDP (文档 ID 430221.1)

  • 相关阅读:
    VB6之GDI+加载PNG图片
    VB6之阴影图层
    VB6之截图
    VB6之调整任务栏按钮的位置
    恐怖的ifdown eth0;0
    VB6之WM_COPYDATA
    删除整个链表
    digest 词根 gest
    new和delete
    static, const
  • 原文地址:https://www.cnblogs.com/kerrycode/p/11254467.html
Copyright © 2011-2022 走看看