文档章节

oracle 体系结构及内存管理 15_存储结构

P
 PeakFang-BOK
发布于 2018/10/13 18:40
字数 1695
阅读 5
收藏 1

1、Oracle物理存储结构
    控制文件:ctl 数据库名字,物理结构信息,字符集,SCN,检查点,状态信息,归档日志历史等,一般会有镜像
              show parameter control;
    数据文件:dbf 数据和临时文件百万行以下小表上亿大表
              select * from dba_data_files;
              select * from dba_temp_files;
    联机日志文件:redo log 记录数据库的改变过程
              select * from v$logfile;
              select * from v$log;
    参数文件:pfile,spfile 启动时调用,之后一直存在内存,即使损坏了也不影响数据库运行,重启会有影响
              show parameter spfile;
    备份文件:参数文件可以不用每次都备份,DBF,LOG,ARCLOG每次都要备份,数据文件,归档日志的备份不要
              放在存储上,因为存储的寿命是4年左右。
    归档日志文件:archived log 离线文件,不要放到存储上
              select * from V$ARCHIVED_LOG;
    口令文件:可临时生成,在$ORACLE_HOME/dbs目录下创建
              orapwd file=orapwipemsdb password=oracle entries=3 force=y 
    告警日志文件:alert 在ORACLE_BASE/admin/SID/bdump目录下,记录数据库的错误及操作过程信息;
    跟踪日志文件:trace 在udump目录下,包含会话对应的spid号的.trc文件
        11g增加了xml格式的日志文件
        select value from v$diag_info where name='Diag Alert';
        select value from v$diag_info where name='Diag Trace';

2、逻辑存储结构
    数据库、表空间、段(索引段,分区段,临时段,撤销段,表段)、区、块
    select * from v$database; --数据库实例信息
    select * from dba_users;  --用户默认信息
    select * from dba_tablespaces;  --表空间信息
    select * from dba_segments;     --段信息,可连接表空间,用户,区等
    select * from dba_extents;      --区信息,可连接段等
    show parameter block;           --块相关信息 

3、Oracle表空间 dba_tablespaces
    oracle多表空间数据库,一个表空间,多个数据文件可实现并行读写
    普通表空间:users,example
    回滚表空间:undo  undotbs1存储修改前数据
    临时表空间:temporary temp临时存放数据,排序,hash连接
    system:数据字典信息,oracle系统信息
    sysaux:system辅助表空间,与system必须同时在线
    状态:permanent表空间中的数据一般不会改变
          undo
          temporary

4、Oracle段 dba_segments
    oracle给对象分配空间的单位
    表段、表分区段、索引段、索引分区段、temp 临时段、undo撤销段、二进制大对象段
    当分配给多个区后,会给区里增加块数
    
5、Oracle区: dba_extents oracle给段分配空间的单位,物理上连续的多个oracle块,区给段分配空间时开始一个区
默认8个块,随着分配区增加,区中的块也会增多如128个块。
    高水位线:"high water mark"或HWM,段使用区的最后一个块的位置,全表扫描的最后一个位置,数据删了提交
后再分析,高水位线并未下来
    段空间释放问题,truncate table table_name,后分析表
查询表的HWM user_tables.blocks
    SELECT blocks, empty_blocks, num_rows  FROM user_tables  WHERE table_name = <tablename>;
        BLOCKS 列代表该表中曾经使用过得数据库块的数目,即水线;
        EMPTY_BLOCKS 代表分配给该表,但是在水线以上的数据库块。
查询分配给具体段的块信息 dba_segments
    SELECT segment_name, segment_type, blocks  FROM dba_segments  WHERE segment_name='BIG_EMP1';
分析表
    ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;
查询当前对象含有数据的块数,等同于分析后user_tables.blocks
    SELECT COUNT (DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid)|| DBMS_ROWID.ROWID_RELATIVE_FNO(rowid))
    "Used" FROM big_emp1;
修正水位线
    在线转移表空间,move后记住重建索引。转移后需要分析才能更新
        ALTER TABLE table_name MOVE;
        alter table BIG_OBJECTS move tablespace EXAMPLE;
    使用Oracle 10g新增功能修正    
        alter table table_name enable row movement;  --设置允许行移动
        alter table table_name shrink space;
    复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表;
    truncate 会降水位线,同时也会减少分配给段的块数
        TRUNCATE TABLE big_emp1 [REUSE STORAGE] --保留段分配的块数
            
6、Oracle块
    块头:Oracle块物理存储结构:物理地址,属于哪个表,事物槽,行目录
    行目录:通过行目录找行,行从下往上使用,行与行之间串起来,行信息矢量,行头部(锁信息)列长,列值。
            记录块中每一行的起始位置,找到行后逐列找值。应尽可能的将一行放入一个块中,PCTFREE 10%oracle
            每个块预留的空间。随着行目录和数据行的使用空间会变小。
    行迁移:update后原块放不下新值,整行数据都被移动,原始的数据块上仅仅保留的是指向新块的一个地址信息。
            原先空间的剩余空间不再被数据库使用,这些剩余的空间我们将其称之为空洞,产生表碎片,发生了行迁
            移的行的rowid 还是不会变化.
    行连接:insert当一行数据太大而不能在一个单数据块容纳时,行链接由此产生,行记录的大小超出了数据库
            Oracle块的大小,DBA_TABLES视图的CHAINED_CNT列,该列有该表的链接行计数
            SELECT name, value FROM v$sysstat WHERE name = 'table fetch continued row';
    参考资料:
            http://www.2cto.com/database/201410/344139.html
    文件系统块:dumpe2fs /dev/sda1
    扇区:512字节

7、区管理方式
    数据字典
    本地(推荐)
        自动
        统一(都可以)
        
8、段管理方式
    手工管理方式
    自动管理方式(推荐)

9、分析表
    analyze table tablename compute statistics;
    analyze table tablename compute statistics for all indexes;
    analyze table tablename delete statistics;
参考资料:
http://www.cnblogs.com/sopost/archive/2011/02/20/2190045.html    

10、相关查询
查询具体表逻辑存储信息
    SELECT table_name,NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN 
    FROM USER_TABLES where table_name='T2';
查询索引列的统计信息,索引的深度(B-Tree的级别),索引叶级的块数量,集群因子(clustering_factor), 唯一值的个数。
    SELECT BLEVEL, LEAF_BLOCKS, DISTINCT_KEYS, AVG_LEAF_BLOCKS_PER_KEY, AVG_DATA_BLOCKS_PER_KEY, 
    CLUSTERING_FACTOR  FROM USER_INDEXES;
查询列的统计信息唯一值个数,列最大小值,密度(选择率),数据分布(直方图信息),NUll值个数
    SELECT NUM_DISTINCT, LOW_VALUE, HIGH_VALUE, DENSITY, NUM_NULLS, NUM_BUCKETS, HISTOGRAM 
    FROM USER_TAB_COLUMNS;    
查询当前数据库中逻辑读最高的10个对象,找热端
    select *  from (select object_name, statistic_name, value from V$SEGMENT_STATISTICS where 
                    statistic_name = 'logical reads' order by 3 desc)
    where rownum < 11;
相关视图
    V$TABLESPACE
    V$ENCRYPTED_TABLESPACES
    DBA_TABLESPACES,DBA_ USER_TABLESPACES
    DBA_TABLESPACE_GROUPS
    DBA_SEGMENTS, USER_SEGMENTS
    DBA_EXTENTS, USER_EXTENTS
    DBA_FREE_SPACE, USER_FREE_SPACE
    DBA_TEMP_FREE_SPACE
    V$DATAFILE
    V$TEMPFILE
    DBA_DATA_FILES
    DBA_TEMP_FILES
    V$TEMP_EXTENT_MAP
    V$TEMP_EXTENT_POOL
    V$TEMP_SPACE_HEADER
    DBA_USERS
    DBA_TS_QUOTAS
    V$SORT_SEGMENT
    V$TEMPSEG_USAGE
    V$SEGSTAT_NAME、V$SEGSTAT、V$SEGMENT_STATISTICS
    DBA_TABLES
    DBA_OBJECT_TABLES
    DBA_TAB_STATISTICS
    DBA_TAB_COL_STATISTICS
    DBA_TAB_HISTOGRAMS
    DBA_INDEXES
    DBA_IND_STATISTICS
    DBA_CLUSTERS
    DBA_TAB_PARTITIONS
    DBA_TAB_SUBPARTITIONS
    DBA_IND_PARTITIONS
    DBA_IND_SUBPARTITIONS
    DBA_PART_COL_STATISTICS
    DBA_PART_HISTOGRAMS
    DBA_SUBPART_COL_STATISTICS
    DBA_SUBPART_HISTOGRAMS
    DBA_EXTENTS

© 著作权归作者所有

P
粉丝 7
博文 134
码字总数 336718
作品 0
西安
架构师
私信 提问
Oracle体系结构和用户管理

Oracle体系结构和用户管理 一 Oracle体系结构结构 数据库的体系结构是指数据库的组成,工作过程,以及数据库中数据的组织与管理机制。 实例和数据库是Oracle数据库体系结构的核心组成部分 1实...

常亚亚
2017/06/03
0
0
先对oracle 体系结构有个总体的认识

Oracle体系结构,我觉得,大体可分:内存结构,进程结构和存储结构。其中,进程结构是内存结构和存储结构的沟通桥梁。 在不同的平台上,oracle体系结构的实现略有不同。比如,在unix(linux...

长平狐
2012/09/19
63
0
Oracle专题1之Oracle概述、Oracle数据库的体系结构以及常用命令

1、Oracle概述 - Oracle Database,简称为Oracle。是美国ORACLE(甲骨文)公司的一款对象关系型的数据库管理系统(ORDBMS)。目前在数据库市场上占有主要份额。 - Oracle的发展史:1977年埃里...

极客微信条
2017/11/30
0
0
九妹带你了解oracle

一.oracle 体系架构 Oracle的体系结构是数据库的组成,工作过程,以及数据库中数据的组织与管理机制,要了解oracle数据库的体系结构,就必须要理解oracle的主要组件和重要的概念。Oracle体系...

暖暖miss
2017/04/27
0
0
全兼容Oracle?扒一扒浪潮K-DB是咋做的?

  【IT168 评论】“如果说Linux是类Unix操作系统,那么K-DB就是类Oracle数据库。会Unix的人,上手Linux要多少时间,则Oracle DBA上手K-DB就要多少时间。”以上观点来自一位参加了8月30日I...

it168网站
2015/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Commons-lang3提供的StopWatch执行时间监视器

Commons-lang3提供的StopWatch执行时间监视器, spring也提供了同样功能的工具 前言 我们如果要统计一段代码的执行时间:我们的办法是 public static void main(String[] args) {      ...

独钓渔
27分钟前
0
0
Kernel 块设备驱动框架

1,总体架构: 块设备驱动框架是Linux设备最重要的框架之一,涉及内核的vfs,设备驱动模型等模块,是内核中异常复杂的一个框架。我们先看一下块设备设计的主要框架结构,先从总体上对块设备有...

yepanl
56分钟前
2
0
iOS开发之EventKit框架的应用

iOS开发之EventKit框架的应用 一、关于系统日历和提醒事宜 iOS系统自带的Calendar应用非常强大,用户可以在其中添加日程事件,并且其提供了接口供其他应用进行调用,可以向日历中进行事件的读...

珲少
59分钟前
2
0
jni接口NewStringUTF崩溃

转载 原文 https://blog.csdn.net/churuxu/article/details/49999575 ndk开发中,将c/c++的UTF8编码的字符串转换成java字符串,使用了NewStringUTF接口。 当字符串中包含emoji字符时,在有些...

shzwork
昨天
3
0
北斗三号IGSO-2卫星发射成功!

6月25日,中国航天科技集团官方公众号宣布,北斗三号IGSO-2卫星发射成功! 航天科技集团表示,6月25日2点09分,我国在西昌卫星发射中心用长征三号乙运载火箭成功将北斗三号第2颗倾斜地球同步...

linuxCool
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部