Oracle表空间的管理
1.创建表空间
//创建临时表空间
create temporary tablespace test_temp
tempfile 'E:/oracle/product/10.2.0/oradata/testserver/test_temp01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间
create tablespace test_data
logging
datafile 'E:/oracle/product/10.2.0/oradata/testserver/test_data01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
2.给用户指定表空间
//创建用户并指定表空间
create user testserver_user identified by testserver_user
default tablespace test_data
temporary tablespace test_temp;
//给用户授予权限
grant connect,resource to testserver_user;
3.表空间迁移
方法1:
alter table tb_name move tablespace tbs_name;
来对表做空间迁移时只能移动非lob字段以外的数据,而如果我们要同时移动lob相关字段的数据,我们就必需用如下的含有特殊参数据的文句来完成,它就是:
alter table tb_name move tablespace tbs_name lob(col_lob1,col_lob2) store as(tablesapce tbs_name);
方法2:利用缺省表空间
缺省情况下,导入试图在与导出相同的表空间中创建对象。如果用户不具有那个表空间的权限,或者那个表空间不存在时,Oracle在用户帐户的缺省表空间中创建数据库对象。这些特性可以用于使用导出与导入在表空间之间移动数据库对象。
要为USER_A将TABLESPACE_A的所有对象移动到TABLESPACE_B,应遵循以下步骤:
(1) 为USER_A导出TABLESPACE_A中的所有对象。
(2) 执行REVOKE UNLIMITED TABLESPACE ON TABLESPACE_A FROM USER_A;以收回任何授予用户帐户的无限制表空间权限。
(3) 执行ALTER USER USER_A QUOTA 0 ON TABLESPACE_A;以使USER_A帐户不能在TABLESPACE_A上创建任何对象。
(4) 删除TABLESPACE_A中USER_A拥有的所有对象。
(5) 执行ALTER USER USER_A DEFAULT TABLESPACE TABLESPACE_B;以使TABLESPACE_B成为USER_A用户帐户的缺省表空间。Oracle试图将对象导入TABLESPACE_A,因为这些对象是从TABLESPACE_A导出的。注意用户不具有TABLESPACE_A上的配额。然后将查看用户的缺省表空间。在Oracle可以将数据导入TABLESPACE_B之前,必须给予USER_A用户该表空间上足够大的配额,如下步骤所示。
(6) 执行ALTER USER USER_A QUOTA UNLIMITED ON TABLESPACE_B;
(7) 导入被导出的数据库对象。缺省情况下,导入工具试图将它们导入到TABLESPACE_A中,然而,因为用户不具有这个表空间的配额,所以所有的对象将被创建在USER_A的缺省表空间TABLESPACE_B中。