我用PL/SQL工具建了一个用户A,指定默认表空间B,按常理说用A用户登录导入表的时候是导入到表空间B里去的,但为什么总是导入的SYSTEM表空间里去呢?求高人解答。

解决方案 »

  1.   

    exp的不仅仅是自己建表时候的create table 语句,还有其他的比如指定表空间等等其他的一些参数。这个在toad或者plsqldev里面看看对应的表的 scripts 就知道了。exp的时候,这些内容都会导出的。如果表的表空间指定了是System,那导出的时候必然是system,那导入的时候也就找system,然后导入了。
      

  2.   

    没使用过PL/SQL导入导出不过在平常情况下创建表的时候
    如果你没有为当前用户指定默认表空间
    那么他的默认表空间就是SYSTEM 表就会被建到SYSTEM中
      

  3.   

    我用PL/SQL工具建了一个用户A,指定默认表空间B,按常理说用A用户登录导入表的时候是导入到表空间B里去的,但为什么总是导入的SYSTEM表空间里去呢?求高人解答。如果你用的是exp和imp进行导入和导出的话,那么被导入的表还是会被导入到其导出时所在的表空间中,而不会导入到你当前导入用户的默认表空间中。举例:u1用户的默认 表空间是tbs_user1,将要被导入的表test_tab以前建立在system表空间中,那么用u1用户导入表test_tab后,该表还是会被建立在system表空间中。
    你可以试试,在导入脚本中的touser=表将要被导入给那个用户的用户名。
      

  4.   

    imp的时候对用户设置system表空间限额为0
      

  5.   

    PL/SQL导入时没有指定表空间的,只能试试手工导入了
      

  6.   

    前提这样的,我的ORACLE在E盘,由于没有空间了 ,我在F盘创建了20G的表空间B。难道这样就会导入到SYSTEM里么?
      

  7.   


    --1、sys用户登录收回用户A的unlimited tablespace权限
    revoke unlimited tablespace from A;--2、指定A用户在表空间B上的权限
    alter user A quota unlimited on B;--3、重新导入数据。
      

  8.   

    可能是原来的对象就建立在system的表空间里了,exp出来的表空间就在system里了。这里可以用quota试试。不过system的还没有试过。你参考一下。http://blog.csdn.net/inthirties/archive/2009/09/14/4547926.aspx
      

  9.   

    问题解决了,我怀疑一个是因为新建用户拥有resource权限带有的隐含权限unlimited tablesapce的问题,可以允许system扩容,另一个则是原来的库就在system表空间里,所以指定无效
      

  10.   

    重要的信息放在system表空间可不太好哈.
    可以用datapump 把system用户的数据迁移到别的用户上来哈.
      

  11.   

    create table a
    (
      )
    tablespace system   //把SQL脚本中的表空间system改成B就可以了。
      pctfree 10
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        minextents 1
        maxextents unlimited
      );