oracle 导入(imp)数据时的表空间(tablespace users)问题

时间:2022-09-08 07:40:33
 

imp/exp 用户 表空间 users tablespace

使用exp把用户pwgh的数据导出后,再使用imp把数据导入另外一个数据库时。
发现一个问题,由于数据的导出用户pwgh的一些表建在表空间users里,
而我想把这些数据全部导入到另外一个数据库的某个表空间里,例如表空间pwgh_fs_tablespace。
虽然在创建用户的时候指定该用户的默认表空间(pwgh_fs_tablespace),但是还是有些表导入表空间users里。

查了一下发现使用如下步骤就可以把数据全部导入表空间pwgh_fs_tablespace里。

1. 使用DBA用户收回用户pwgh_fs的unlimited tablespace权限。
-------收回用户在表空间上配额大小无限制的权限
revoke unlimited tablespace from pwgh_fs;

2. 取消用户pwgh_fs在表空间users上的配额。
----给用户分配某个表空间的可用大小限额
alter user pwgh_fs quota 0 on users;
------为了防止用户在表空间pwgh_fs_tablespace上的配额不足,使用如下sql让用户在该表空间上不限配额。
alter user pwgh_fs quota unlimited on PWGH_FS_TABLESPACE;

这样再导入,就会把数据都导入表空间pwgh_fs_tablespace。
实际上就是让用户pwgh_fs可用的表空间只有pwgh_fs_tablespace这一个表空间就行了。

使用到的exp和imp语句:
exp pwgh/pwgh_test@FSPWGH_CS file="d:\oracle_temp\pwgh_fs_table20111103.dmp" owner=(pwgh)
imp pwgh_fs/pwgh_fs@pwgh file="d:\oracle_temp\pwgh_fs_table20111103.dmp" full=y