日期:2014-05-16  浏览次数:20885 次

导入数据库时指定表空间的遇到的问题
新创建了一个用户USER,并为其指定默认的表空间TABLESPACE_NEW,这个TABLESPACE_NEW也是新建的。

然后回收了该用户对表空间的unlimited权限,并将用户USER在System表空间和原有的默认表空间TABLESPACE_OLD的配额置为0,又将在表空间TABLESPACE_NEW的配额设置成unlimited,以使用户USER导入数据库时,数据会放在表空间TABLESPACE_NEW里。

用imp命令导入时,发现数据的确导入了TABLESPACE_NEW中。

但是现在发现了一个问题,导入过程中,某些表出现了“超出表空间TABLESPACE_OLD的配额”,导致了无法导入该表。

想问的是,既然现在导入在TABLESPACE_NEW里,那么为什么还和TABLESPACE_OLD有关系?

------解决方案--------------------
查看一下,出问题的表是否有lob类型,如blob,clob,long等
------解决方案--------------------
你导出数据的表空间是在OLD的吧,那么导入时候去找表的默认表空间OLD,

------解决方案--------------------
探讨
引用:

你导出数据的表空间是在OLD的吧,那么导入时候去找表的默认表空间OLD,
是这样的,导出数据的表空间是在OLD。但是其他的表都可以导入NEW中,为何这几个不行呢?

------解决方案--------------------
lob类型的存储方式和其他字段类型不一样,他与对应user的default tablespace没有必然的联系。在exp/imp的时候,用普通的方法不行。好像10以后去掉了这个限制。
可变通实现,如先在目标用户及新表空间上建表,然后导入的时候ignore=y。
或者通过copy将含有lob的表迁移
------解决方案--------------------
探讨
想问的是,既然现在导入在TABLESPACE_NEW里,那么为什么还和TABLESPACE_OLD有关系?

------解决方案--------------------
探讨
引用:

lob类型的存储方式和其他字段类型不一样,他与对应user的default tablespace没有必然的联系。在exp/imp的时候,用普通的方法不行。好像10以后去掉了这个限制。
可变通实现,如先在目标用户及新表空间上建表,然后导入的时候ignore=y。
或者通过copy将含有lob的表迁移
原来是这样。也就说不含lob类型的表是会和use……