zoukankan      html  css  js  c++  java
  • oracle存储结构

    数据库的物理存储结构

    select * from v$datafile;

    数据库的逻辑存储结构,从表空间开始查起
    一个数据库对象的逻辑存储结构如下
    表空间-段-区-块

    select * from dba_tablespaces;
    select * from dba_segments
    where tablespace_name='KYC_VEH';
    select * from dba_segments
    where tablespace_name='KYC_VEH' and segment_name='VEHICLE_INFO';
    select * from dba_extents
    where tablespace_name='KYC_VEH' and segment_name='VEHICLE_INFO';

    初始是按照一个区8个块进行分配的,也即65536B,initial_extent是65536,即dba_segments中的initial_extent字段值
    select 16*8*8192 from dual;
    1048576
    初始大小占完之后,再分配时是按照一个区128个块进行分配的,也即1MB,next_extent是1048576,即dba_segments中的next_extent字段值
    select 128*8192 from dual;
    1048576

    一个段占用了17 extents
    一个区8个块,即一个区是65536字节
    一个块8192字节

    block_id是全局的,其它的是相对的
    select * from dba_segments;
    主要关注header_block,blocks两个字段的值变化,并且可以降序或升序看一下

    ==============================

    dba_extents 中除了记录每个extent启始块号(block_id),还记录了该extent中有多少个块(blocks)。所以,只要查到11943在哪个范围内就可以知道这个块属于哪个extent,属于哪个段了。但是,每个数据文件中的块号都是从头开始编号的,意味着每个数据文件都可能会有11943这个块号。所以,你还需要知道这个块属于哪个文件。

    另一种方法:DUMP出该数据块的任一行记录的ROWID,通过ROWD可以直接计算出对应的唯一文件号和对象号,从而知道该块存在哪了个数据文件上,是属于哪个对象的。
    select  dbms_rowid.rowid_object(rowid) objectid--对象号
           ,dbms_rowid.rowid_relative_fno(rowid) fileid--文件号
           ,dbms_rowid.rowid_block_number(rowid) blockid--块号
           ,dbms_rowid.rowid_row_number(rowid) rownums--行号
    from dual

  • 相关阅读:
    error C2054: 在“inline”之后应输入“(”
    SendInput模拟键盘操作
    获取广电高清直播源
    Lua使用luasocket http请求例子
    枚举所有继承特定接口的类
    Stream Byte[] 转换
    async await
    C# ServiceStack.Redis 操作对象List
    resharper安装后,一不小心点错了(选择了object browser)
    fiddler 挂载 JS文件
  • 原文地址:https://www.cnblogs.com/createyuan/p/7743957.html
Copyright © 2011-2022 走看看