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

如何把数据导入不同的表空间

很多人在进行数据迁移时,希望把数据导入不同于原系统的表空间,在导入之后却往往发现,数据被导入了原表空间。
  
  本例举例说明解决这个问题:
  
  1.如果缺省的用户具有DBA权限
  
  那么导入时会按照原来的位置导入数据,即导入到原表空间
  $ imp bjbbs/passwd file=bj_bbs.dmp fromuser=jive touser=bjbbs grants=n
  
  Import: Release 8.1.7.4.0 - Production on Mon Sep 22 11:49:41 2003
  
  (c) Copyright 2000 Oracle Corporation. All rights reserved.
  
  Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.7.4.0 - 64bit Production
  
  Export file created by EXPORT:V08.01.07 via conventional path
  
  Warning: the objects were exported by JIVE, not by you
  
  import done in ZHS16GBK character set and ZHS16GBK NCHAR character set
  . . importing table        "HS_ALBUMINBOX"     12 rows imported
  . . importing table        "HS_ALBUM_INFO"     47 rows imported
  . . importing table          "HS_CATALOG"     13 rows imported
  . . importing table     "HS_CATALOGAUTHORITY"     5 rows imported
  . . importing table     "HS_CATEGORYAUTHORITY"     0 rows imported
  ....
  . . importing table         "JIVEUSERPROP"     4 rows imported
  . . importing table          "JIVEWATCH"     0 rows imported
  . . importing table          "PLAN_TABLE"     0 rows imported
  . . importing table          "TMZOLDUSER"     3 rows imported
  . . importing table         "TMZOLDUSER2"     3 rows imported
  About to enable constraints...
  Import terminated successfully without warnings.
  
  查询发现仍然导入了USER表空间
  
  $ sqlplus bjbbs/passwd
  
  SQL*Plus: Release 8.1.7.0.0 - Production on Mon Sep 22 11:50:03 2003
  
  (c) Copyright 2000 Oracle Corporation. All rights reserved.
  
  Connected to:
  Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.7.4.0 - 64bit Production
  
  SQL> select table_name,tablespace_name from user_tables;
  
  TABLE_NAME           TABLESPACE_NAME
  ------------------------------ ------------------------------
  HS_ALBUMINBOX         USERS
  HS_ALBUM_INFO         USERS
  HS_CATALOG           USERS
  HS_CATALOGAUTHORITY      USERS
  HS_CATEGORYAUTHORITY      USERS
  HS_CATEGORYINFO        USERS
  HS_DLF_DOWNLOG         USERS
  ...
  JIVEWATCH           USERS
  PLAN_TABLE           USERS
  TMZOLDUSER           USERS
  
  TABLE_NAME           TABLESPACE_NAME
  ------------------------------ ------------------------------
  TMZOLDUSER2          USERS
  
  45 rows selected.
  
  2.回收用户unlimited tablespace权限
  
  这样就可以导入到用户缺省表空间
  
  SQL> create user bjbbs identified by passwd
   2 default tablespace bjbbs
   3 temporary tablespace temp
   4 /
  
  User created.
  
  SQL> grant connect,resource to bjbbs;
  
  Grant succeeded.
  
  SQL> grant dba to bjbbs;
  
  Grant succeeded.
  
  SQL> revoke unlimited tablespace from bjbbs;
  
  Revoke succeeded.
  
  SQL> alter user bjbbs quota 0 on users;
  
  User altered.
  
  SQL> alter user bjbbs quota unlimited on bjbbs;
  
  User altered.
  
  SQL> exit
  Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.7.4.0 - 64bit Production
  
  重新导入数据
  
  $ imp bjbbs/passwd file=bj_bbs.dmp fromuser=jive touser=bjbbs grants=n
  
  Import: Release 8.1.7.4.0 - Production on Mon Sep 22 12:00:51 2003
  
  (c) Copyright 2000 Oracle Corporation. All rights reserved.
  
  Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
  With the Partitioning option
  JServer Release 8.1.7.4.0 - 64bit Production
  
  Export file created by EXPORT:V08.01.07 via conventional path