创建表空间

方法1:
代码创建,如下:
PL/SQL

  建立表空间(一般建N个存数据的表空间和一个索引空间):  
    create tablespace 表空间名  
    datafile ' 路径(要先建好路径)\***.dbf  ' size *M  
    tempfile ' 路径\***.dbf ' size *M  
    autoextend on  --自动增长 
    extent management local
SQL> /
表空间已创建。
 
   
 
方法2
用sqlplus,如下:
sqlplus / as sysdba
SQL>create tablespace 表空间名 datafile '文件路径及文件名称' size 500m;

方法3
通过脚本创建,如下:
Create tablespace 表空间名
datafile 'e:\database\oracle\demo.dbf'
size 32m
autoextend on
next 32m maxsize 1024m
extent management local; 

  

授予用户使用表空间 sql

无限量占用该表空间
alter user 用户名 quota unlimited on 表空间;
占用一定大小
或 alter user 用户名 quota *M on 表空间;

修改用户表空间

查询所有用户所在表空间
select username,default_tablespace from user_users;
修改用户表空间(携带用户下的所有表)
alter user 用户名 default tablespace 表空间名称;

 

删除表空间  sql
  drop tablespace 表空间名称  including contents and datafiles

 

 

 

 

在使用命令行创建表空间Tablespace的过程中,包括几个方面的参数。

       数据文件参数:包括表空间对应数据文件名称,初始大小和可变化规则;

       Extent(分区)分配规则方案:表空间对segment对象进行增加空间分配的时候,使用的分配方法和策略;

       Segment(段)对象管理方式:分为自动段对象管理或者手动段对象管理;

 

下面分别进行介绍:

 

   1、数据文件Datafile参数

 

表空间是“表、段、区、块”Oracle四层逻辑结构中唯一与特定物理文件对应的层次。一个表空间可以对应不同硬盘上的多个文件,而一个文件只能属于一个表空间。

 

在建立表空间的时候,都会生成至少一个数据文件作为表空间信息保存的地方。如果在Create tablespace时没有进行指定datafile字句,那么Oracle会自动依据OMF的方式创建出一个数据文件。

 

指定数据文件的字句是使用datafile作为关键字,后面内容包括文件路径、初始大小、拓展方式和每次增加空间大小。

 

        

  size子句:指定生成数据文件的初始大小,默认值通常为100m。对成熟的系统部署移植工作而言,通常是可以确定文件的固定大小。避免经常性的文件膨胀,引起性能变化;

       autoextend开关与next子句:文件大小变化开关是通过autoextend来实现的。如果设置on,表示该文件允许进行动态拓展,文件写满之后就会以next指定的大小进行拓展。如果设置为off,则该文件不进行拓展;

      next子句:当文件设置为可拓展时,next为每次进行拓展的步长。如果数据文件是经常大批量的增加,设置一个较大的next值为好;

       maxsize子句:文件大小上限;

 

 

      2、extent分区分配方案

 

  表空间Tablespace内部容纳的逻辑结构就是段segment对象。段对象通常是和数据库各个Schema中的对象相关联。表空间空间管理中一个重要方面就是将新的extent分配给segment对象。一个segment会对应一个或者多个extent对象。extent区就是连续的block块集合。

 

  从Oracle发展历程看,extent分配方案有两个阶段。首先出现的是Dictionary Mangage Tablespace,就是数据字典管理方式。数据库中维护一个数据表,每次进行extent分配管理的时候,都要访问该数据表。DMT代表了一个时代,同时也伴随着致命的缺陷。

 

  数据库的一个重要指标就是并行度。一旦出现并行瓶颈,就意味着系统架构存在缺陷。DML就是这样的一个问题,当数据库表空间存在大量的分配请求时,该数据表容易形成瓶颈。于是,DML就被一种新的分配方法Locally Mangage Tablespace(LMT)所取代。

 

  目前的Oracle数据库,都是缺省使用LMT方法的。LMT简单来说,就是利用位图表技术,将分配extent的方法和记录记录在数据文件的文件头上。这样,不同文件的分配压力,就从一个数据表上分散到多个文件上。

 

  目前的Oracle数据库,是可以同时支持LMT和DMT的。但是,新系统一般都会使用LMT。LMT策略下,有存在分配extent大小的问题。

每次进行extent分配的策略,有系统自动和统一大小uniform. size两种方法。

        automatic allocation自动分配大小。对每个分配extent的大小,由系统自动进行大小判定。这种方式的优点是每次的extent大小比较灵活。但是缺点也是很严重,就是引起大量的存储碎片。

      uniform. size统一大小。每次分配的extent的大小都是固定的,这样可以很大程度的避免碎片问题。默认uniform. size大小是1M。

 

 

      3、段segment管理策略

 

  最后介绍表空间创建参数中的segment管理策略。segment对应的通常是一个数据库留存对象信息,如数据段、索引段、回滚段。Segment space management对应的是对segment空间管理的策略,目前有auto和manual两种方式。

 

      ASSM(auto)方式:ASSM是代表新趋势的技术,10g中对应的shrink space功能,就是以ASSM技术作为基础,有效减低HWM,避免出现过多的空间浪费。在过去需要设计的pctfree、pctlist等参数,也使用自动化方式进行管理;

      手工(Manual)方式:与自动ASSM相对应。与ASSM不同在于每个segment对象都能拥有独立的存储设置参数;

 

在segment管理策略上,目前一般都选择ASSM策略。但并不意味着ASSM是万能的,还存在一些局限。

 

 

 

 

 

 

 

 

exp 用户名/密码@ORCL file=d:\daochu.dmp full=y