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的特点:多表空间结构(虚的概念):

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

 

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

 

 

1个库里有多个表空间。

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

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

 

查看oracle上面的表空间:


 

SYSTEM表空间:oracle自身的信息

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

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

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

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

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

 

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


 

 

 

 



 

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

 

查看oracle所有的用户:


 

查看oracle中的所有的段:


 

 

 

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'


查看段的统计信息:

select blocks,empty_blocks from dba_tables wheretable_name='T2'


 

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块的内部结构


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

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

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

 

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

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';

YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS