oracle 体系结构及内存管理 15_存储结构
2019独角兽企业重金招聘Python工程师标准>>>
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
转载于:https://my.oschina.net/peakfang/blog/2245178
oracle 体系结构及内存管理 15_存储结构相关推荐
- oracle 体系结构及内存管理 13_事务
2019独角兽企业重金招聘Python工程师标准>>> 1.事务的基本概念 一组DML语句 insert.delete.update需要同时执行成功或失败. 事 ...
- Oracle体系结构之内存结构(SGA、PGA)
Oracle体系结构之内存结构(SGA.PGA) 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个 ...
- oracle系列(二)oracle体系结构和用户管理
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 在使用oracle之前,我们一定要对or ...
- 第五章:管理数据库存储结构
存储结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 数据存 ...
- Oracle 自己主动内存管理 SGA、PGA 具体解释
ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME ...
- OCP之5 管理数据库存储结构
存储结构 一个数据库可划分为多个称为表空间的逻辑存储单元.每个表空间可以包含很多Oracle 逻辑数据块.DB_BLOCK_SIZE 参数指定了逻辑块的大小.逻辑块的大小介于2 KB 到 32 KB ...
- ORACLE 11g 自动内存管理
Overview 在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配.oracle推荐使用自动内存管理简化内存分配. oracle ...
- 云和恩墨技术通讯:Oracle AMM自动内存管理引起数据库阻塞
各位亲爱的用户/读者朋友们: 为了及时共享行业案例,通告共性问题,达成知识共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>(4月刊),通过对过去一段时间的知识回顾和故障归纳,以期提供有 ...
- oracle启用amm,【内存管理】Oracle AMM自动内存管理详解
一. Oracle 的三种内存管理方式 oracle 内存管理有三种方式,每一个 instance 只能够选择一种.这三种管理方式分别是 AMM 自动内存管理( Automatic Memory Ma ...
最新文章
- 进一步封装axios并调用其读取数据(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
- Sublime Text
- python标准词匹配_用 Python 自动化办公能做到哪些有趣或有用的事情?
- Java中的List
- Android之切换账号登录依然能登录成功问题解决办法
- 计算机职称业务工作业绩总结,档案职称工作业绩
- Android开发入门二之AndroidManfest.xml文件详细说明 .
- CMakeList.txt的简介
- CSS按钮动画(四)
- King's Quest - poj 1904(强连通分量+外挂输入输出)
- mybatis编写一个查询数据库表的程序
- 聊天机器人5步重塑酒店业
- devc调试设置断点后没有反应_基于VSCode的skynet调试器
- fp5139应用电路图_LM358各种应用电路
- 深度学习之CNN反向传播
- VC之获取计算机网卡mac地址
- C++ 设置字体颜色
- 黄金自己怎么用计算计算机数,黄金分割点计算器
- 猎头是怎么找到合适候选人的?
- 求一个3*3的整形矩阵对角线元素之和
热门文章
- android 重新打开活动,android – RxJava在活动恢复后重新订阅事件
- oracle数据库无法查询,关于oracle中无法查询中文条件的解决办法
- 实战丨基于接口的银行系统自动化测试实践
- oracle11 分配表权限,Oracle11g权限--角色
- 计算机专业的英语文献,计算机专业英语论文参考文献集 计算机专业英语英语参考文献哪里找...
- maven创建java,Maven创建Java项目
- Xception: Deep Learning with Depthwise Separable Convolutions
- DE13 Finding Particular Solutions to Inhomogeneous ODEs
- 不属于处理数据的计算机应用,计算机应用基础6
- jbod ugood 磁盘驱动状态_LSI Storcli 工具使用