ITPub博客

首页 > 数据库 > Oracle > 数据迁移出现ORA-39083, ORA-01403,ORA-01403

数据迁移出现ORA-39083, ORA-01403,ORA-01403

Oracle 作者:记录每一次错误 时间:2018-11-07 21:34:34 0 删除 编辑

今天安装windows系统下的oracle数据库,版本是11.2.0.1.0在,从linux系统的11.2.0.4.0版本的数据库导出,导入至windows系统下的oracle数据库下的出现报错:

———————————————————————————————————————————————————

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_ASSOCIATIONS','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_ASSOCIATIONS',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_BODEF_PROP','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_BODEF_PROP',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_FIELD_GROUP','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_FIELD_GROUP',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_SOLUTION_ACL','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_SOLUTION_ACL',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_UDB_LOG','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_UDB_LOG',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5,n

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_DISPLAY_LAYOUT','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_DISPLAY_LAYOUT',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_EMAIL_TEMPLATE','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_EMAIL_TEMPLATE',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_GLOBAL_SCRIPT','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_GLOBAL_SCRIPT',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_LOCALE_OBJECT','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_LOCALE_OBJECT',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_SOLUTION','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_SOLUTION',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_SOL_VERSION','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_SOL_VERSION',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_SOL_VERSION_XML','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_SOL_VERSION_XML',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,fla

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_STATE','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_STATE',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5,n1,n2

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_STATEFLOW','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_STATEFLOW',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_STATEFLOW_OBJECT','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_STATEFLOW_OBJECT',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,f

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_TEXT_BLOB','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_TEXT_BLOB',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_TRANSITION','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_TRANSITION',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_UDB_INFO','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_UDB_INFO',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到任何数据

ORA-01403: 未找到任何数据

失败的 sql 为:

DECLARE I_N VARCHAR2(60);   I_O VARCHAR2(60);   c DBMS_METADATA.T_VAR_COLL;   df varchar2(21) := 'YYYY-MM-DD:HH24:MI:SS'; BEGIN  DELETE FROM "SYS"."IMPDP_STATS";   c(1) :=   DBMS_METADATA.GET_STAT_COLNAME('HAPPYLIFE2','HS_USERDB','''''',NULL,0);  DBMS_METADATA.GET_STAT_INDNAME('HAPPYLIFE2','HS_USERDB',c,1,i_o,i_n);   INSERT INTO "SYS"."IMPDP_STATS" (type,version,flags,c1,c2,c3,c5,n1,

处理对象类型 SCHEMA_EXPORT/VIEW/VIEW

处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

————————————————————————————————

在网上导了这样的帖子,挺有有用的转载一下:

前几天帮助客户做了一次数据库导出,导出语句如下:

EXPDP SYSTEM/PASSWORD DIRECTORY=DUMP DUMPFILE=CRM20.DMP LOGFILE=CRM20_EXPDP.LOG SCHEMAS=CRM20

导出是成功的。

导完后丢给了客户,因为他们建了一个测试库,需要这个用户的数据。

但是,过了几天客户反映导入报错,如下:

ORA-39083: 对象类型 INDEX_STATISTICS 创建失败, 出现错误:

ORA-01403: 未找到数据

ORA-01403: 未找到数据

失败的 sql 为:

DECLARE IND_NAME VARCHAR2(60);   IND_OWNER VARCHAR2(60);  BEGIN  DELETE FROM "SYS"."IMPDP_STATS"; SELECT index_name, index_owner INTO IND_NAME, IND_OWNER

            FROM   (SELECT UNIQUE sgc1.index_name, sgc1.index_owner,

                           COUNT(*) mycount

                    FROM   sys.ku$_find_sgc_view sgc1,

                           TABLE  (sgc1.col_list) mycol

跑过去一看,其导入的数据库版本是10.2.0.1 for windows2003 64bit,但是我导出的数据库版本是10.2.0.4 for RHEL AS 5 64bit,便轻率地下了一个结论:数据库版本差异导致了这个问题。

以为客户换个版本的数据库就完了,正常了。结果客户在10.2.0.4 for AIX5 64bit上问题依旧。

懵了!

开始认真对待---因为客户也认真了!

网上搜了几个帖子,没什么帮助。关键时刻,还得metalink出击!

于是,怀着试试看的态度,在metalink上搜了一把,收获真大了去了---BUG:6156708!

有种说不出来的喜悦,可以给客户交代了,在给客户交代之前,说下这个BUG:6156708:

#############################################################################

Applies to: Oracle Server - Enterprise Edition - Version:  10.2.0.3 to 11.1.0.6 - Release: 10.2 to 11.1

Information in this document  applies to any platform.

SymptomsA DataPump import using the  parameter REMAP_SCHEMA reports errors ORA-39083 and ORA-1403 while importing  index statistics:


ORA-39083: Object type  INDEX_STATISTICS failed to create with error: 

ORA-01403: no data found 

ORA-01403: no data found 

Failing sql is: 

DECLARE IND_NAME  VARCHAR2(60); IND_OWNER VARCHAR2(60); BEGIN DELETE FROM 

"SYS"."IMPDP_STATS";  SELECT index_name, index_owner INTO IND_NAME, IND_OWNER 

FROM (SELECT UNIQUE  sgc1.index_name, sgc1.index_owner, 

COUNT(*) mycount 

FROM  sys.ku$_find_sgc_view sgc1, 

TABLE (sgc1.col_list) myc 


CauseHere are the steps to reproduce the issue: 


1. Create a table  under "TEST0" schema: 



$ sqlplus test0/test0 


DROP TABLE TEST0 PURGE; 


CREATE TABLE TEST0 

( 

   COL1 NUMBER NOT NULL, 

   COL2 NUMBER NOT NULL, 

   COL3 NUMBER NOT NULL 

) 

TABLESPACE USERS; 


ALTER  TABLE TEST0 ADD (PRIMARY KEY (COL2, COL1, COL3) USING INDEX TABLESPACE USERS); 


CREATE INDEX TEST0INDEX ON TEST0 (COL3, COL1, COL2) TABLESPACE USERS; 


select object_name, object_type from  user_objects;


OBJECT_NAME                     OBJECT_TYPE 

------------------------------ ------------------- 

TEST0                           TABLE 

SYS_C009845                     INDEX <-- Index associated with PK constraint. 

TEST0INDEX                      INDEX 



2. Collect statistics for "TEST0" schema. 


sqlplus  system/{password} 

exec dbms_stats.gather_schema_stats('TEST0',cascade =>  TRUE); 



3. Execute the DataPump export an import process to  reproduce the problem. 


$ expdp system/oracle schemas=test0  dumpfile=test0.dmp 

... (completed successfully without warnings) 


$ impdp system/oracle  remap_schema=test0:test1 dumpfile=test0.dmp 

. 

. 

Processing object type  SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS 

ORA-39083: Object type  INDEX_STATISTICS failed to create with error: 

ORA-01403: no data found 

ORA-01403: no data found 

Failing sql is: 

DECLARE IND_NAME  VARCHAR2(60); IND_OWNER VARCHAR2(60); BEGIN DELETE FROM "SYS"."IMPDP_STATS"; 

SELECT index_name, index_owner INTO IND_NAME, IND_OWNER 

FROM (SELECT  UNIQUE sgc1.index_name, sgc1.index_owner, 

COUNT(*) mycount 

FROM  sys.ku$_find_sgc_view sgc1, 

TABLE (sgc1.col_list) myc 

Processing object  type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS 

Processing object type  SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA


4.) Open a sqlplus  session to check objects created for the import process under "TEST1" schema. 



$ sqlplus  test1/{password}


col object_name for a30 

SELECT OBJECT_NAME,  OBJECT_TYPE FROM USER_OBJECTS; 


OBJECT_NAME                     OBJECT_TYPE 

------------------------------ ------------------- 

TEST0                           TABLE 

TEST0INDEX                      INDEX 



One index is missing, for this reason the impdp  utility fails importing the statistics associated to that particular missing  index. In this case, the problem is generated because expdp utility puts the  CREATE INDEX statements in wrong order into the dumpfile. This causes impdp  utility to create a primary key constraint using a wrong index (TEST0INDEX). 


This behavior is reported in Bug  6156708.


Reference: Bug  6156708 expdp puts the index creation statements into dump in wrong  order

Solution1. Use conventional export / import or 

2. Do a datapump import excluding  indexes, then import indexes. 

(Doing that we guarantee that the index  associated to the primary key constraints will be created first). 


$  impdp system/oracle remap_schema=test0:test1 exclude=index dumpfile=test0.dmp 

$ impdp system/oracle remap_schema=test0:test1 include=index  dumpfile=test0.dmp 


Output of the import process (include=index) 


Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA 

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX 

Processing object  type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS 


The  following query can be executed to check the objects created after the import  process is completed. 



$ sqlplus  test1/{password} 


col object_name for a30 

SELECT OBJECT_NAME,  OBJECT_TYPE FROM USER_OBJECTS; 


OBJECT_NAME                     OBJECT_TYPE 

------------------------------ ------------------- 

TEST0                           TABLE 

SYS_C009868                     INDEX

TEST0INDEX                      INDEX 

ReferencesBUG:6156708- EXPDP PUTS THE INDEX CREATION STATEMENTS INTO DUMP IN WRONG ORDER

##########################################################################

童鞋们,看看吧,还说什么呢!

于是,再次做了一个草率的决定---要求客户打这个补丁---p6156708_10204_Generic.zip

客户同意了我的决定,这个补丁打的比较顺利,过程如下:

##########################################################################

Patch Installation Steps:

-------------------------


1.  Set your current directory to the directory where the patch is located.

  cd <PATCH_TOP>/6156708

2.  Apply the patch.

Use the following command to apply the patch to the ORACLE_HOME:

  opatch apply

When OPatch starts, it will validate the patch and make sure there

are no conflicts with the software already installed in the ORACLE_HOME.

OPatch categorizes two types of conflicts:

  (a) Conflicts with a patch already applied to the ORACLE_HOME

  In this case, please stop the patch installation and contact

  Oracle Support Services.

  (b) Conflicts with subset patch already applied to the ORACLE_HOME

  In this case, please continue the install, as the new patch

  contains all the fixes from the existing patch in the ORACLE_HOME.

  The subset patch will automatically be rolled back prior to the

  installation of the new patch.

Patch Post Install Instructions:

--------------------------------

  After the patch has been applied please reload the package into

  the database. To do this connect as SYS and execute the following;

  sqlplus "/ as sysdba"

  SQL> @?/rdbms/admin/dbmsmeta.sql

  SQL> @?/rdbms/admin/dbmsmeti.sql

  SQL> @?/rdbms/admin/dbmsmetu.sql

  SQL> @?/rdbms/admin/dbmsmetb.sql

  SQL> @?/rdbms/admin/dbmsmetd.sql

  SQL> @?/rdbms/admin/catmeta.sql

  SQL> @?/rdbms/admin/prvtmeta.plb

  SQL> @?/rdbms/admin/prvtmeti.plb

  SQL> @?/rdbms/admin/prvtmetu.plb

  SQL> @?/rdbms/admin/prvtmetb.plb

  SQL> @?/rdbms/admin/prvtmetd.plb

  SQL> @?/rdbms/admin/catmet2.sql

##########################################################################

面带悦色的要求客户再次导入试试。

当客户把导入日志发给我看的时候,我几乎疯了---错误依旧!

哎,换个思路,按照常规的方法来诊断解决吧。

首先查看数据库告警日志,有所发现:

Mon Mar  5 22:02:41 2012

GATHER_STATS_JOB encountered errors.  Check the trace file.

Mon Mar  5 22:02:41 2012

Errors in file /u01/app/oracle/admin/ocrmpdb/bdump/ocrmpdb_j000_22888.trc:

ORA-20000: index "CRM20"."IDX_RATIONNO_DEALCONFIRM_TEMP"  or partition of such index is in unusable state

并且这个错误前面也多次出现。

接着查看相关的跟踪文件:

*** 2012-03-05 22:02:41.676

GATHER_STATS_JOB: GATHER_TABLE_STATS('"CRM20"','"TINF_CONFIRM"','""', ...)

ORA-20000: index "CRM20"."IDX_RATIONNO_DEALCONFIRM_TEMP"  or partition of such index is in unusable state

索引的状态为:

select status from dba_indexes where index_name='IDX_RATIONNO_DEALCONFIRM_TEMP';

STATUS

--------

UNUSABLE

于是尝试手动收集下该表的统计信息,报出下面的错误:

SQL> exec dbms_stats.gather_table_stats('CRM20','TINF_CONFIRM');

BEGIN dbms_stats.gather_table_stats('CRM20','TINF_CONFIRM'); END;

*

ERROR at line 1:

ORA-20000: index  "CRM20"."IDX_RATIONNO_DEALCONFIRM_TEMP"  or partition of such index isin unusable state

ORA-06512: at "SYS.DBMS_STATS", line 13437

ORA-06512: at "SYS.DBMS_STATS", line 13457

ORA-06512: at line 1

关键的,紧急的,救命的时刻,还得metalink出击---不过查询的结果有点小失望:

############################################################

CauseIndex is invalid.

Can check that  running


select status from dba_objects where object_name = 'INDEX  NAME';


SolutionRebuild the index and gather new stats  on the related table


Example:

alter index <INDEX NAME>  rebuild;

##############################################################

经过客户的同意,对IDX_RATIONNO_DEALCONFIRM_TEMP索引做了一个rebuild操作:

SQL> alter index "CRM20"."IDX_RATIONNO_DEALCONFIRM_TEMP" rebuild online;

Index altered.

再次查看索引的状态,变成了:

SQL> select status from dba_indexes where index_name='IDX_RATIONNO_DEALCONFIRM_TEMP';

STATUS

--------

VALID

手动收集该表的统计信息也成功了:

SQL> exec dbms_stats.gather_table_stats('CRM20','TINF_CONFIRM');

PL/SQL procedure successfully completed.

再次导出导入,正常,万岁!

低调吧,别再轻易地给出草率的结论了!

《道德经》里老子说的好:

重为轻根,静为躁君;轻则失本,躁则失君!


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31547066/viewspace-2219147/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle dg报错
请登录后发表评论 登录
全部评论
性格开朗,有较强的学习能力,对oracle数据库的体系结构,搭建RAC,timesten,goldengate,分布式数据库,dataguard,系统调优有较深入的了解, 尤其是oracle优化,深入学习的主机命令,对数据库的优化,SQL语句的优化有深入的认识,目前正在shell脚本,mysql,以后会有计划学习大数据和python。

注册时间:2018-07-23

  • 博文量
    200
  • 访问量
    475047