我已经给用户分配指定了表空间,
用户LS,表空间LSDB,
倒入命令:
IMP LS/AAA@SERVER FILE=(D:\XXX.DMP) TABLESPACES=(LSDB)
但倒入完成后,查看相应的表所在的表空间,任是USERS表空间,而不是LSDB。

解决方案 »

  1.   

    是不是你导入的表,指定了表空间
    看一下建表语句
    使用show=y、log这两个选项E:\>imp a/a file=a.dmp show=y log=logb.txtImport: Release 8.1.6.0.0 - Production on 星期五 12月 1 22:29:49 2000(c) Copyright 1999 Oracle Corporation. All rights reserved.
    连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.0.0 - Production经由常规路径导出由EXPORT:V08.01.06创建的文件
    已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
    . 正在将A的对象导入到 A
    "CREATE TABLE "A" ("A" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 25"
    "5 LOGGING STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483"
    "645 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLE"
    "SPACE "SYSTEM""
    . . 正在跳过表 "A""CREATE TABLE "B" ("A" NUMBER, "B" VARCHAR2(10)) PCTFREE 10 PCTUSED 40 INIT"
    "RANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 "
    "MAXEXTENTS 2147483645 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_P"
    "OOL DEFAULT) TABLESPACE "SYSTEM""
    . . 正在跳过表 "B"成功终止导入,但出现警告。E:\>使用编辑器打开logb.txt,里面可以看到DDL语句
      

  2.   

    实际上该问题的出现是由于:用EXP倒出时,用户所占用的表空间就是USERS表空间,所以我用IMP倒入时不管指定不指定表空间,都不管用,不知道是否有更好的选择!
      

  3.   

    可以:
    1、取消你当前用户在USERS表空间上的限额。
    2、指定当前用户的默认表空间为你要导入的表空间。
      

  4.   

    其实jaguarcts(jaguarcts)说的两个步骤我已经做了,但由于 
    用EXP倒出时,用户所占用的表空间就是USERS表空间,因此不成功!
      

  5.   

    表不多的话,可以用CREATE TABLE AS SELECT ...命令
      

  6.   

    把USER表空间对这个用户限空额为0。
    修改默认表空间。就可以了。
      

  7.   

    将user表空间offline,然后再导入
      

  8.   

    这样试试:exp zhoubf/zhou@n1 file=...    log=...      
           transport_tablespace=y    tablespaces=target_tablespace
      

  9.   

    sun9989(阿松)  说的是最优解
      

  10.   

    用IMP一般是不能更改表空间的
    可以用如下方式,更改存放表的表空间。
    ALTER TABLE TABLE_NAME MOVE TABLESPACE NEW_TABLESPACE_NAME;
    我这是以前一个叫“木头”的朋友回答过的。
    你不妨试试。很管用的。
      

  11.   

    把用户在usrs表空间的quota =0
    分配其他表空间的quota给该用户
      

  12.   

    参数所至,一步到位:
    imp zhoubf/zhou@n1 file=...    log=...      
        transport_tablespace=y    tablespaces=target_tablespace
      

  13.   

    1、   jaguarcts(jaguarcts), biti_rainy(biti_rainy),sun9989(阿松)你们3个人的方法我试过了,当我点击DBA STUDIO表空间中的(限额)是有如下提示:已授予资源角色或无限制的表空间系统权限,无法将其改为‘0’。2、 zhoubf725(天上的鸟,怎能踢到) 你的方法我也试过了,报了如下一个错:
    imp-00053 :导入模式与导出转储文件不兼容。3、xinpingf(白开心) 你的方法我同样也试过了,报了如下一个错:
    imp-01542 表空间‘tablespace’脱机,无法在其中分配空间。
    yongerman () 你知道吗?我在用导入/导出时也碰到过和你一模一样的问题,我非常的纳闷。我问了周围很多人,他们都无法给出一种解决方法,所以在这里,希望大家能帮帮我,包括yongerman () ,谢谢!
      

  14.   

    1.使用tablespace模式是不可行的,那是oracle专门为exp,imp tablespace设置的参数。
    2.首先你必须先确保用户只有在DEFAULT TABLESPACE上可以分配空间,而其他表空间上没有分配空间权限。
    所以你必须先将用户的UNLIMITED TABLESPACE权限去掉。
    然后将用户的DEFAULT TABLESPACE设为lsdb,并且是UNLIMITED.
    再将用户其他表空间上权限去掉。
    然后再imp,祝你成功
      

  15.   

    1。我试了jaguarcts(jaguarcts), biti_rainy(biti_rainy),sun9989(阿松)的方法,将表空间的quota 设为0 ,导过去,一样报错,采用xinpingf(白开心) 也不行。 
    2。ATCG(ATCG)的方法是不是意味着要改每个表的表空间?那么是在导入前改呢还是导入后改?
      

  16.   

    不是给你说过了吗,先把UNLIMITED TABLESPACE的系统特权去掉,
    然后在你导入的用户上给你想导入的那个表空间加上UNLIMITED 的quota(配额),你不能将用户的所有表空间都 quota改为0,那用户不没有可分配空间了吗?你起码的有一个你想导入的那个表空间还有配额啊(不一定是UNLIMITED,但你还是设置为UNLIMITED吧 )
    肯定一点,是可以的,我经常这么做
      

  17.   

    先用imp ...  rows=n indexes=filename 
    将表结构导出
    然后编辑此文件,修改tablespace 参数
    用修改后的文件建表
    最后用imp  ... ignore=y
    导入数据
      

  18.   

    1. Edit the EXP DUMP file , change the tablespace to your desired 
    (It's definitly not reccommend by oracle)Or 2. Reduce the quato on the tablespace which your don't want to import on for this user . 
      

  19.   

    以上2种方法我绝对都用过。我把想导入的表空间的quato设为UNLIMITED,其他表空间设为0,我也认为这种方法应该可以。但事实上使用时,它竟然仍然报错。我想penitent(只取一瓢)兄说经常用,那肯定是可以的。我想也许是我什么地方没设对,回头再去看看。先谢了。回头把测试结果报告给你。^_^。
    另一种方法我也试了,但有一点,表之间关联较多,也回报错,要改很多表之间关联等。很麻烦。不好作。但还是谢谢了。
      

  20.   

    无法实现,只能用CREATE AS手工处理。
    1 导入数据
    2 设置好LS用户的缺省表空间
    3 用SQLPLUS以LS登录
    4 SET SERVEROUTPUT ON
    5 SET HEAD OFF
    6 SPOOL C:\CREATETABLE.SQL
    7 SELECT 'CREATE TABLE TMP' || TABLE_NAME || ' AS SELECT * FROM ' || TABLE_NAME || ';' FROM USER_TABLES;
    8 SELECT 'DROP TABLE ' || TABLE_NAME || ';' FROM USER_TABLES WHERE INSTR(TABLE_NAME,'TMP')=0;
    9 SELECT 'RENAME ' || TABLE_NAME || ' TO ' || SUBSTR(TABLE_NAME,4) || ';' FROM USER_TABLES;
    10 SPOOL OFF
    然后打开C:\CREATETABLE.SQL文件,把没用的行删除,在SQLPLUS中用@C:\CREATETABLE.SQL来执行此脚本。以上代码没有测试过,请自行检查生成的脚本是否有错误。
      

  21.   

    to penitent(只取一瓢): 是这样的。我仔细按你的方法做了,确实发现以前存在的一个错误。导入的表确实在指定的表空间里了,但,报错。如下:连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - Production经由常规路径导出由EXPORT:V08.01.07创建的文件
    已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
    . 正在将TEST1的对象导入到 TEST0816
    . . 正在导入表                      "AA_STOCK"          1行被导入
    IMP-00015: 由于对象已存在, 下列语句失败: 
     "ALTER TABLE "AA_STOCK" ADD  CONSTRAINT "AA_STOCK_PK" PRIMARY KEY ("PRODUCT_"
     "NAME", "CLASS", "SS", "CO_ID", "WAREHOUSE_ID") USING INDEX PCTFREE 10 INITR"
     "ANS 2 MAXTRANS 255 STORAGE(INITIAL 393216 NEXT 131072 MINEXTENTS 1 MAXEXTEN"
     "TS 4096 PCTINCREASE 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TA"
     "BLESPACE "USERS" ENABLE "
    . . 正在导入表                "AA_STOCK_MONTH"         30行被导入
    IMP-00015: 由于对象已存在, 下列语句失败: 
     "ALTER TABLE "AA_STOCK_MONTH" ADD  CONSTRAINT "AA_STOCK_MONTH_PK" PRIMARY KE"
     "Y ("PRODUCT_NAME", "CLASS", "SS", "CO_ID", "WAREHOUSE_ID", "MONTH") USING I"
     "NDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 131072 "
     "MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 1 FREELISTS 1 FREELIST GROUPS 1 BU"
     "FFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE "(以下略....)
    我觉得在创建表时是可以的,但修改表时发现user表空间里已经有了,所以报错。此时,此用户的权限除了dba等能获得其他表空间配额的权限外,其他都有。
      

  22.   

    sigh
    你把该用户drop重新建立用户并合理分配表空间配额和权限不就ok了