oracle将数据导入指定表空间

在使用oracle的 exp 和imp 导出导入的时候。有时遇到,需要导入的数据不是同一个用户的,也不一定是同一个表空间。

例如,源数据库,上用户为aaa,表空间aa 目标数据库 ,用户为bbb 表空间bb 当用imp导入以后查看发现,bbb没有aa这个表空间,但是还是导入进去了,不过全部都跑到了users里面。这种情况时常有发生,特别是迁移数据库的时候。那么为了更好的管理表空间和数据表,可以采用下面的方式。

连接目标数据库

oracle@UCITDB:~> sqlplus /nolog SQL

*Plus: Release 10.2.0.1.0 - Production on Fri Oct 15 16:14:29 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> CONN /AS SYSDBA Connected.

SQL> revoke unlimited tablespace from ucitdba;

Revoke succeeded. 删除该用户的表空间使用限制

SQL> alter user ucitdba quota 0 on users;

User altered. 修改表空间使用参数

SQL> alter user ucitdba quota unlimited on ucit;

User altered. 将目标表空间的无限制使用权限赋给用户

SQL> quit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options

imp ucitdba/111111 fromuser=ucitdba touser=ucitdba file=/opt/oracle/oradata/backup/ucit_20101015.dmp tablespaces=ucit grants=y

具体地址根据自己的设置修改,之后回车搞定

如果出现了tablespaces的错误。那么是因为dmp文件中还有大量的创建表的命令中含有表空间users 可以使用 UltraEdit 将 tablespaces "USERS" 替换成 你的表空间,保存后,重新导入。

原文地址:https://www.cnblogs.com/dba_xiaoqi/p/1852357.html