精华内容
下载资源
问答
  • 一、外存分配方式 二、储空间管理

    一、外存分配方式

    a.目标:有效利用外存空间,提高文件访问速度
    b.采用的磁盘分配方式决定了文件的物理结构
    顺序结构;链接式结构;索引式结构。

    c.常用的外存组织三种方式:

    1. 连续分配(顺序结构
      a.为每一个文件分配一组相邻的盘块。
      b.逻辑文件中的记录顺序与存储器中文件占用盘块的顺序一致。
      优点:顺序访问容易,读写速度快
      缺点
      *会产生外存碎片。可紧凑法弥补,但需要额外的空间,和内存紧凑相比更花时间。
      *创建文件时要给出文件大小;存储空间利用率不高,不利于文件的动态增加和修改;
      适用于变化不大顺序访问的文件,在流行的UNIX系统中仍保留了连续文件结构。如对换区

    2. 链接分配(不连续)(链接式结构
      可以为每一个文件分配一组不相邻的盘块。
      设置链接指针,将同属于一个文件的多个离散盘块链接成一个链表,这样形成的文件称为链接文件。会有链接成本。
      (1)优点
      离散分配,消除外部碎片,提高利用率
      同时适用于文件的动态增长;修改容易
      ==>>不足
      ①顺序检索的时间成本:不能支持高效的盘块直接存取。要对一个文件进行直接存取,仍需在FAT中顺序的查找许多盘块号。
      ②链接信息的空间成本:FAT需占用较大的内存空间。当磁盘容量较大时,FAT可能要占用数MB以上的内存空间。这是令人难以忍受的
      (2)链接有两种形式:
      ①隐式链接
      a.链接信息隐含记录在盘块数据中;记录中只有开始盘块号和结束盘块号
      b.每个盘块拿出若干字节,记录指向下一盘块号的指针。(减少了每一块存储的字节数)
      c.问题:只能顺着盘块读取,可靠性低(花费的时间长
      ②显式链接(FAT–file allocationtable)
      a.链接信息以信息表的形式显示存放
      b.属于一个文件的盘块通过链接成为一体,每个链条的首地址作为文件地址记录在相应文件的FCB(文件控制块)的“物理地址”字段中。
      c.记录盘块链接的指针显示地记录为一张链接表
      d.所有已分配的盘块号都记录在其中,称文件分配表(FAT)
      e.为了提高文件系统访问速度,FAT一般常驻内存
      (根据FAT可知外存大小)

      在这里插入图片描述

    3. 索引分配(索引式结构
      a.系统运行时只涉及部分文件,FAT表无需全部调入内存
      b.每个文件单独建索引表(物理盘块索引),记录所有分配给它的盘块号;
      c.建立文件时,便分配一定的外存空间用于存放文件盘块索引表信息;
      (1)单级索引分配
      分配一个盘块存储该文件占用的盘块号
      a.索引形式适合大文件
      b.中、小型文件,只需若干链接即可。若用索引分配方式,用一个盘块存放少量索引信息反而不适用。
      (2)多级索引
      a.若文件较大,存放索引表也需要多个盘块(索引盘块)。
      b.索引盘块亦需要按顺序管理起来
      若索引盘块数量较少,比指针链接方式浪费空间,用指针链接的方式即可
      索引盘块较多,需对索引盘块也采用索引方式管理,形成多级索引
      FBC中存放文件名和主索引号,主索引中再存放一级索引
      在这里插入图片描述
      (3)混合组织索引(增量式索引组织方式)
      一个索引结点定义为13个地址项:iaddr(0)~iaddr(12),总的来说分为两种:直接地址、间接地址
      a. iaddr(0)~iaddr(9)存放直接地址,即存文件数据的盘块号(仅需访问磁盘一次)
      b. iaddr(10)存放单级索引的索引盘块号(需两次访问磁盘)
      c. 剩余的用于文件较大时存放多级索引数据。
      *iaddr(11)存放二级索引的主索引盘块号(需三次访问磁盘)
      *iaddr(12)存放三级索引的主索引盘块号(需四次访问磁盘)

    例题:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、存储空间的管理

    为实现存储空间分配,系统需要:
    a.记住空闲存储空间使用情况;为空间设置相应的数据结构
    b.提供对存储空间分配、回收的操作手段。

    典型的管理方法:
    (1)空闲表和空闲链表法
    ①空闲表法
    常用于连续分配管理方式
    数据结构:
    a.系统为外存上的所有空闲区建立一张空闲表
    b.每个空闲区对应一个空闲表项(表项包括序号、空闲区的第一个盘块号、空闲盘块数等。)
    c.将所有空闲区按其起始盘块号递增的次序排列
    ②空闲链表法
    将所有空闲盘区拉成一条空闲链。
    数据结构:
    根据构成链所用基本元素的不同,可把链表分成两种形式:
    a.空闲盘块链
    优点:分配和回收一个盘块的过程非常简单,链表长,大量分配时需要操作的指针多
    b.空闲盘区链
    链表长度不定,分配时操作的指针数量相对较少,但分配回收操作相对复杂。

    (2)位示图法
    值为0表示对应的盘块空闲,为1表示已分配。有的系统则相反。
    总块数:mn
    在这里插入图片描述
    a.盘块号计算公式:
    j从1开始:盘块号 = 列总数*(i-1)+ j
    j从0开始:盘块号 = 列总数*(i-1)+ j+1
    b.根据盘块算行列计算公式:
    i从1开始:i=(盘块号-1)/列数+1;j=(盘块号-1)%列数+1
    i从0开始:i=(盘块号-1)/列数;j=(盘块号-1)%列数
    c.优缺点:从位示图中很容易找到一个或一组相邻接的空闲盘块。但限于容量问题,常用于微型机和小型机中

    (3)成组链接法
    a.大型文件系统,空闲表或空闲链表太长不方便管理操作。
    b.UNIX系统中采用成组链接法,这是将两种方法结合而形成的一种空闲盘块管理方法。
    c.中心思想:
    所有盘块按规定大小划分为组;
    组间建立链接;
    组内的盘块借助一个系统栈可快速处理,且支持离散分配回收

    展开全文
  • R语言入门——工作空间管理函数

    千次阅读 2020-04-10 10:39:36
    空间管理函数引言正文主要函数及其功能路径.Datasave根目录getwdsetwdhelp or ?example 引言 对于R语言初学者来说,学会常用的空间管理函数可以使得使用R语言事半功倍。本文就主要介绍一下R语言中主要的空间管理函数...

    00引言

    对于R语言初学者来说,学会常用的空间管理函数可以使得使用R语言事半功倍。本文就主要介绍一下R语言中主要的空间管理函数。供大家学习参考。本文使用的R软件是原生态的编译器。

    1、正文

    1.1主要函数及其功能表

    函数功能
    .RDataR空间默认后缀名
    getwd获取目前的工作目录
    setwd修改的工作目录
    ./code设置根目录
    search显示载入包
    ls列出当前对象
    rm移除对象
    save保存指定对象到一个文件中
    load读取工作空间:.RData
    q退出R
    help or ?显示可用选项的说明
    example获取函数的例子

    1.2实用小技巧

    在介绍前,先说以下正斜杠(/),反斜杠(\),R语言中的路径一般是一个正斜杠或者两个反斜杠(第一个反斜杠可以理解为转义)。
    在R语言对外交互时,例如数据的读写、自编函数函数载入都需要设置路径。这对代码的迁移使用将带来麻烦。我们可以使用.Data根目录的方式去管理空间。打开根目录时将会得到目前的路径。如下图和代码:
    在这里插入图片描述

    > getwd()
    [1] "E:/桌面/code"
    

    我们看到路径是一致的。我们也可以自定义设置路径来设置目录。

    > setwd("E:/桌面")
    > getwd()
    [1] "E:/桌面"
    

    1.3函数包的整理

    > search()  # 显示载入包
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"     
    > library(ggplot2) # 加载画图包 
    Need help? Try Stackoverflow: https://stackoverflow.com/tags/ggplot2
    Warning message:
    程辑包‘ggplot2’是用R版本3.6.3 来建造的 
    > search()  # 显示载入包
     [1] ".GlobalEnv"        "package:ggplot2"   "package:stats"    
     [4] "package:graphics"  "package:grDevices" "package:utils"    
     [7] "package:datasets"  "package:methods"   "Autoloads"        
    [10] "package:base"     
    > detach("package:ggplot2") # 移除画图包
    > search()  # 显示载入包
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"  
    

    1.4对象管理

    > a = 1;b = 2
    > ls()
    [1] "a" "b"
    > rm(list=ls(all=TRUE))  # 移除所有
    > a = 1;b = 2
    > rm("a")
    > ls()
    [1] "b"
    

    1.5 帮助文档和式子

    > ?mean  # 查看mean函数的帮助文档
    > help(mean)  # 查看mean函数的帮助文档
    > example(mean)  # 查看mean函数的例子
    > mean> x <- c(0:10, 50)
    > mean> x <- c(0:10, 50)
    > mean> c(xm, mean(x, trim = 0.10))
    [1] 8.75 5.50
    

    1.6保存载入空间的函数

    > a = 1;b = 2
    > save(a,file = "a.RData")
    > ls()
    [1] "a" "b"
    > rm(list=ls(all=TRUE))  # 移除所有
    > ls()
    character(0)
    > load("a.RData")
    > ls()
    [1] "a"
    
    展开全文
  • 本地管理表空间(LMT)与自动段空间管理(ASSM)概念 创建表空间时,extent management local 定义本地管理表空间(LMT),segment space management auto 定义自动段空间管理(ASSM)。 extent management ...

    本地管理表空间(LMT)与自动段空间管理(ASSM)概念

    创建表空间时,extent management local 定义本地管理表空间(LMT),segment space management auto 定义自动段空间管理(ASSM)。

    extent management local(本地管理表空间)是在表空间的头部用位图区记录extent(区)的使用情况(是否为free)。与之相对的是字典管理表空间,用数据字典记录extent使用信息。

    segment space management auto(段空间自动管理)是在段的头部使用位图管理块(BMB)来记录Block的使用情况(是否为free)。与之相对的是使用freelists进行管理的方式。

    以上两个概念有些类似,感觉上只是管理的对象不同,本地管理表空间作用于表空间中的区,自动段空间管理作用于段中的数据块。因此在理解过程中容易混淆,现总结如上。

     

     

     

    本地管理表空间_字典管理表空间_ASSM特点

    上一篇 /下一篇  2012-02-25 13:02:30 / 个人分类:表空间

    字典管理表空间-DMT     本地管理表空间-LMT

    字典管理表空间(Dictionary-Managed Tablespace简称DMT)8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间使用

    Oracle使用两个字典来记录Extents的使用情况:SYS.FET$记录空闲的ExtentsSYS.UET$记录使用的Extents。在分配和释放分区时,都要修改者两个字典。属于DML操作,存在竞争,每个动作都是一个事务,会产生UNDO记录。需要周期性进行合并操作。效率低下

    本地管理表空间(Locally Managed Tablespace简称LMT)8i以后出现的一种新的表空间的管理模式,通过位图来管理表空间的空间使用

    通过数据头文件中的一个位图来记录文件中表空间的使用情况,每个BIT代表数据区,通过改变bit值来表示Extents的分配使用或释放,不属于DML操作,也不会产生UNDO记录,可以自动跟踪连续的空闲空间。带来的优势:不需要使用字典SYS.FET$SYS.UET$上的递归SQL调用;减少数据字典的竞争;不会产生UNDO记录;不再需要周期性合并操作。

    例:创建了一个本地管理的表空间,区间统一大小分配为64K
    SQL> create tablespace leonarding  
        datafile '/ora01/oem/ leonarding 01.dbf' size 100m  
       
    extent management localuniform. size 64k; 

    本地管理tablespace(LMT)——LMT是通过把EXTENT MANAGEMENT LOCAL子句添加到tablespace的定义句法而实现的。和原来由字典管理的tablespace(DMT)不同,LMT会将扩展管理自动化,并保持Oracle DBA不会被用来指定管理扩展大小的NEXT存储参数。这个原则唯一的例外是在NEXT和MINEXTENTS一起用在表格创建的时候。
      自动段空间管理(ASSM)——ASSM的tablespace是通过将SEGMENT SPACE MANAGEMENT AUTO子句添加到tablespace的定义句法里而实现的。通过使用位图freelist取代传统单向的链接列表freelist,ASSM的tablespace会将freelist的管理自动化,并取消为独立的表格和索引指定PCTUSED、FREELISTS和FREELIST GROUPS存储参数的能力。

    自动段空间管理(ASSM)

    920以前,表的剩余空间的管理与分配都是由连接列表freelist来完成的,因为freelist存在串行的问题,因此容易引起段头的争用与空间的浪费(其实这一点并不明显),最主要的还是因为需要DBA花费大量的精力去管理这些争用并监控表的空间利用。

    自动段空间管理(ASSM),它首次出现在Oracle920里。有了ASSM,连接列表freelist被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质,ASSM表空间上创建的段还有另外一个称呼叫Bitmap Managed SegmentsBMB段)

    Create tablespaceleonarding
    datafile '/ora01/oem/
    leonarding01.dbf '
    size 10m
    EXTENT MANAGEMENT LOCAL-- Turn on LMT
    SEGMENT SPACE MANAGEMENT AUTO-- Turn on ASSM;

    一旦你定义好了tablespace,那么表和索引就能够使用各种方法很容易地被移动到新的tablespace里,带有ASSM的本地管理tablespace会略掉任何为PCTUSEDNEXTFREELISTS所指定的值

    当表格或者索引被分配到这个tablespace以后,用于独立对象的PCTUSED的值会被忽略,而Oracle9i会使用位图数组来自动地管理tablespace里表格和索引的freelist。对于在LMTtablespace内部创建的表格和索引而言,这个NEXT扩展子句是过时的,因为由本地管理的tablespace会管理它们。但是,INITIAL参数仍然是需要的,因为Oracle不可能提前知道初始表格加载的大小。对于ASSM而言,INITIAL最小的值是三个块。

    新的管理机制用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%<25%,也就是说位图其实采用了四个状态位来代替以前的pctused,什么时候该利用该数据块则由设定的pctfree来确定。

    使用ASSM的一个巨大优势是,位图freelist肯定能够减轻缓冲区忙等待(buffer busy wait)的负担,这个问题在Oracle9i以前的版本里曾是一个严重的问题。

    缓冲区不再忙等待
      在没有多个freelist的时候,每个Oracle表格和索引在表格的头部都曾有一个数据块,用来管理对象所使用的剩余区块,并为任何SQL插入声明所创建的新数据行提供数据块。当数据缓冲内的数据块由于被另一个DML事务处理锁定而无法使用的时候,缓冲区忙等待就会发生。当你需要将多个任务插入到同一个表格里的时候,这些任务就被强制等待,而同时Oracle会在同时分派剩余的区块,一次一个。
      有了ASSM之后,Oracle宣称显著地提高了DML并发操作的性能,因为(同一个)位图的不同部分可以被同时使用,这样就消除了寻找剩余空间的串行化。根据Oracle的测试结果,使用位图freelist会消除所有分段头部(对资源)的争夺,还能获得超快的并发插入操作
       ASSM 的局限性
      尽管 ASSM 显示出了令人激动的特性并能够简化 Oracle DBA 的工作,但是 Oracle9i 的位图分段管理还是有一些局限性的:
      
       1. 一旦 DBA 被分配之后,它就无法控制 tablespace 内部的独立表格和索引的存储行为。
       2. 大型对象不能够使用 ASSM ,而且必须为包含有 LOB 数据类型的表格创建分离的 tablespace
       3. 你不能够使用 ASSM 创建临时的 tablespace 。这是由排序时临时分段的短暂特性所决定的。
       4. 只有本地管理的 tablespace 才能够使用位图分段管理。
       5. 使用超高容量的 DML (例如 INSERT UPDATE DELETE 等)的时候可能会出现性能上的问题。
     

    Oracle的表空间的存储管理与优化技术

    想要保存喜欢过的文章吗?立即关联或创建无觅帐号

    不再提示!

    6
    正在加载推荐文章

    (本文为《Oracle数据库性能优化》一书第六章,作者Piner,陈吉平)
    全书内容参考:
    http://www.eygle.com/archives/2011/11/oracle_performance_tuning_release.html

    概述

    1、 描述数据库的逻辑存储结构----表空间(TABLESPACE

    2、 描述字典管理表空间(DMT)的特性以及相应缺点

    3、 描述字典管理表空间的优化方法

    4、 描述本地管理表空间(LMT)的特性以及相应优点

    5、 描述9i新的表空间类型以及相应优化

    6、 描述段自动管理表空间的特点

    7、 描述10g新的表空间的特点及相应优化

    一、表空间的作用与分类

    表空间是数据库中最大的逻辑存储结构,为数据库提供使用空间,其对应物理结构是数据文件,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。表空间所包含的数据文件的大小,也就决定了表空间的大小,所以,表空间也是逻辑结构连接到物理结构的一个纽带。


    既然表空间为数据库提供使用空间,它就必须有自己的空间管理办法,在表空间中增加,删除段的时候,数据库就必须跟踪这些段空间的使用。

    如下例所示,假定一个新创建的表空间包含了五个表

    表一......表二......表三......表四......表五......未用空间

    当我们删除表四的时候,就有如下结果

    表一......表二......表三......空闲空间段......表五......未用空间

    很明显,ORACLE需要有一个机制来管理表空间中各数据文件的这些分配的或未分配的空间,为了跟踪这些可以使用的空间(包括未分配使用的和可以重复使用的),对于每一个空间,我们必须知道:

    1、这个可用空间位于什么数据文件

    2、这个空间的尺寸是多大

    3、如果它在用了,是哪一个段占用的这个空间

    在空间的管理方式上,ORACLE推出了三种主要的空间管理方式,

    一种是8i以前的字典管理方式(DMT),把可用空间和未用空间在数据字典中管理,ORACLE通过一个迭归SQL语句该字典表中请求空间。

    另外一种就是8i以后的本地管理模式(LMT),本地管理模式完全放弃以前的管理方法,通过在数据文件的头部建立位图区域来管理空间的分配,在一定程度上避免了并发上的冲突;而且本地管理表空间通过存储上统一的空间管理并取消了为独立的段的NEXT存储参数,也解决了表空间一直以来头疼的碎片问题。

    还有一种自动区段空间管理(ASSM)是9iR2推出的一种表空间级别的段空间管理模式,ASSM表空间是通过将SEGMENT SPACE MANAGEMENT AUTO子句添加到本地管理表空间的定义句法里而实现的。通过使用位图数组取代传统单向的链接列表(FREELIST),ASSM表空间会将链接列表的管理自动化,并取消为独立的段指定PCTUSEDFREELISTSFREELIST GROUPS存储参数。

    注意:ASSM表空间一定就是LMT表空间

    二、字典管理表空间

    2.1 字典管理表空间的特性

    8i以前(不包括8i),只存在一种表空间的管理模式,这就是字典管理表空间。

     主要语法:CREATE TABLESPACE表空间名字

             DATAFILE '数据文件详细信息' [SIZE INTETER [K|M]

    |[DEFAULT STORAGE]|[PERMANENT|TEMPORARY]]

    关键字DEFAULT STORAGE指明了该表空间的默认存储格式,包含了INITIALNEXTPCTINCREASE等相关参数的设置,如果创建在该表空间中的对象,不指明存储参数的话,将采用表空间的默认存储参数;PERMANENT|TEMPORARY指明了该表空间的类型是永久的还是临时的。

    为了确保能保存以上空间分配的信息,ORACLE用了两个数据字典表:UET$(已使用的空间)和FET$(空闲空间)来保存表空间的空间使用与释放的信息,在涉及到空间分配的时候,ORACLE使用一个迭归SQL语句到该字典表中请求空间。

    2.2 字典管理表空间的缺点

    字典表空间由于本身的设计上的问题,存在如下缺陷

    2.2.1 并发等待

    查询UET$FET$我们可以看到,每个已使用空间段或空闲空间段(不一定是一个extent,可以是多个extent)都在该表中对应了一行,如:

    SQL> select * from UET$;

    SEGFILE#  SEGBLOCK#  EXT#  TS#  FILE#  BLOCK#   LENGTH

    ---------- ----------  ---------      ------     ----------  ----------   ----------

    1        127       0          0          1     127         2

    1        109        0          0          1    109          4

    1        119        0          0          1    119          2

    1         42        0          0          1     42          2

    1        133        0          0          1    133         10

    1         51        0          0          1     51          2

    1         69        0          0          1     69         10

    ......

     

    SQL> select * from  FET$;

           TS#      FILE#     BLOCK#     LENGTH

    ---------- ---------- ---------- ----------

             1          2       1090         64

             1          2       2626        128

             2          3          2         99

             3          4         82          8

             3          4         74          8

    ......

    它的工作方式是当建立一个新的段或者段在表空间中请求新的空间时,ORACLE通过一个迭归SQL语句来完成这个工作,移动或增加相应的行到UET$中,并改变相应FET$;当删除一个段的时候,ORACLE则移动UET$中相应的行到FET$。这个过程的发生是连续的、串行的,极可能发生等待。当并发性很高的时候,将产生数据字典的争用。

    而且数据字典的表的信息发生改变,从而同时也使用了在系统表空间里的回滚段,引起空间争用,因为每一个字典改变的操作都需要记入系统回滚段,而且当一个段有几万或者几十万个区间的时候(对应字典表的几十万条记录),不用说管理该字典表的负担增加,就是对该段的drop操作都会变得异常国难,甚至导致系统回滚段空间不够而失败。

    2.2.2 空间碎片

    当段的空间很不连续或表空间有大量的碎片就会引起数据库性能上的下降。因为字典管理表空间没有任何措施可以保证段的所有区间是相邻存储的。当要满足一个空间要求时,数据库不再合并相邻的自由范围(除非别无选择),而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间,即碎片。随着时间推移,基于数据库的应用系统的广泛使用,产生的碎片会越来越多,将对数据库有以下两点主要影响:

    ·导致系统性能减弱,如上所述,当要满足一个空间要求时,数据库将首先查找当前最大的自由范围,而"最大"自由范围逐渐变小,要找到一个足够大的自由范围已变得越来越困难,从而导致表空间中的速度障碍,使数据库的空间分配愈发远离理想状态。

    ·浪费大量的表空间,尽管有一部分自由范围(如表空间的PCTINCREASE为非0)将会被SMON(系统监控)后台进程周期性地合并,但始终有一部分自由范围无法得以自动合并,浪费了大量的表空间。而非0 PCTINCREASE更容易导致更多的碎片。

    2.3 字典管理表空间的优化

    从以上一系列操作中,我们可以看到,UET$记录了任何使用的段的区间,如果区间数太多,将给表UET$的操作带来一定压力,所以在字典管理的表空间中,一般要求区间数少一点比较好,除非有特殊要求,一般建议在20个区间以下。还有一点就是如果发生连续的空间请求,将导致ORACLE在两个字典表之间的操作等待,对于并发性很高的数据库来说,这是一个高昂的操作,所以,我们可以采用预分配空间的方式,并不但的监控段的空间使用情况(大小,区间数),这样就可以在很大程度上解决并发处理带来的额外的代价。

    在另外一个方面,我们可以指定在字典管理表空间中的所有段都具有PCTINCREASE=0的特性,保证每个区间的大小相等,然后可以设定每个区间的大小等于某一个特定数的整数倍,如= n*db_block_size* db_file_multiblock_read_count,这样可以在很大程度上防止表空间的碎片化。

    三、本地管理表空间

    3.1本地管理表空间的特性

    Oracle8I的版本中,Oracle推出了一种全新的表空间管理方式:本地化管理的表空间。所谓本地化管理,就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化。

    本地化管理的表空间的创建过程:

     主要语法:CREATE TABLESPACE表空间名字

              DATAFILE '数据文件详细信息'

              [EXTENT MANAGEMENT { LOCAL

              {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ]

    关键字EXTENT MANAGEMENT LOCAL指定这是一个本地化管理的表空间。对于系统表空间,只能在创建数据库的时候指定EXTENT MANGEMENT LOCAL,因为它是数据库创建时建立的第一个表空间。

    8i中,字典管理还是默认的管理方式,当选择了LOCAL关键字,即表明这是一个本地管理的表空间。当然还可以继续选择更细的管理方式:是自动分配(AUTOALLOCATE还是 统一尺寸(UNIFORM.。若为自动分配,则表明让Oracle来决定区块的使用办法;若选择了统一尺寸,则还可以详细指定每个区间(Extent)的大小,若不加指定,则默认每个区使用1M大小。

    在表空间的空间管理上,ORACLE将存储信息保存在表空间的头部的位图中,而不是保存在数据字典中。通过这样的方式,在分配或者回收空间的时候,表空间就可以独立的在数据文件头部完成操作而不用与其它对象打交道。

    也因为仅仅操作数据文件头部几个块,不用操作数据字典,所以ORACLE在本地管理的表空间中添加,删除段的时候,效率要比字典管理的表空间快。特别是在并发性很强的空间请求中。

    对于在本地管理的表空间内部创建的对象而言,NEXT扩展子句是过时的,因为由本地管理的表空间会自动管理它们。但是,INITIAL参数仍然是需要的,因为Oracle不可能提前知道初始段加载的大小。

    在本地管理的表空间中,如果数据库块尺寸(db_block_size 16k16k以下,数据文件头是 64k保留空间,若是32k的块尺寸,则保留 128k,以默认的8k的块大小而言,就是8个块用在数据文件头部用于系统消耗,其中的3~8用于记录区间的位图信息。

    3.2 管理位图块的内部结构

    3.2.1 统一尺寸的本地管理表空间

    如果我们dump统一尺寸方式的本地管理表空间包含的数据文件的第三个块,就可以得到类似如下的信息

    Start dump data blocks tsn: 5 file#: 5 minblk 3 maxblk 3 

     buffer tsn: 5 rdba: 0x01400003 (5/3) 

     scn: 0x0000.202f7c64 seq: 0x01 flg: 0x00 tail: 0x7c641e01 

     frmt: 0x02 chkval: 0x0000 type: 0x1e=KTFB Bitmapped File Space Bitmap 

     File Space Bitmap Block: 

     BitMap Control: 

     RelFno: 5, BeginBlock: 9, Flag: 0, First: 19, Free: 63469 

     FFFF070000000000 0000000000000000 0000000000000000 0000000000000000 

    ......

    注意其中的FFFF07转换为二进制为 1111,1111,1111,1111,0000,0111,注意字节交换,得到1111,1111,1111,1111,1110,0000

    可以看到,该表空间用19个位(bit)来代表共分配的19个区间

    3.2.2 自动分配的本地管理表空间

    在自动分配的本地管理的表空间中,区间尺寸可能由以下尺寸组成64k, 1m, 8m, 64m甚至是256m。但是不管多大,都有一个通用尺寸64k,所以64K就是该表空间的一个位标记的大小。如我们同样的dump文件头的第三个块。

    Start dump data blocks tsn: 19 file#: 12 minblk 3 maxblk 3

    buffer tsn: 19 rdba: 0x03000003 (12/3)

    scn: 0x0000.00f2959b seq: 0x01 flg: 0x00 tail: 0x959b1e01

    frmt: 0x02 chkval: 0x0000 type: 0x1e=KTFB Bitmapped File Space Bitmap

    File Space Bitmap Block:

    BitMap Control:

    RelFno: 12, BeginBlock: 9, Flag: 0, First: 800, Free: 62688

    FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF

    FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF

    FFFFFFFF00000000 0000000000000000 0000000000000000 0000000000000000

    0000000000000000 0000000000000000 0000000000000000 0000000000000000

    ......

    可以看到这里工分配了800个位(bit),但是自动分配模式下的位大小并不一定等于extent大小,所以不一定是对应800个区间,如它可能对应的是501M大小的区间,如50*1024=800*64

    3.3 本地管理表空间的优点

    Oracle之所以推出了这种新的表空间管理方法,让我们来看一下这种表空间组织方法的优点:

      1. 本地化管理的表空间用数据文件的头部记录来管理空闲块,避免了递归的空间管理操作,避免了利用系统回滚段因此带来的性能与空间问题。

      2. 本地化管理的表空间避免了在数据字典相应表里面写入空闲空间、已使用空间的信息,从而减少了数据字典表的竞争,提高了空间管理的并发性。

      3. 区的本地化管理自动跟踪表空间里的空闲块,减少了手工合并自由空间的需要。

      4. 表空间里的区的大小可以选择由Oracle系统来决定,或者由数据库管理员指定一个统一的大小,避免了字典表空间一直头疼的碎片问题。 

    四、段自动管理表空间

    4.1 段自动管理表空间的特性

    920以前,表的剩余空间的管理与分配都是由链接列表(FREELIST)来完成的,因为链接列表存在串行的问题因此往往容易引起段头的争用与空间的浪费,而且还需要DBA 花费大量的精力去管理这些争用并监控表的空间利用。

    自动段空间管理(ASSM),它首次出现在Oracle920里。有了ASSM,链接列表被位图数组所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质。

    让我们看看位图数组是如何实现链接列表的功能的。我会从使用区段空间管理自动参数创建表空间开始:

    CREATE TABLESPACE demo

        DATAFILE '/u01/oracle/demo01.dbf '

        SIZE 5M

        EXTENT MANAGEMENT LOCAL  -- Turn on LMT

    SEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;

    带有ASSM的本地管理表空间会略掉任何为PCTUSEDNEXTFREELISTS所指定的值。Oracle9i会使用位图数组来自动地管理表空间里对象空间使用。

    新的管理机制用位图数组来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%<25%,也就是说位图其实采用了四个状态位来代替以前的PCTUSED,什么时候该利用该数据块则由设定的PCTFREE来确定。

    使用ASSM的一个巨大优势是,位图数组肯定能够减轻缓冲区忙等待(buffer busy wait)的负担,这个问题在Oracle9i以前的版本里曾是一个严重的问题,因为在没有多个位图数组的时候,每个Oracle段在段的头部都曾有一个数据块用于链接列表,用来管理对象所使用的剩余区块,并为任何SQL申请的新数据行提供数据块。当数据缓冲内的数据块由于被另一个DML事务处理锁定而无法使用的时候,缓冲区忙等待就会发生。当你需要将多个任务插入到同一个表格里的时候,这些任务就被强制等待,而同时Oracle会在同时分派剩余的区块,一次一个。

    有了ASSM之后,Oracle宣称显著地提高了DML并发操作的性能,因为位图数组的不同部分可以被同时使用,这样就消除了寻找剩余空间的串行化。根据Oracle的测试结果,使用位图数组会消除所有分段头部(对资源)的争夺,还能获得超快的并发插入操作。

    4.2位图管理段内部结构

    如果我们dump ASSM表空间的第10个块,我们可以发现如下信息

    Start dump data blocks tsn: 6 file#: 7 minblk 10 maxblk 10

    buffer tsn: 6 rdba: 0x0680000a (7/10)

    scn: 0x0000.00181a39 seq: 0x01 flg: 0x04 tail: 0x1a392101

    frmt: 0x02 chkval: 0x2738 type: 0x21=SECOND LEVEL BITMAP BLOCK

    Dump of Second Level Bitmap Block

       number: 8      nfree: 8       ffree: 0      pdba:    0x0680000b

      opcode:0

     xid:

      L1 Ranges :

      --------------------------------------------------------

       0x06800009 Free: 5 Inst: 1

       0x06800019  Free: 5 Inst: 1

       0x06800029  Free: 5 Inst: 1

       0x06800039  Free: 5 Inst: 1

       0x06800049  Free: 5 Inst: 1

       0x06800059  Free: 5 Inst: 1

    ......

    可以看到,块10是一个二级管理位图块,负责记录一级位图块的地址,其中的9,19,29等就是记录自由空间的一级位图块的地址,从这里可以看到,每个一级位图块管理16个(十六进制10个)块的存储信息。如果在并发的处理中,每个一级位图块可以单独的管理或者是分配空间,而不是再由以前的一个链接列表块来进行空间的管理,在实际的情况中,每个一级位图块也不一定是管理16个块的空间信息,也有可能是32个或者更多。

    位图数据的级别可以分为三个级别,当存在一个或多个一级位图块(如块919)的时候,将由二级位图(如块10)块来保存一级位图块的地址,同理,一个二级位图块不够使用而出现多个二级位图块的时候,将由三级位图块来保存二级位图块的地址(由于三级位图块的出现需要很多数据块,所以这里不讨论三级位图块)。整个位图数组的结构形成一个树状结构,有利于ORACLE跟踪所有的位图数据块的位置。

    如果我们dump其中的一个一级位图块,如块39,对应的是十进制的57

    Start dump data blocks tsn: 6 file#: 7 minblk 57 maxblk 57

    buffer tsn: 6 rdba: 0x06800039 (7/57)

    scn: 0x0000.0018b7cb seq: 0x04 flg: 0x04 tail: 0xb7cb2004

    frmt: 0x02 chkval: 0x27d2 type: 0x20=FIRST LEVEL BITMAP BLOCK

    Dump of First Level Bitmap Block

     --------------------------------

       nbits : 4 nranges: 2        parent dba:  0x0680000a  poffset: 3    

       unformatted: 8      total: 16        first useful block: 1     

       owning instance : 1

       instance ownership changed at 08/19/2003 10:41:42

       Last successful Search 08/19/2003 10:41:42

       Freeness Status: nf1 1      nf2 0      nf3 0     nf4 6     

     

       Extent Map Block Offset: 4294967295

       First free datablock : 1     

       Bitmap block lock opcode 0

       Locker xid:    :  0x0000.000.00000000

          Highwater:: 0x06800041  ext#: 6      blk#: 8     ext size: 8    

      #blocks in seg. hdr's freelists: 0    

      #blocks below: 50   

      mapblk 0x00000000  offset: 6    

      HWM Flag: HWM Set

      --------------------------------------------------------

      DBA Ranges :

      --------------------------------------------------------

       0x06800039 Length: 8      Offset: 0     

       0x06800041 Length: 8      Offset: 8     

     

       0:Metadata  1:FULL   2:FULL   3:75-100% free

       4:75-100% free  5:75-100% free   6:75-100% free   7:0-25% free

       8:unformatted  9:unformatted   10:unformatted   11:unformatted

       12:unformatted  13:unformatted   14:unformatted   15:unformatted

      --------------------------------------------------------

    End dump data blocks tsn: 6 file#: 7 minblk 57 maxblk 57

     

    我们可以看到,在位图块57管理的16个数据块中

    1个位图+2FULL+475-100% free+10-25% free+8个未使用的共16个块,如果在下次的插入或者更新中,位图块57将负责这16个数据块的空间的分配与使用以及相应的状态记载,可以想象,如果是除了这16个块之外的块的空间的管理,将由类似块57的块来完成,多个位图块并行管理将明显的增加并发的处理能力。

    4.3、段自动管理表空间的优化

    尽管ASSM显示出了令人激动的特性并能够简化Oracle DBA的工作,但是Oracle9iR2的位图分段管理还是有一些局限性的:

    · 一旦DBA被分配之后,它就无法控制表空间内部的独立表格和索引的存储行为。

    · 大型对象不能够使用ASSM,而且必须为包含有LOB数据类型的表格创建分离的表空间。

    · 你不能够使用ASSM创建临时的表空间。这是由排序时临时分段的短暂特性所决定的。

    · 只有本地管理的表空间才能够使用位图分段管理。

    · 使用超高容量的DML(例如INSERTUPDATEDELETE等)的时候可能会出现性能上的问题。

    正因为ASSM还不是太稳定与完善,所以至少在9iR2的版本上,还不建议生产系统中大规模使用ASSM的表空间。

    五、9i对表空间的管理优化

    5.1自动undo管理的表空间

    9i以前,回滚段全是手工管理与监控的,DBA需要花费一定的时间去管理与监控回滚段的性能,创建不好或管理不好的回滚段,将引起很大的性能瓶颈。从ORACLE9i,为了更好的管理回滚段,ORACLE,默认采用自动回滚段管理。

    自动回滚段管理可以最大限度的避免8i中比较有名的ORA-01555"快照太老"的错误,ORACLE9i通过如下四个初试化参数来设置自动回滚段管理:

    undo_management                   string      AUTO

    undo_retention                      integer     10800

    undo_suppress_errors                boolean     FALSE

    undo_tablespace                     string      UNDOTBS1

    undo_management表明了回滚段管理采用自动方式,ORACLE建议采用自动方式,如果不是对数据库非常了解,不要修改该参数。

    undo_retention表明了回滚信息在回滚段中保持的时间,单位是秒,默认3个小时,如果数据库的事务量特别大,可以适当的减少该参数值,避免回滚表空间的膨胀,但是过小的值也将导致ORA-01555错误的重现以及FLASHBACK QUERY功能的局限。

    undo_suppress_errors表明不显示某些错误信息,如对系统回滚段的操作将不显示错误,虽然这个操作没有成功。

    undo_tablespace表明了使用自动回滚的表空间,DBA需要监控该表空间的大小。

    自动回滚段的另外一个好处就是可以利用FLASHBACK QUERY来查看提交以前的数据或导出当前时间点以前的数据,防止一定程度上的人为错误。

     

    5.2 完全本地的临时表空间

    通过9i默认的本地管理的临时文件,总是处于nologging模式,控制文件也不记录临时文件的位置,由于不记载redo信息,所以9i的临时数据文件不需要进行备份与恢复,如果发生意外,只需要重新创建一个即可。

        另外,由于9i默认临时表空间的出现,减少了9i以前因为默认临时表空间是系统表空间而导致的表空间碎片问题。

    六、10g对表空间的优化

    SYSAUX表空间在Oracle Database 10g中被引入,作为SYSTEM表空间的辅助表空间,这是一个管理及规划上的改进,进一步独立SYSTEM表空间,保证其存储及性能。以前版本使用独立表空间或系统表空间的数据库组件现在SYSAUX表空间中创建。通过分离这些组件和功能,SYSTEM表空间的负荷得以减轻。反复创建一些相关对象及组件引起SYSTEM表空间的碎片问题得以避免。而且,由于大量的独立表空间中的对象都被移往了SYSAUX表空间,使得10g的表空间数目变的很少,对于空间管理,备份与优化都是一个不错的福音。

    而且如果SYSAUX表空间的不可用,数据库核心功能将保持有效,所以使用SYSAUX表空间的特点将会失败或功能受限,使数据库变的更稳定可靠。

    小结

    了解字典管理表空间的工作原理,尽量减少空间分配的串行化与表空间的碎片化。

    了解本地管理表空间的工作原理,尽量使用空间管理的本地化来减少字典管理表空间带来的问题。

    了解段自动管理表空间的工作原理,理解链接列表的工作原理,理解ASSM对于大量并发处理的好处以及相关缺点

    了解9i新型自动重作表空间的好处以及完全本地管理的临时表空间的优点

    了解10g新型SYSAUX表空间出现的原因以及相应管理上的优化

    附录

    表空间的空间监控

    表空间的空间使用其实是一个需要特别注意的问题,因为数据文件不可扩展而导致表空间的空间不够,可能导致无法写入任何新的数据,而甚至导致数据库的停止。以下的语句可以监控表空间的空间利用情况,如果使用了9i的完全临时表空间,则加入后半部分用于检测临时表空间。

    SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",
    ROUND((
    1-NVL(FREE_SPACE,0)/SPACE)*100,2) "USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)"
    FROM
    (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(
    1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
    FROM DBA_DATA_FILES
    GROUP BY TABLESPACE_NAME) D,
    (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(
    1024*1024),2) FREE_SPACE
    FROM DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME) F
    WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
    --如果采用了完全本地管理的临时表空间,就加入如下部分
    UNION ALL 
    --if have tempfile
    SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,
    USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,
    0)/SPACE*100,2) "USED_RATE(%)",
    NVL(FREE_SPACE,
    0) "FREE_SPACE(M)"
    FROM
    (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(
    1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
    FROM DBA_TEMP_FILES
    GROUP BY TABLESPACE_NAME) D,
    (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(
    1024*1024),2) USED_SPACE,
    ROUND(SUM(BYTES_FREE)/(
    1024*1024),2) FREE_SPACE
    FROM V$TEMP_SPACE_HEADER
    GROUP BY TABLESPACE_NAME) F
    WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

     

    段的空间利用监控

    段的空间与区间的利用,在字典管理的表空间有尤为重要,如果一个对象的区间数太多,不但大大加重了字典表的管理负担与系统回滚段的压力,也严重影响对该段(如表或索引)的性能。该查询也可以看到现在利用的区间与最大区间数的差异,如果该差值已经很小,就需要注意新的空间的分配,避免因为不能分配新的区间而导致新数据的写入错误。

    SELECT S.OWNER,S.SEGMENT_NAME,S.SEGMENT_TYPE,S.PARTITION_NAME,
    ROUND(BYTES/(
    1024*1024),2) "USED_SPACE(M)",
    EXTENTS USED_EXTENTS,S.MAX_EXTENTS,S.BLOCKS ALLOCATED_BLOCKS,
    S.BLOCKS USED_BOLCKS,S.PCT_INCREASE,S.INITIAL_EXTENT,
    S.NEXT_EXTENT/
    1024 "NEXT_EXTENT(K)",S.TABLESPACE_NAME
    FROM DBA_SEGMENTS S
    WHERE S.OWNER = USER
    ORDER BY
    Used_Extents DESC

     

    本文作者陈吉平,ItpubIDpiner,现任职于淘宝网(www.taobao.com),主要负责网站后台数据库维护,擅长备份与恢复,数据库高可用性与系统容灾,对数据库优化也有很深的研究。

    希望能广交oracle朋友,共同进步。


    历史上的今天...
          >> 2012-12-13文章:
          >> 2008-12-13文章:
          >> 2007-12-13文章:
                  为什么Rac的心跳线不支持交叉线?
          >> 2006-12-13文章:
                  "软件"、硬件都需要健康检查
          >> 2005-12-13文章:
                  Oracle10g Materialized View enhanced
                  赏画:展子虔之游春图
                  The Network is The Computer

     
     
     
     

    表空间的两种空间管理模式

     

    区(extent)是空间分配的最小单位,表空间以区为单位进行空间分配。Oracle数据库使用两种模式管理表空间中的使用空间和剩余空间。

     

    本地管理表空间

     

    本地管理表空间,表空间的区块通过位图来管理,每个位图对应一个或者一组数据块。当区块被分配或者被回收,Oracle改变相应的位图值以反映其所代表的数据块的最新状态。因为位图块位于表空间自己的数据文件上,因此采用这种管理模式的表空间被称为本地管理表空间。

     

    数据字典管理表空间

     

    数据字典管理表空间,表空间的区块通过数据字典进行管理。当区块被分配或者被回收时,Oracle更新数据字典表UET$和FET$,当一个区块被分配时,ORACLE在UET$中增加相应的条目,同时从FET$中减去被分配的区块,反之,当一个区块被回收的时候,ORACLE移动UET$中相应的行到FET$。

    相比于数据字典管理表空间,本地管理表空间具有很多的优点:

    1.       减少递归空间管理

    本地管理表空间通过在表空间数据文件中维护一个位图来跟踪区块的使用及剩余空间情况,其维护过程只是更新位图而不对其他数据字典做任何update操作,减少了递归空间管理,大大提升了管理效率。

    2.       减少数据字典之间的竞争

    数据字典表空间,由于所有的分配和回收操作都要更新FET$和UET$表,在大型的并发度很高的系统中,会因为频繁的更新导致这两个数据字典表成为热点,对数据库性能造成严重的负面影响。

    3.       减少空间碎片

    随着空间的持续分配和回收,数据字典表FET$中的条目将会变得非常的零散,SMON其中的一个任务就是对这些条目进行合并,将多个碎片整理成一个连续的空间。本地管理表空间的区块会自动跟踪相邻的剩余空间并由系统自动管理,同时,本地管理表空间所有的区块还可以具有相同的大小,有效的减少了空间碎片的产生。

    自Oracle 10g以后默认采用本地管理的方式创建表空间,ORACLE已经不再推荐使用数据字典管理表空间,该方式只是作为一种兼容模式存在。对于某些从老版本升级的数据库,DBMS_SPACE_ADMIN包中的TABLESPACE_MIGRATE_TO_LOCAL过程能够将表空间从数据字典管理转换为本地管理方式。

     

    ASSM

     

    在数据字典管理表空间中,表剩余空间的管理和分配都是由连接链表freelist来完成的,因为freelist存在串行的问题,容易引起段头的争用,管理员需要花费大量的精力去管理这些争用并监控表的空间利用。

    自动段空间管理(ASSM),基于本地管理表空间技术,同样采用位图来管理和分配段中剩余空间,取代之前的连接链表freelist的方式。位图是一个二进制的数组,能够快速有效的管理存储扩展和剩余区块,很好的解决freelist管理方式在并发度较高的系统中的段头争用问题。采用ASSM方式创建的段,位图通常会在段头,随着段空间的不断扩展位图还会在段中相应的位置出现,这些位图也称为Bitmap Managed Segments(BMB 段)。

    采用ASSM管理的段,不再使用PCTUSED、NEXT和FREELIST等参数值。每个块的空间被划分为>75%,50%-75%,25%-50%和<25%四个状态,取代采用PCTUSED方式管理剩余段空间。

     
     
     
    (谷歌搜索 表空间采用ASSM的管理方式)

    展开全文
  • Oracle 11g 表空间管理

    千次阅读 2020-09-09 23:13:49
    文章目录1 简介2 创建表空间2.1 创建TS1表空间2.2 创建TS4表空间...在进行表空间管理之前,必须先了解Database(数据库)、Tablespace(表空间)、Table(表)的关系。 一个Oracle 11g 数据库系统可以建立多个数据库(推荐

    1 简介

    在进行表空间的管理之前,必须先了解Database(数据库)、Tablespace(表空间)、Table(表)的关系。
    在这里插入图片描述
    一个Oracle 11g 数据库系统可以建立多个数据库(推荐一个数据库),一个数据库可以建立多个表空间,一个表空间可以建立多个表,可由上图清楚的看出它们之间的关系。

    2 创建表空间

    2.1 创建TS1表空间

    以system连接orcl数据库
    在这里插入图片描述

    create tablespace ts1 datafile
    'D:\Oracle\oracle\app\Administrator\oradata\orcl\test_db01.dbf' size 100M
    autoextend on next 100M maxsize 1024M
    default storage (initial 10M next 1M)
    permanent
    online
    logging;
    

    2.2 创建TS4表空间,并在表空间中创建表

    第一步:创建TS4表空间
    在这里插入图片描述

    create tablespace ts4 datafile
    'D:\Oracle\oracle\app\Administrator\oradata\orcl\test_db04.dbf' size 100M
    autoextend on next 100M maxsize 1024M
    default storage (initial 10M next 1M)
    permanent
    online
    logging;
    

    第二步:在表空间创建表
    在这里插入图片描述

    create table customer(
    custId varchar2(10),
    custName varchar2(22),
    custAdd varchar2(20),
    custPhone varchar2(12),
    custFax varchar2(12)
    )
    tablespace ts4;
    

    如果在创建表时未指定表空间,那就表示设置了默认表空间(一般是在users中),否则就会出现错误。

    3 修改表空间

    3.1 修改表空间的记录属性

    在这里插入图片描述

    alter tablespace ts1
    nologging;
    

    3.2 把表空间改为离线状态

    在这里插入图片描述

    alter tablespace ts1
    offline;
    

    3.3 把表空间改为连线状态

    在这里插入图片描述

    alter tablespace ts1
    online;
    

    3.4 在表空间中添加数据文件

    在这里插入图片描述

    alter tablespace ts1 add datafile
    'D:\Oracle\oracle\app\Administrator\oradata\orcl\test_db02.dbf' size 100M reuse
    autoextend on next 100M maxsize unlimited;
    

    此时在上述文件夹下就会生成test_db02.dbf文件。
    在建立表空间时,若是约束了表空间的大小,那么一段时间后,这个表空间就会被装满,无法再添加其他对象。这时就需要给表空间添加文件(add datafile)

    4 删除表空间

    4.1 直接删除表空间(未删除数据文件)

    在这里插入图片描述

    drop tablespace ts1;
    

    4.2 删除表空间(同时删除数据文件)

    第一步:创建一个TS3表空间
    在这里插入图片描述

    create tablespace ts3 datafile
    'D:\Oracle\oracle\app\Administrator\oradata\orcl\test_db03.dbf' size 100M
    autoextend on next 100M maxsize 1024M
    default storage (initial 10M next 1M)
    permanent
    online
    logging;
    

    第二步:删除表空间,同时删除数据文件
    在这里插入图片描述

    drop tablespace ts3 including contents and datafiles;
    

    至此,表空间的基本管理已经介绍完毕。

    展开全文
  • SQL Server 空间管理——表空间

    千次阅读 2018-03-09 17:36:59
    SQL Server 中表使用空间查询 一、查询指定表空间使用情况 脚本1 use WideWorldImportersDW go sp_spaceused Workload 二、查询库下默认架构所有表空间使用情况 循环对每个表名使用sp_spaceused 即可获取,...
  • innodb在实现表空间(table space)基于文件IO之上构建的一层逻辑存储空间管理,table space采用逻辑分层的结构:space、segment inode、extent和page.在实现层的逻辑使用了磁盘链表这种结构来管理逻辑关系。我们先...
  • Oracle 自动段空间管理(ASSM)

    千次阅读 2011-11-26 23:29:07
    从oracle 9i开始,管理段空间有两种方法:手动段空间管理和自动段空间管理(Auto Segment Space Management,ASSM);  ASSM用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如...
  • Jenkins服务器磁盘空间管理策略

    千次阅读 2014-11-22 12:17:34
    Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁盘空间不足无法构建的...
  • 4、文件存储空间管理思维导图文件的初始化和划分文件存储空间管理方法1、存储空间管理——空闲表法2、存储空间管理——空闲链表法3、存储空间管理——位示图法4、存储空间管理——成组链接法 思维导图 文件的初始化...
  • oracle之归档日志空间管理

    千次阅读 2018-05-24 17:35:18
    1.查询各对象空间使用率大小select * from v$flash_recovery_area_usage;说明:有的文档对v$flash_recovery_area_usage 里面percent_space_used 解释为实际占用大小,很显然不对,只是百分比而已从上述可以看出,...
  • oracle 表空间管理

    千次阅读 2010-06-18 11:24:00
    空间是ORACLE数据库最高层次的逻辑存储结构,保存段、区、块,由一个或多个数据文件组成。 块的存储管理 ... 数据块的管理方法分为: 1、自动管理方式 如创建表空间时设置为本地管理方式
  • DB2表空间管理

    千次阅读 2007-09-29 11:49:00
    空间是数据库及存储在该数据库中的表之间的逻辑层。表空间在数据库中创建,表... DB2 的表空间管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS
  • SDE多表空间管理

    千次阅读 2011-03-29 22:37:00
    本文下面内容将以Oracle10g为例,详细介绍如何使用SDE管理多个表空间,如何将不同的数据存到相应的表空间下。  当使用SDE管理较大的数据量时,可先将数据类型、用途等进行分类,然后分别存储在不同的表...
  • db2表空间管理常用命令

    万次阅读 2015-11-07 23:38:32
    一、表空间信息查看 # 1. 查看所有的表空间 db2 list tablespaces db2 list tablespaces show detail # 2. 查看某个表空间的容器 db2 list tablespace containers for [ show detail ] 如: db2 list ...
  • 执行xpath时提示,需要命名空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数  2012-05-05 10:45:48| 分类: 默认分类 | 标签:要命名空间管理器 xsltcontext 此查询具有前缀  |举报 |...
  • SQL> alter tablespace test01 2 autoextend on 3 maxsize 25M; alter tablespace test01 ... 表空间建立之后,如果是小文件表空间,就不能再对表空间的autoextend大小等进行修改,其扩展性由表空
  • Windows/Linux内核地址空间管理的异同

    千次阅读 2013-11-16 13:12:59
     Windows统一且规则的虚拟地址空间管理直接影响到了其内存管理API接口,大家应该都知道Windows内存分配的保留,提交两阶段吧!  Linux采用了一种截然不同的方式对待页表以及其它的管理机构。我们将看到,地址空间...
  • 空间管理方式有以下两种:第一、字典管理表空间 将Oracle的区管理信息存放在表空间的字典中进行管理,所有区的分配与释放,都会使字典的记录的增减变动。也就是在字典的记录中会执行更新、插入、删除操作,在执行...
  • Oracle数据库的空间管理技巧

    千次阅读 2004-09-01 21:09:00
    空间的自由空间 通过对表空间的自由空间的观察,可用来判断分配给某个表空间空间是太多还是不够。请看下列的语句 SQL > select a.file_id "FileNo",a.tablespace_name "Tablespace_name", 2 a.byt
  • Oracle DB 管理空间

    千次阅读 2013-10-29 00:10:07
    • 介绍Oracle DB Server 如何自动管理空间 • 使用压缩节省空间 • 主动监视和管理表空间的空间使用量 • 介绍Oracle DB 中的段的创建 ...空间管理:概览 空间由Oracle DB Server 自动管理。Oracle DB S
  • 减少了递归空间管理 本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新...
  • 空间管理-字典和本地管理

    千次阅读 2012-08-30 16:38:53
    Oracle通过表空间为数据库提供使用空间,那么Oracle必然提供一种技术用于空间管理。 Oracle主要的空间管理方式有两种,一种是Oracle 8i以前的字典管理表空间(DMT)技术,一种就是Oracle 8i以后的本地管理表空间...
  • 在Oracle8I的版本中,Oracle推出了一种全新的表空间管理方式:本地化管理的表空间。  所谓本地化管理,就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部...
  • 达梦数据库管理之表空间

    万次阅读 2018-08-10 17:09:39
    2.DM7表空间管理 2.1表空间创建与删除 2.2表空间扩展 2.3表空间数据文件路径修改 3.DM7表空间监控 4.DM7表空间备份 5.DM7在线体验 5.结语 1.DM7表空间概述 &nbsp;&nbsp;&nbsp;&nbsp;&...
  • 操作系统中文件存储空间管理

    万次阅读 2015-03-24 21:30:04
    一、文件存储空间管理的概念 由于文件存储设备是分成若干个大小相等的物理块,并以块为单位来交换信息的,因此,文件存储空间的管理实质上是一个空闲块的组织和管理问题,它包括空闲块组织,空闲块的分配和空闲块...
  • 空间数据管理问题及解决方案

    千次阅读 2018-04-15 13:56:41
    为了提高DBMS对空间数据的管理能力,国内外先后出现过:文件与关系数据库混合管理系统、全关系型空间数据库管理系统、关系型 数据库+空间数据引擎、扩展对象关系型数据库管理系统,以及面向对象空间数据库管理系统...
  • ORACLE表空间、段、区的管理方式

    千次阅读 2013-12-16 17:20:50
    一、 ORACLE表空间管理  ORACLE表空间的管理方式分为:  1.1 字典管理方式:  1.2 本地管理方式 二、 ORACLE段管理  ORACLE段的管理分为:  2.1 手动段空间管理  2.2 自动段空间管理 三、 ORACLE区管理  ORACLE...
  • 查看数据库中表空间管理方式: SQL> select tablespace_name,extent_management, allocation_type from dba_tablespaces;   TABLESPACE_NAME EXTENT_MAN ALLOCATIO ------------------------...
  • Linux磁盘空闲空间调度管理

    千次阅读 2017-08-29 23:33:55
    操作系统的磁盘管理为了和内存管理配合,...1.数组表格和链表管理继承内存页帧的段页式管理思想,自然可以想到磁盘管理的空闲空间表法和空闲块链法。前者是指为所有空闲区建立一张空闲表,每个空闲项表示该空闲区的序号

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,393,264
精华内容 557,305
关键字:

空间管理