1、创建和设置表空间

CREATE TABLESPACE mydb2
  DATAFILE 'D:\oracle\product\10.2.0\oradata\test\MYDB4.DBF'
  SIZE 30M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED,
  'D:\oracle\product\10.2.0\oradata\test\MYDB5.DBF'
  SIZE 20M AUTOEXTEND ON NEXT 5 MAXSIZE 100M;

ALTER DATABASE DATAFILE 'D:\oracle\product\10.2.0\oradata\test\MYDB4.DBF' RESIZE 40M;

ALTER DATABASE DATAFILE 'D:\oracle\product\10.2.0\oradata\test\MYDB5.DBF'
  AUTOEXTEND ON NEXT 10M 
  MAXSIZE UNLIMITED;

ps.
如果文件不存在,则 DATAFILE 需要 SIZE;如果文件存在,则 DATAFILE 需要指定 REUSE 关键字。



2、更改用户默认表空间,并授权

ALTER USER kiant DEFAULT TABLESPACE mydb2;

SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users;

GRANT UNLIMITED TABLESPACE, DBA TO kiant;



3、创建表并插入测试数据

CREATE TABLE k7 (a1 VARCHAR2(255));

SELECT * FROM dba_tables WHERE table_name= 'K7';

INSERT INTO  k7 SELECT sys_guid() FROM dual CONNECT BY LEVEL <=10000;

COMMIT;

SELECT * FROM k7 WHERE ROWNUM<=5;



4.1、用户级数据导入导出

ALTER TABLESPACE mydb2 READ ONLY;
ho $ exp userid=kiant/love2you@test file=d:\123.dmp;

ALTER TABLESPACE mydb2 READ WRITE;
ho $ imp userid=kiant/love2you@test file=d:\123.dmp full=y ignore=y rows=n;
ho $ imp userid=kiant/love2you@test file=d:\123.dmp full=y ignore=y rows=y buffer=64000;

ps.
导入时应优先导入所有数据库结构 rows=n;然后才导入结构和数据 rows=y。


4.2、表空间数据导入导出

ALTER TABLESPACE mydb2 READ ONLY;
ho $ exp userid=kiant/love2you@test file=d:\124.dmp tablespaces=mydb2;

ho $ imp userid=kiant/love2you@test file=d:\124.dmp tablespaces=mydb2 full=y ignore=y rows=n;
ho $ imp userid=kiant/love2you@test file=d:\124.dmp tablespaces=mydb2 full=y ignore=y rows=y buffer=64000;


4.3、表空间迁移

ALTER TABLESPACE mydb2 READ ONLY;
ho $ exp userid='sys/love2you as sysdba' file=d:\mydb2.dmp tablespaces=mydb2 transport_tablespace=y;

DROP TABLESPACE mydb2 INCLUDING CONTENTS;
ho $ imp userid='sys/love2you as sysdba' file=d:\mydb2.dmp tablespaces=mydb2 transport_tablespace=y
  datafiles=D:\oracle\product\10.2.0\oradata\test\MYDB4.DBF, D:\oracle\product\10.2.0\oradata\test\MYDB5.DBF;

ps.
a.必须以 'sysdba' 身份连接,才能进行时间点恢复或可传输的表空间导入。
b.搬移表空间时,源表空间中存放的所有数据对象的所有者在目标数据库中必须存在,如果不存在,则应在导入表空间之前建立相应的用户,然后再导入表空间。



参考文件:
数据库迁移几种方式
[推荐]移动Oracle的表空间
使用Oracle 的 imp ,exp 命令实现数据的导入导出
Oracle利用传输表空间导出导入数据的步骤