请问,9M大的dmp文件导入数据库后,占了1G的系统表空间?

时间:2021-05-14 17:23:41
本人进行数据移植,重原数据库导出用户数据,备份文件只有9m多点大,

在新数据库上建立同样用户,授DBA权限,建立了独立表空间文件,与用户关联,

导入,发现为该用户建立的表空间未使用,系统表空间反而用了1G多,用满了,

请问这是什么原因,怎么解决

24 个解决方案

#1


这是因为在你导出的用户数据就占用了这么多空间,你导入的时候,那些存储参数没有变化,所以才会这样。
你可以这样做:
导入的时候:imp indexfile=...;加个indexfile,然后把那个文件中的存储参数修改成适合你的,这样就可以了。
试一下吧!

#2


估计是dmp中表的扩展参数的问题.

#3


原来导出的数据库的表空间创建了1G,表空间并没有使用那么多,里面还有很多是空的。

#4


怎么解决 这个问题啊

谢谢

#5


有知道  怎么回收表空间

数据库表空间已用1g多

但导出的DMP备份文件只有  几十K

#6


你的用户的临时表空间是system,暂时没有释放而已

不过我不知道临时表空间什么时候才释放……

#7


用户的表空间都是单独建的

到导入时都到系统表空间去了

临时表空间没用什么

#8


有谁知道

#9


请问怎样释放那些没使用的表空间

#10


应该是原来导出时,用户的表空间就占了很多空间的问题

#11


有个参数  ,到如是指定 rows=n 吧。

#12


现在,数据表空间用了1g多(数据表是导入的),

导出文件只有几十k,

大家遇到过这种问题吗,怎么解决,我用的是ORACLE 8.1.7 FOR UNIX

还有一怪现象:

数据库建了两用户,都分别建立了独立表空间,

导第一用户的数据表时,9M的占了1g多表空间,占用的是系统表空间
导第二用户的数据表时,几十k的占了5g的表空间,只到了数据结构,占有的却是第一个用户的表空间。
在用户下新建表,占用的表空间又是对的。

大家遇到过这种问题没有,怎么解决?????

谢谢


#13


原库中的用户二下的表占用的就是第一个表空间,导入后仍用相同的表空间,
如果导入时库中没有对应的表空间才使用default tablespace

#14


你说的是不是 ORACLE8.1.7 FOR UNIX 的新变化,

以前我用其他ORACLE版本没遇到过这种问题

#15


When U take Export , Please specify compress = Y , Then All the extends will be merged and at time of importing , it will not take up so many space

#16


数据导出是 压缩的,导出文件很小

问题是导入数据库时不对

#17


软件环境: 
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT

解释原因: 
1、一般情况下,用export导出来的dmp文件中,包含表的storage信息,

  如果导出的是一个很大的表,比如有1000万条记录,则此表的storage默认初始大小已达到上百兆,

  这样如果你使用rows=n选项,即使导出来的dmp文件大小只有不到一兆,

  导入时,系统会按storage默认初始大小来分配表空间,所以一下就占用了很多的空间,

  如果剩余表空间不够,并且没有设置成自动扩展(数据文件),还会发生导入错误。

#18


请问如何解决,

还有导入数据表存储的表空间不对的问题 怎么解决


谢谢

#19


1:关于导出的DMP文件小,而实际导入数据库中文件大,这是很正常的,因为在导出时,文件经过ORACLE的压缩。而导入后,假如你原表空间大小为1G,即使里边真正的数据没有1G,ORACLE也要为表空间开劈1G的存储空间。解决这个问题用如下的方法(可能方法很多,但我只会这种笨方法)。假如原表空间虽然有1G,而里边的数据真正的大小可能有10M.那么在导入新库中的时候,先建立一个和原表空间名一样的一个表空间,把这个新建的表空间的大小设为10M.这样导入新库中就不会有这么大了。(如果不表空间不够,导入时会提示,然后,你可以根据实际情况来调整,直到刚好把数据存储)。
2:关于导入表空间出错原因:
假如你导出时用SYSTEM导出,导入时也用SYSTEM则会导入到系统表空间中。
如果想保证一致:最好导出和导入时都用表空间的默认用户。例:A表空间默认用户为是USER1,则导出和导入A时均用USER1.(当然最后给USER1有DBA权限)。

#20


谢谢

1:你说的是不是ORACLE新的变化,我原来导入、导出数据都没遇到过这种问题,
   我有个导入用户是实时用户,数据有几十G,现在不需要建这么大的表空间了
   有没有更好的方法,而且原来的表空间名称不记得了。

2: 我的具体导出、导出 : aa(老) 导入到 bb(新)
旧数据库
使用 aa 用户进行导出操作,导出的用户也是 aa   ,aa 赋了DBA权限

新数据库
使用 bb 用户进行导入操作,导入的用户是aa,bb 赋了DBA权限

aa用户 bb用户都单独建立了表空间和临时表空间

这样操作有什么问题

#21


up

#22


数据文件的大小是可以改的,只要它还没被用上,用ALTER DATAFILE 命令.

#23


这是表空间的问题,要查看文件的大小,用语句
select dbms_lob.getlength(字段名) from 表名;

注:字段类型为blob。

#24


扩展参数的问题

#1


这是因为在你导出的用户数据就占用了这么多空间,你导入的时候,那些存储参数没有变化,所以才会这样。
你可以这样做:
导入的时候:imp indexfile=...;加个indexfile,然后把那个文件中的存储参数修改成适合你的,这样就可以了。
试一下吧!

#2


估计是dmp中表的扩展参数的问题.

#3


原来导出的数据库的表空间创建了1G,表空间并没有使用那么多,里面还有很多是空的。

#4


怎么解决 这个问题啊

谢谢

#5


有知道  怎么回收表空间

数据库表空间已用1g多

但导出的DMP备份文件只有  几十K

#6


你的用户的临时表空间是system,暂时没有释放而已

不过我不知道临时表空间什么时候才释放……

#7


用户的表空间都是单独建的

到导入时都到系统表空间去了

临时表空间没用什么

#8


有谁知道

#9


请问怎样释放那些没使用的表空间

#10


应该是原来导出时,用户的表空间就占了很多空间的问题

#11


有个参数  ,到如是指定 rows=n 吧。

#12


现在,数据表空间用了1g多(数据表是导入的),

导出文件只有几十k,

大家遇到过这种问题吗,怎么解决,我用的是ORACLE 8.1.7 FOR UNIX

还有一怪现象:

数据库建了两用户,都分别建立了独立表空间,

导第一用户的数据表时,9M的占了1g多表空间,占用的是系统表空间
导第二用户的数据表时,几十k的占了5g的表空间,只到了数据结构,占有的却是第一个用户的表空间。
在用户下新建表,占用的表空间又是对的。

大家遇到过这种问题没有,怎么解决?????

谢谢


#13


原库中的用户二下的表占用的就是第一个表空间,导入后仍用相同的表空间,
如果导入时库中没有对应的表空间才使用default tablespace

#14


你说的是不是 ORACLE8.1.7 FOR UNIX 的新变化,

以前我用其他ORACLE版本没遇到过这种问题

#15


When U take Export , Please specify compress = Y , Then All the extends will be merged and at time of importing , it will not take up so many space

#16


数据导出是 压缩的,导出文件很小

问题是导入数据库时不对

#17


软件环境: 
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT

解释原因: 
1、一般情况下,用export导出来的dmp文件中,包含表的storage信息,

  如果导出的是一个很大的表,比如有1000万条记录,则此表的storage默认初始大小已达到上百兆,

  这样如果你使用rows=n选项,即使导出来的dmp文件大小只有不到一兆,

  导入时,系统会按storage默认初始大小来分配表空间,所以一下就占用了很多的空间,

  如果剩余表空间不够,并且没有设置成自动扩展(数据文件),还会发生导入错误。

#18


请问如何解决,

还有导入数据表存储的表空间不对的问题 怎么解决


谢谢

#19


1:关于导出的DMP文件小,而实际导入数据库中文件大,这是很正常的,因为在导出时,文件经过ORACLE的压缩。而导入后,假如你原表空间大小为1G,即使里边真正的数据没有1G,ORACLE也要为表空间开劈1G的存储空间。解决这个问题用如下的方法(可能方法很多,但我只会这种笨方法)。假如原表空间虽然有1G,而里边的数据真正的大小可能有10M.那么在导入新库中的时候,先建立一个和原表空间名一样的一个表空间,把这个新建的表空间的大小设为10M.这样导入新库中就不会有这么大了。(如果不表空间不够,导入时会提示,然后,你可以根据实际情况来调整,直到刚好把数据存储)。
2:关于导入表空间出错原因:
假如你导出时用SYSTEM导出,导入时也用SYSTEM则会导入到系统表空间中。
如果想保证一致:最好导出和导入时都用表空间的默认用户。例:A表空间默认用户为是USER1,则导出和导入A时均用USER1.(当然最后给USER1有DBA权限)。

#20


谢谢

1:你说的是不是ORACLE新的变化,我原来导入、导出数据都没遇到过这种问题,
   我有个导入用户是实时用户,数据有几十G,现在不需要建这么大的表空间了
   有没有更好的方法,而且原来的表空间名称不记得了。

2: 我的具体导出、导出 : aa(老) 导入到 bb(新)
旧数据库
使用 aa 用户进行导出操作,导出的用户也是 aa   ,aa 赋了DBA权限

新数据库
使用 bb 用户进行导入操作,导入的用户是aa,bb 赋了DBA权限

aa用户 bb用户都单独建立了表空间和临时表空间

这样操作有什么问题

#21


up

#22


数据文件的大小是可以改的,只要它还没被用上,用ALTER DATAFILE 命令.

#23


这是表空间的问题,要查看文件的大小,用语句
select dbms_lob.getlength(字段名) from 表名;

注:字段类型为blob。

#24


扩展参数的问题