用户的oracle数据库很大,所占用的表空间很大。
但是我们只导出里面的几张表就可以了(其他业务表可以不用导出来),
所以这样导出的dmp文件是比较小的,但是由于原来的表空间比较大,导致导入的时候,所占用的表空间还是和以前一样的大。
请问大家:有没有办法可以控制一下导入的表空间大小。谢谢 急

解决方案 »

  1.   

        1、EXP:
           有三种主要的方式(完全、用户、表)
           1、完全:
              EXP  SYSTEM/MANAGER   BUFFER=64000  FILE=C:\FULL.DMP  FULL=Y
              如果要执行完全导出,必须具有特殊的权限
           2、用户模式:
              EXP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC
              这样用户SONIC的所有对象被输出到文件中。
           3、表模式: 免费资源http://www.it55.com 
              EXP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC TABLES=(SONIC)
              这样用户SONIC的表SONIC就被导出
        2、IMP:
           具有三种模式(完全、用户、表)
           1、完全:
              IMP SYSTEM/MANAGER  BUFFER=64000  FILE=C:\FULL.DMP  FULL=Y
           2、用户模式:
              IMP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  FROMUSER=SONIC  TOUSER=SONIC
              这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
           3、表模式:
              IMP  SONIC/SONIC     BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC TABLES=(SONIC) http://www.it55.com/ 
              这样用户SONIC的表SONIC就被导入。 使用第三种模式:
    导出的时候就要选择表名
      

  2.   

    哪个表空间不可以收缩一下吗?oracle有这样的功能吗?
      

  3.   

    只导表。再用fromuser=  touser=
      

  4.   

    我明白你的意思
    我没有说清楚,数据库中所有表都需要的。只是基础表需要数据,业务表只需要表结构。像里面的存储过程,job,函数,序列等都是需要的。
    所以只到出表的方法,可能不行吧? 
      

  5.   

    alter table t move; --消除HWM
    --合并碎片
    alter tablespace temp coalesce;  --temp是表空间的名字
    --消除占用的空间
    alter table temp shrink space;