Oracle-OCP学习笔记:存储结构

栏目: 数据库 · 发布时间: 6年前

内容简介:控制文件:

Oracle-OCP学习笔记:存储结构

控制文件:

Oracle-OCP学习笔记:存储结构

数据文件:

Oracle-OCP学习笔记:存储结构

联机重做日志文件:

Oracle-OCP学习笔记:存储结构

参数文件:

Oracle-OCP学习笔记:存储结构

归档日志文件:

Oracle-OCP学习笔记:存储结构

控制文件、数据文件、联机重做日志文件     放在存储上。

控制文件:数据库的名字,数据库物理结构信息,数据库字符集信息,SN号,checkpoint,状态信息

归档日志的历史信息

数据文件:普通数据文件(百万以下行是小表,百万到千万行是中型表,亿行以上的表是大型表),临时数据文件

联机重做日志文件:如果被破坏,数据库做报错

参数文件spfile: 数据库启动时读取,并不关闭这个文件,但是启动过后丢了也没事。一般放在服务器上。不放在存储上面。$ORACLE_HOME/dbs下

参数文件包括:

备份文件 {

控制文件、参数文件定期备份;

数据文件、归档日志文件每次都要备份。

} 原则上备份的文件不能放在存储上,一般放在带库上。(带库分为虚拟带库和真实带库,建议最好放在真实带库)

口令文件,以sysdba远程登录时会需要口令文件,丢了也没有关系,可以在线生成,

Alert 日志文件:用于对数据库的问题进行诊断的入口(后台进程),错误日志

文件位置:/u01/app/oracle/admin/ORCL/bdump/alert_ORCL.log

Trc 日志文件:

文件位置:/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_j000_3984.trc

Server Process( 前台进程)产生的trace文件:

文件位置: /u01/app/oracle/admin/ORCL/udump/*.trc

存储有三种组织形式:

1.  文件系统

2.  ASM

3.  裸设备

Oracle 的特点:多表空间结构(虚的概念):

一个实例对应一个数据库,一个数据库内有多个表空间,每个表空间对应存储不同的数据。不同的业务存放在不同的表空间中

Mysql sql server 一个数据库实例可以有多个数据库名称,每个数据库名称对应不同的业务。

1 个库里有多个表空间。

是通过划分表空间来方便我们的管理。

一个表空间由一个或多个文件组成。表空间的大小是多个物理文件大小的总和

查看oracle上面的表空间:

Oracle-OCP学习笔记:存储结构

SYSTEM 表空间: oracle 自身的信息

SYSAUX 表空间: oraclesystem 表空间的附属表空间 , 以上两个表空间要同时在线,要不然数据库无法启动

UNDOTBS1 undo 表空间 , 将数据改变前的数据存在这里面

TEMP 表空间:存储临时数据,当 PGA 空间不够用时, sql 排序时会用到 TEMP 表空间临时 排序 使用。

EXAMPLE 表空间: 存储样例数据库

USERS 表空间:存放用户数据。

查看表空间对应的数据文件:

Oracle-OCP学习笔记:存储结构

Oracle-OCP学习笔记:存储结构

Oracle-OCP学习笔记:存储结构

Oracle 通过用户将数据库所有的段组织起来.删除一个用户会将这个用户下的所有的段一起删除.

查看oracle所有的用户:

Oracle-OCP学习笔记:存储结构

查看 oracle 中的所有的段:

Oracle-OCP学习笔记:存储结构

Oracle 文件结构:

所有文件

数据库,表空间,段,区,块

Oracle 表空间

普通表空间

回滚表空间

临时表空间

Oracle

表段,表分区段,索引段,索引分区段,临时段,撤销(UNDO)段,二进制大对象段

Oracle

高水位线:段使用分配的区的最后一个块的位置.是oracle对表进行全表扫描的最后一个位置。

降低高水位线:truncate t2

Oracle 块:

Oracle

Oracle 块物理存储结构

行链接

行迁移

文件系统块:dumpe2fs /dev/sda1

扇区:512字节

知识点一:一个段建立以后,oracle如果给这个段分配区

知识点二:这个段分配了区以后,空闲的区空间是如何管理的

区管理方式;

本地管理(默认):

1. 自动管理:会根据空间的增长情况,自动分配空间给表段

2. 统一管理: 每次只分配固定的区给表段

数据字典

段管理方式:

自动管理方式(默认)

手工管理方式

创建表空间 SQL 语句: 

create smallfile tablespace “data1”

datafile “/u01/app/oracle/oradata/ORCL/data1_01.dbf” size100M reuse

autoextend on next 100M maxsize unlimited

logging

extent management local

segment space management auto

分析表:

Analyze table t2  computestatistics

Analyze table t2  computestatistics for all indexes;

Analyze table t2  deletestatistics

Exec dbms_stats.gather_table_stats('sys','t2')

查看指定表的段区块信息:

selectsegment_name,blocks,extents,bytes,segment_type,tablespace_name fromdba_segments where segment_name='T2';

select * from dba_extents where segment_name='T2'

Oracle-OCP学习笔记:存储结构

查看段的统计信息:

select blocks,empty_blocks from dba_tables wheretable_name='T2'

Oracle-OCP学习笔记:存储结构

select count(*) from t1;

truncate table t1;

DBMS_STATS 包里的statistics过程:

GATHER_INDEX_STATS

Index statistics

GATHER_TABLE_STATS

Table,column andindex statistics

Exec dbms_stats.gather_table_stats(‘sys’,’T2’)

GATHER_SCHEMA_STATS

Statistics forall objects in a schema

GATHER_DICTIONARY_STATS

Statistics forall dictionary objects

GATHER_DATABASE-STATS

Statistics forall objects in a database

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

表的统计信息:

包含表的行数,使用的块数,空的块数,块的使用率,行迁移和链接的数据,PCTFREE,PCTUSED的数据,行的平均大小

SELECT TABLE_NAME,NUM_ROWS,-- 表中的记录数

BLOCKS,        -- 表中数据所占的数据块数

EMPTY_BLOCKS,-- 表中的空块数

AVG_SPACE,    -- 数据块中平均的使用空间

CHAIN_CNT,    -- 表中行连接和行迁移的数量

AVG_ROW_LEN   -- 每条记录的平均长度

FROM USER_TABLES;

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,  -- 每个KEY的平均叶块个数

AVG_DATA_BLOCKS_PER_KEY,  -- 每个KEY的平均数据块个数

CLUSTERING_FACTOR  -- 群集因子

FROM USER_INDEXES

列的统计信息

包含唯一的值个数,列最大小值,密度(选择率),数据分布(直方图信息),NULL值个数

SELECT NUM_DISTINCT, -- 唯一值的个数

LOW_VALUE,-- 列上的最小值

HIGH_VALUE,  -- 列上的最大值

DENSITY,   -- 选择率因子(密度)

NUM_NULLS,  -- 空值的个数

NUM_BUCKETS,  -- 直方图的BUCKET个数

HISTOGRAM     -- 直方图的类型

FROM USER_TAB_COLUMNS;

相关视图:

V$TABLESPACE

V$ENCRYPTED_TABLESPACES

DBA_TABLESPACES,DBA_ USER_TABLESPACE

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

SQL 可以帮助我们找到当前数据库中逻辑读最高的10个对象:

Select * from (select object_name,statistic_name,valuefrom v$segment_statistics where statistic_name=’logical reads’ order by 3 desc)where rownum <11;

Oracle 块详解:

行目录:数据中的每行的起点位置

块的大小:

Oracle 中一个块是8k    showparameter block

文件系统是:  4k  dumpe2fs /dev/sda1

一个块是8k,由两个文件系统块组成,由16个扇区组成

正常情况下,一个块放多行数据:

PCTFREE: 默认是10%,当往一个块中插入数据时,当数据空间还剩10%时,就不插入了,代表这个块的空间满了。

为什么要留10%的原因是:当后期这个块中的数据因更新而变长时,可以使用这10%的空间.

行迁移=>update, 整体一行牵出来。Pctfree过小导致的。

因为pctfree配置过小,update时,行会迁移出来,导致访问一个块的内容时,会访问两个块的内容(当块满了时,这时update时,某个列要增长,这时oracle会将这个行整个移出来到这个新块中,原来的行不会删除,原来行里写上新数据块中行的地址。这个当扫描原来的块时,会扫描到新增加的块)

如果一个行非常长,一个块容不下一行,所有要新增加一个块以存放行的其它部分。

行链接=>insert,一个行非常长,块太小了。

原来的块存不下行的内容,会在行最后的位置存放下一个块的新行的位置,在另一个新块里存储行其它的部分。

Oracle 块的内部结构

Oracle-OCP学习笔记:存储结构

行与行之间是串起来的,结构是:

第一行:列宽_列值-列宽_列值-列宽_列值-列宽_列值

第二行:列宽_列值-列宽_列值-列宽_列值-列宽_列值

查看是行链接还是行迁移的方法:

SELECT TABLE_NAME,NUM_ROWS,-- 表中的记录数

BLOCKS,       -- 表中数据所占的数据块数

EMPTY_BLOCKS,-- 表中的空块数

AVG_SPACE,    -- 数据块中平均的使用空间

CHAIN_CNT,    -- 表中行连接和行迁移的数量:这个值如果为0,表示正常,如果太大,要看一下是行连接,还是行迁移造成的。

AVG_ROW_LEN   -- 每条记录的平均长度

如果行的平均长度大于块的长度:说明块太小了,需要增加块的容量。PCTFREE可能配置太大比率了,可以减少。

如果行的平均长度小于块的升序,但CHAIN_CNT的值比较高,这就说明是行迁移造成的。解决方法是对表进行重新整理,将这个表先导出来,再导进去。

FROM USER_TABLES WHERE TABLE_NAME='T2';

Oracle-OCP学习笔记:存储结构


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

GitHub入门与实践

GitHub入门与实践

[日] 大塚弘记 / 支鹏浩、刘斌 / 人民邮电出版社 / 2015-7 / 39.00元

本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。一起来看看 《GitHub入门与实践》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具