警惕数据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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值