Home >Database >Mysql Tutorial >Oracle存储结构之数据文件和表空间

Oracle存储结构之数据文件和表空间

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:16:191299browse

一致性读:oracle对每次用户查询都要记录查询开始的SCN号,用于和数据块中的SCN号比较,如果数据块中的SCN号大于查询SCN,oracle


Oracle存储结构,可分物理结构和逻辑结构。后者是为方便管理前者而生。oracle把数据逻辑地存放在表空间里,物理地存放在数据文件里。
 
  有两个视图,我们可能会常用到:
  dba_data_files:描述数据文件的信息
  dba_tablespaces:描述表空间的信息

  这里先谈三个问题。

  表空间的类型?
  1)永久性表空间,,如:system,sysaux,user等
    sysaux用于存放非核心功能的数据,如OEM
    查看存放了哪些非核心功能的数据:
    select occupant_name,occupant_desc,schema_name
    from v$sysaux_occupants;
  2)临时表空间
    用于排序,创建索引
    oracle建议,为每个用户创建一个临时表空间;
    10g引入临时表空间组
  3)undo表空间
    虽有多个undo表空间,但任一时点,只有一个undo表空间被激活。

  不同类型的表空间会产生不同的写入方式和时机点
  永久性表空间
  DBWn写入有两种方式多个时机点
  方式一:
  LRU机制:
    LRU list:保存最近被存取的数据块;
    Dirty list:被修改但尚未写入数据文件的数据块;
  时机点:
  1)Dirty buffer达到阀值时
  2)没有free buffer时(server process在LRU list里找不到足够多的free buffer)
  3)每3秒,DBWn会去检查dirty list,如果dirty list未到域值,就去读LRU list,将dirty buffer移到dirty list;如果dirty list已满,则写入数据文件。
  方式二:
  检查点事件:
  时机点:
  1)log switch时,要求做检查点,即:把dirty buffer flush到数据文件。也即:DBWn将dirty buffer从LRU list中移到dirty list,然后把dirty list中的dirty block flush到数据文件。
  2)表空间下线或热备时,
  3)drop一个对象时,
  4)关闭数据库时

  表空间组成?
  段:占用存储空间的数据库对象,如:emp表又叫emp段。可跨越数据文件,但不能跨越表空间。
  区:连续分配的空间。不能跨越数据文件。注意:这里的连续可能会带来空间碎片
  块:
  1)一个数据库中允许不同块大小,主要用于可传输表空间
  2)通常,数据库中5种不同块大小:默认和非默认。在特殊情况,还存有非标准(不是2的幂)。注意:system表空间总是使用默认块大小,一个表空间中所有块的大小都相同。
  3)块组成:
 块开销:块头,表目录,行目录(指针表:指向每条记录)
 空闲空间
 数据空间
  4)块头:数据块地址,数据块类型,事务表(ITL)
     ITL:行级锁和读一致性的实现基础,每条记录含:UBA(undo block address),事务号,SCN号
     一致性读:oracle对每次用户查询都要记录查询开始的SCN号,用于和数据块中的SCN号比较,如果数据块中的SCN号大于查询SCN,oracle就会利用UBA信息构造CR块,然后再比较CR块中的SCN号和查询SCN,如果仍然大于查询SCN,则还需要继续构造,直到CR块中的SCN小于或等于查询SCN,若还是找不到,就会报ora-01555错误了。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn