您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

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

2024/4/16 21:23:59发布5次查看
一致性读: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错误了。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录