警惕数据IMP导入的表空间是EXP同名的表空间,而不是用户默认的表空间

简介:

场景:某日应测试要求从生产导出一批数据用于测试,单个表多在1G以上,为此专门在测试环境新建了表空间和测试用户,预留了足够的空间。可是没想到imp时老提示表空间不够,通过表空间查询语句默认表空间利用率不足1%,最终突然想到虽然导入时指定了fromuser\touser,但是表空间未必会指定到默认的表空间,上网查了下果然如此。

机器环境:P550小型机\ORACLE10G

此前操作步骤:

--建立LV
mklv -y  TEST_DAT -T O -w n -s n -r n oradatavg 80 
--权限设置
chown oracle:dba /dev/rTEST_DAT
chmod 777 /dev/TEST_DAT
--SQLPLUS下建立表空间
create tablespace T_TEST datafile '/dev/rTEST_DAT' size 20000M;
--SQLPLUS下建立用户
create user test identified by test default tablespace TEST_DAT TEMPORARY TABLESPACE TEMP;
grant dba to test; 
--CMD下导入数据

C:\Documents and Settings\ad>imp test/test@apple file=c:\tmp_20101117.dmp fromuser=dev touser=test

Import: Release 10.2.0.1.0 - Production on 星期五 11月 19 13:10:20 2010

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Produc
tion
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件

警告: 这些对象由 DEV 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 DEV 的对象导入到 TEST
IMP-00017: 由于 ORACLE 错误 1659, 以下语句失败:
 "CREATE TABLE "CONTROL" ("ID" NUMBER NOT NULL ENABLE, "MSG_ID" V"
 "ARCHAR2(1000), "CONTENT" CLOB, "MSG_TYPE" VARCHAR2(50), "STATE" VARCHAR2(4)"
 ", "ERR_CODE" VARCHAR2(255), "ERR_MSG" VARCHAR2(255), "ERR_TRACE" CLOB, "ERR"
 "_DATE" DATE, "MODI_DATE" DATE, "ARCHIVE_DATE" DATE, "DELETED_FLAG" CHAR(1),"
 " "TRY_TIMES" NUMBER, "CREATE_DATE" DATE, "SEND_DATE" DATE, "TARGET" VARCHAR"
 "2(50))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 98146"
 "7136 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "IN_ADCP"
 "HC_DATA" LOGGING NOCOMPRESS LOB ("CONTENT") STORE AS  (TABLESPACE "USERS" E"
 "NABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING  STORAGE(INIT"
 "IAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("ERR_TRA"
 "CE") STORE AS  (TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERS"
 "ION 10 NOCACHE LOGGING  STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1"
 " BUFFER_POOL DEFAULT))"
IMP-00003: 遇到 ORACLE 错误 1659
ORA-01659: unable to allocate MINEXTENTS beyond 41 in tablespace TEST
成功终止导入, 但出现警告。
---猛然发现错误提示中有“unable to allocate MINEXTENTS beyond 41 in tablespace TEST”,
---这个tablespace不是之前我新建的表空间,而是此前测试环境的一个表空间,而这个表空间利用率已经达到99%.
---接下来大家都知道了,扩之前存在的表空间

mklv -y  test_add -T O -w n -s n -r n oradatavg 40 
chown oracle:dba /dev/rtest_add
chmod 777 /dev/rtest_add
---SQLPLUS下执行如下命令
alter tablespace TEST add datafile '/dev/rtest_add' size 1000M;
---扩表空间后再次执行命令成功
C:\Documents and Settings\ad>imp test/test@apple file=c:\tmp_20101117.dmp fromuser=dev touser=test

Import: Release 10.2.0.1.0 - Production on 星期五 11月 19 13:25:44 2010

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Produc
tion
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件

警告: 这些对象由 DEV 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 DEV 的对象导入到 TEST
. . 正在导入表           "CONTROL"
....................
导入了                                                        203333 行
成功终止导入, 没有出现警告。

C:\Documents and Settings\ad>

 



本文转自zylhsy 51CTO博客,原文链接:http://blog.51cto.com/yunlongzheng/427495,如需转载请自行联系原作者

相关文章
Oracle11G用EXP导出时,空表不能导出解决
Oracle11G用EXP导出时,空表不能导出解决
|
7月前
|
SQL Oracle 关系型数据库
Oracle 数据泵导出导入(映射表空间、Schema)
Oracle 数据泵导出导入(映射表空间、Schema)
|
7月前
|
SQL 人工智能 数据库
数据泵导出导入(映射表空间、Schema)
数据泵导出导入(映射表空间、Schema)
|
SQL Oracle 关系型数据库
Oracle 修改表空间数据文件存储位置
一、方法一 1、以表空间ZZH为例,offline 表空间ZZH SQL> alter tablespace ZZH offline; 2、复制数据文件到新的目录 cp /old_path/ZZH01.
3046 0
|
Oracle 关系型数据库 数据库
12 impdp 导入更好用户和表空间
12 impdp 导入更好用户和表空间
146 0
|
存储 Oracle 关系型数据库
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
274 0
Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看
|
Oracle 关系型数据库 数据库