用户的oracle数据库很大,所占用的表空间很大。
但是我们只导出里面的几张表就可以了(其他业务表可以不用导出来),
所以这样导出的dmp文件是比较小的,但是由于原来的表空间比较大,导致导入的时候,所占用的表空间还是和以前一样的大。
请问大家:有没有办法可以控制一下导入的表空间大小。谢谢 急
但是我们只导出里面的几张表就可以了(其他业务表可以不用导出来),
所以这样导出的dmp文件是比较小的,但是由于原来的表空间比较大,导致导入的时候,所占用的表空间还是和以前一样的大。
请问大家:有没有办法可以控制一下导入的表空间大小。谢谢 急
有三种主要的方式(完全、用户、表)
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就被导入。 使用第三种模式:
导出的时候就要选择表名
我没有说清楚,数据库中所有表都需要的。只是基础表需要数据,业务表只需要表结构。像里面的存储过程,job,函数,序列等都是需要的。
所以只到出表的方法,可能不行吧?
--合并碎片
alter tablespace temp coalesce; --temp是表空间的名字
--消除占用的空间
alter table temp shrink space;