ORA-39083 ORA-00959

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: <p><br></p> <p></p> <div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23.8px"> <div><span style="color:#ff0000; line-height:23.8px">ORA-<span style


ORA-39083: Object type TABLE:"TSALE"."B_SELL_CLASSIFY" failed to create with error:
ORA-00959: tablespace 'SALES' does not exist
Failing sql is:
CREATE TABLE "TSALE"."B_SELL_CLASSIFY" ("SELL_CLASS_NO" VARCHAR2(50 BYTE) NOT NULL ENABLE, "SELL_CLASS_NAME" VARCHAR2(100 BYTE), "I
" VARCHAR2(36 BYTE)) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65
36 NEXT 8192 MINEXTENTS 1 MAXEXTENTS  2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
ORA- 39083: Object type TABLE:"TSALE"."B_TRANS_ADDR" failed to create with error:
ORA- 00959: tablespace 'SALES' does not exist
Failing sql is:

解决 
改名字 

 alter tablespace TEST  rename to YWDBS;

快速解决IMP中的ORA-00959

用IMP向测试库导入DMP时,又遇到了ORA-00959表空间不存在的问题。
一般的解决方法:

1.先建表,在导入dmp时加ignore=y 的参数。

2.新建对应的表空间

3.使用expdp从新导出,在impdp时用REMAP_TABLESPACE

无论用那种方法都比较麻烦,都需要耗费一定的工作量。如果在oracle10g中,
采用重命名表空间的方法,可以快速解决这个问题。

SQL> alter tablespace &old_tbsname  rename to &new_tbs_name;

如当前用户默认的表空间为TEST,现在改为需要的表空间YWDBS
SQL> alter tablespace TEST  rename to YWDBS;

 

/oracle$imp TEST/TEST file=dev_bak_20110702.dmp tables=PRPDRISK statistics=none

Import: Release 10.2.0.4.0 - Production on Wed Jul 6 09:39:25 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V10.02.01 via conventional path

Warning: the objects were exported by DEV, not by you

import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing DEV's objects into REPORTTEST
. importing DEV's objects into REPORTTEST
IMP-00017: following statement failed with ORACLE error 959:
...
IMP-00003: ORACLE error 959 encountered
ORA-00959: tablespace 'YWDBS' does not exist
Import terminated successfully with warnings.

SQL> alter tablespace TEST  rename to YWDBS;

重命名表空间后,会在alert.log中看到如下信息:
Tablespace 'TEST' is renamed to 'YWDBS'.
Completed: alter tablespace TEST  rename to YWDBS

 

重命名表空间后,dmp可以顺利导入
/oracle$imp TEST/TEST file=dev_bak_20110702.dmp tables=PRPDRISK statistics=none

Import: Release 10.2.0.4.0 - Production on Wed Jul 6 10:05:08 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V10.02.01 via conventional path

Warning: the objects were exported by DEV, not by you

import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing DEV's objects into REPORTTEST
. importing DEV's objects into REPORTTEST
. . importing table                     "PRPDRISK"         68 rows imported
Import terminated successfully without warnings.

为了管理上的规范,在导入成功后可以在将表空间名该回去。

IMP中的ORA-00959一般发生在有CLOB字段的表上。


创建表,提示ORA- 00959:表空间'MC_DATA'不存在的解决
 
首先,先确认当前用户的表空间。
 
select username,default_tablespace,
temporary_tablespace from dba_users where username='MCMIDYL'; 
   www.2cto.com  
发现默认表空间是'MC_DATA',但是MC_DATA'已经删除。
 
只需要将默认表空间改为,用户中存在的表空间即可。
 
修改语句如下
 
ALTER USER 用户名 DEFAULT TABLESPACE 表空间名
 
 参考:

 

一次艰辛的数据导入



一、导出文件

[sql]  view plain copy
  1. SELECT CURRENT_SCN FROM V$DATABASE;  
  2. expdp system/oracle@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=FALABELLA_AR_20111214.DMP SCHEMAS=FALABELLA_AR_CORE,FALABELLA_AR_CATA,FALABELLA_AR_CATB,FALABELLA_AR_PUB logfile=FALABELLA_AR_expdp_20111214.log status=10 parallel=1 CONTENT=ALL flashback_scn=612654934  

二、压缩dmp文件

[sql]  view plain copy
  1. gzip -9 FALABELLA_AR_20111214.DMP   


三、上传DUMP文件到目标库并解压。

[sql]  view plain copy
  1. gzip -d  FALABELLA_AR_20111214.DMP   


四、准备目标库上原有用户对象

[sql]  view plain copy
  1. CREATE TABLESPACE TBS_FALABELLA_AR LOGGING DATAFILE '/u01/oradata/oracle/TBS_FALABELLA_AR01.DBF'   
  2.   SIZE 1024M AUTOEXTEND ON NEXT 64M MAXSIZE 4096M  
  3.   EXTENT MANAGEMENT LOCAL  
  4. /  
  5.   
  6. DROP USER FALABELLA_AR_CORE CASCADE;  
  7. DROP USER FALABELLA_AR_CATA CASCADE;  
  8. DROP USER FALABELLA_AR_CATB CASCADE;  
  9. DROP USER FALABELLA_AR_PUB CASCADE;  
  10.   
  11. CREATE USER FALABELLA_AR_CORE IDENTIFIED BY FALABELLA_AR_CORE QUOTA UNLIMITED ON TBS_FALABELLA_AR  
  12. DEFAULT TABLESPACE TBS_FALABELLA_AR  
  13. TEMPORARY TABLESPACE TEMP;  
  14.   
  15. GRANT CONNECT, RESOURCE TO FALABELLA_AR_CORE;  
  16.   
  17. CREATE USER FALABELLA_AR_CATA IDENTIFIED BY FALABELLA_AR_CATA QUOTA UNLIMITED ON TBS_FALABELLA_AR  
  18. DEFAULT TABLESPACE TBS_FALABELLA_AR  
  19. TEMPORARY TABLESPACE TEMP;  
  20.   
  21. GRANT CONNECT, RESOURCE TO FALABELLA_AR_CATA;  
  22.   
  23. CREATE USER FALABELLA_AR_CATB IDENTIFIED BY FALABELLA_AR_CATB QUOTA UNLIMITED ON TBS_FALABELLA_AR  
  24. DEFAULT TABLESPACE TBS_FALABELLA_AR  
  25. TEMPORARY TABLESPACE TEMP;  
  26.   
  27. GRANT CONNECT, RESOURCE TO FALABELLA_AR_CATB;  
  28.   
  29. CREATE USER FALABELLA_AR_PUB IDENTIFIED BY FALABELLA_AR_PUB QUOTA UNLIMITED ON TBS_FALABELLA_AR  
  30. DEFAULT TABLESPACE TBS_FALABELLA_AR  
  31. TEMPORARY TABLESPACE TEMP;  
  32.   
  33. GRANT CONNECT, RESOURCE TO FALABELLA_AR_PUB;  

五、导入

[sql]  view plain copy
  1. --第一次导入  
  2. impdp system/oracle@oracle DIRECTORY=DATA_PUMP_DIR DUMPFILE=FALABELLA_AR_20111214.DMP LOGFILE=FALABELLA_AR_impdp_ALL_20111215.log  SCHEMAS=FALABELLA_AR_CORE,FALABELLA_AR_CATA,FALABELLA_AR_CATB,FALABELLA_AR_PUB REMAP_TABLESPACE=TBS_FALABELLA:TBS_FALABELLA_AR CONTENT=ALL PARALLEL=1 STATUS=10 TABLE_EXISTS_ACTION=REPLACE TRANSFORM=segment_attributes:n:table  


导入时发现源库和目标库的字符集不一样,导入的时候虽然完成了,但有一些字段在字符转换的时候报出字段长度不够。检查日志,发现很多如下错误:

[sql]  view plain copy
  1. ORA-02374: conversion error loading table "FALABELLA_AR_PUB"."RGLLEVVF"  
  2. ORA-12899: value too large for column XAPM_NOVIA (actual: 16, maximum: 15)  
  3. ORA-02372: data for row: XAPM_NOVIA : 0X'4F4C4D45D14F202020202020202020'  

于是想出一个办法,先单独导入元数据,然后查找日志,找出所有字段长度有问题的表,把相应的列长度改长:

[sql]  view plain copy
  1. --单独导入元数据  
  2. impdp system/oracle@oracle DIRECTORY=DATA_PUMP_DIR DUMPFILE=FALABELLA_AR_20111214.DMP LOGFILE=FALABELLA_AR_impdp_METADATA_ONLY_DISABLE_CONSTRAINT_20111215.log  SCHEMAS=FALABELLA_AR_CORE,FALABELLA_AR_CATA,FALABELLA_AR_CATB,FALABELLA_AR_PUB REMAP_TABLESPACE=TBS_FALABELLA:TBS_FALABELLA_AR CONTENT=METADATA_ONLY PARALLEL=1 STATUS=10 TABLE_EXISTS_ACTION=REPLACE TRANSFORM=segment_attributes:n:table  


[sql]  view plain copy
  1. --查找日志,找出相应的错误,并修改列  
  2. ALTER TABLE FALABELLA_AR_CORE.DCSPP_SHIP_ADDR MODIFY (FIRST_NAME VARCHAR2(50));  
  3. ALTER TABLE FALABELLA_AR_PUB.RGLLEVVF MODIFY (  XNMB_NOVIO CHAR(30 BYTE), XAPP_NOVIO CHAR(30 BYTE),  XAPM_NOVIO CHAR(30 BYTE), XNMB_NOVIA CHAR(30 BYTE), XAPP_NOVIA CHAR(30 BYTE), XAPM_NOVIA CHAR(30 BYTE));  
  4. ALTER TABLE FALABELLA_AR_CORE.DPS_USER MODIFY ( LOGIN VARCHAR2(264 BYTE) NOT NULL);  
  5. ALTER TABLE FALABELLA_AR_CORE.FBL_CONTACT_INFO MODIFY ( EMAIL VARCHAR2(264 BYTE));  
  6. ALTER TABLE FALABELLA_AR_CORE.FBL_ELECTRONIC_SHIPPING MODIFY(SENDER_NAME VARCHAR2(64 BYTE));  
  7. ALTER TABLE FALABELLA_AR_CATA.FBL_STOCK_N_SHIP_WAREHOUSE MODIFY ( CUT_OFF_TIME VARCHAR2(10 BYTE));  
  8. ALTER TABLE FALABELLA_AR_CATB.FBL_STOCK_N_SHIP_WAREHOUSE MODIFY ( CUT_OFF_TIME VARCHAR2(10 BYTE));  
  9. ALTER TABLE FALABELLA_AR_PUB.FBL_STOCK_N_SHIP_WAREHOUSE MODIFY( CUT_OFF_TIME VARCHAR2(10 BYTE));  
  10. ALTER TABLE FALABELLA_AR_CORE.FBL_ORDER_BANK_PROMOTION MODIFY (BANK_NAME  VARCHAR2(30 BYTE));  


然后再单独导入数据,但单独导入数据时由于先后关系,会检查参照完整性,于是先DISABLE所有的参照完整性,再导入数据,等导入完成后,再启用所有的参照完整性约束。

[sql]  view plain copy
  1. --报外键约束错误  
  2. ORA-31693Table data object "FALABELLA_AR_CORE"."DCSPP_SHIPITEM_REL" failed to load/unload and is being skipped due to error:  
  3. ORA-29913: error in executing ODCIEXTTABLEFETCH callout  
  4. ORA-02291: integrity constraint (FALABELLA_AR_CORE.DCSPP_SHRELTNSHP_F) violated - parent key not found  

[sql]  view plain copy
  1. --于是,禁用所有外键约束  
  2. select 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||';' from dba_constraints where owner in('FALABELLA_AR_CORE','FALABELLA_AR_CATA','FALABELLA_AR_CATB','FALABELLA_AR_PUB'and CONSTRAINT_TYPE='R';  

[sql]  view plain copy
  1. --单独导入数据  
  2. impdp system/oracle@oracle DIRECTORY=DATA_PUMP_DIR DUMPFILE=FALABELLA_AR_20111214.DMP LOGFILE=FALABELLA_AR_impdp_DATA_ONLY_DISABLE_CONSTRAINT__20111215.log  SCHEMAS=FALABELLA_AR_CORE,FALABELLA_AR_CATA,FALABELLA_AR_CATB,FALABELLA_AR_PUB REMAP_TABLESPACE=TBS_FALABELLA:TBS_FALABELLA_AR CONTENT=DATA_ONLY PARALLEL=1 STATUS=10 TRANSFORM=segment_attributes:n:table  

[sql]  view plain copy
  1. --启用所有外键约束  
  2. select 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' ENABLE NOVALIDATE CONSTRAINT '||constraint_name||';' from dba_constraints where owner in('FALABELLA_AR_CORE','FALABELLA_AR_CATA','FALABELLA_AR_CATB','FALABELLA_AR_PUB'and CONSTRAINT_TYPE='R';  


OK,大功告成,终于看到了久违的成功日志:

Job "SYSTEM"."SYS_IMPORT_SCHEMA_03" successfully completed at 07:29:24



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
网络协议
ORA-12557
ORA-12557
103 0
|
Oracle 关系型数据库 数据库
ORA-00742 ORA-00312特殊恢复
ORA-00742 ORA-00312特殊恢复
681 0
|
关系型数据库 Oracle
ora.rhpserver
ora.rhpserver 作用
1666 0
|
Oracle 关系型数据库
ora.chad
ora.chad 进程描述,和作用。
3042 0
|
SQL Oracle 关系型数据库
|
关系型数据库 Oracle
|
Oracle 关系型数据库
|
SQL 关系型数据库 Oracle