Oracle表空间的管理

 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中。

你可能感兴趣的:(oracle,数据库,user,table,工具)