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

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

内容简介:控制文件:

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学习笔记:存储结构


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

查看所有标签

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

The Art of Computer Programming, Volume 3

The Art of Computer Programming, Volume 3

Donald E. Knuth / Addison-Wesley Professional / 1998-05-04 / USD 74.99

Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and ......一起来看看 《The Art of Computer Programming, Volume 3》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

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

HSV CMYK互换工具