工作需要,经常在多个比较大的数据库中切换,本地磁盘又比较有限。每次只能存放一到两个不同的库。需要切换数据库,但是现在的做法是将oracle完全删除后再重新建立数据库再导入。但是比较费时间。
新建用户的时候新建一个表空间,但是imp之后发现仍旧只增大了user的表空间。很麻烦
如何新建表空间和用户,保证新导入的库完全导入到新建的表空间当中呢?
这样是不是当我新导入库没有空间的时候删除用户和表空间就可以清空磁盘,并可以导入新的库,而不用重新安装oracle了呢?
还有如何建立自增的表空间?

解决方案 »

  1.   

    楼上的方法可行,楼主也可以使用IMPDP的几个参数(remap_tablespace,remap_datafile,remap_schema)来进行数据导入的存储时的转换.
      

  2.   

    用EM很方便的:
    先新建一个可扩展的表空间,然后新建一个用户,将新表空间设置成新用户的默认的空间。
    当你创建表的时候就用新的用户登录。这样那些表就在新的表空间里了。
    或者用plsql:
    创建表空间:
    CREATE SMALLFILE TABLESPACE "TEST" DATAFILE '/u01/app/oracle/oradata/orabi/test01' SIZE 500M AUTOEXTEND ON NEXT 200K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS
    创建新用户(并分配dba的角色给这个用户,视自己的实际情况而定):
    CREATE USER "TESTUSER" PROFILE "DEFAULT" IDENTIFIED BY "*******" DEFAULT TABLESPACE "TEST" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK
    GRANT "CONNECT" TO "TESTUSER"
    GRANT "DBA" TO "TESTUSER"
      

  3.   

    imp
    的表空间迁移好像可以满足你的要求,建议看看
      

  4.   

    http://blog.csdn.net/zhpsam109/archive/2006/10/09/1327443.aspx
      

  5.   

    安装DEVELOPER,在TOOL下面有一个导入导出数据的工具很好用,建议你安装一个
      

  6.   

    占用表空间的一般只有数据表和索引!!!对于表:
    Alter Table Table_Name Move Tablesapce Tablespace_Name;对于索引:
    Alter Index Index_Name Rebuild Tablespace Tablespace_Name;这样操作就可以把数据迁移到你想放到的表空间中!!!
    需要说明的是楼主的提问有问题!!!在Oracle中数据存放在逻辑的表空间中,每个表空间有n个数据文件组成。如果表空间有n个文件的话,Oracle会同时使用所有的文件,不会单独写入一个文件。如果执行写入一个文件,只能将另外的文件置于Offline状态再进行操作!!!
      

  7.   

    zhpsam109 的方法好用,收藏了,谢谢!wzjcntlqs DEVELOPER在用,但是一般不用他的导入导出,适用性不好,我这里可能很好用,但是到别的机器别的方式就不好用了,不太适合客户那里操作。其他的关于imp如何操作的,我也是这么做的,但是实际上没有效果。可能是配置的问题,我用的oracle9.0典型配置。楼上的,你的操作方式我没有试,可能可以,但是我说了,我要经常在几个库当中切换,每个库上百个表,几千个索引,要是按照你的方法,我就算写个文件自动执行,我估计时间上我也等不了,我完全不可能说先挪出去再删除,可能你不了解我的意思。而且写个文件自动执行,估计我还得累死。不同的数据库还需要核对表和索引是不是相同的。
    所以等到导入后再进行转表空间的操作,对于无来说是没用的
    =。=