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.搬移表空间时,源表空间中存放的所有数据对象的所有者在目标数据库中必须存在,如果不存在,则应在导入表空间之前建立相应的用户,然后再导入表空间。