您的位置:首页 > 数据库 > Oracle

Oracle表空间的管理

2015-01-21 15:39 288 查看
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中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: