深入了解Oracle数据库的逻辑结构与数据组织方式
逻辑结构图
表空间(Tablespace)表空间是 Oracle 最大的逻辑存储结构,与物理上的数据文件相对应,但是一个表空间可以拥有多个数据文件。
数据表空间用于存储用户数据的普通表空间。
系统表空间默认的表空间,用于保存数据字典(一组保存数据库自身信息的内部系统表和视图,及用于 Oracle 内部使用的其他一些对象),保存所有的 PL/SQL 程序的源代码和解析代码,包括存储过程和函数、包、数据库触发器等,保存数据库对象(表、视图、序列)的定义。
回滚表空间用于存放回滚段,每个实例最多只能使用一个撤销表空间
临时表空间存储 SQL 执行过程中产生的临时数据
段(Segment)段是一组盘区,它是一个独立的逻辑存储结构,用于存储具有独立存储结构对象的全部数据。段一般是数据库终端用户处理最小的存储单位,当段的数据区已满,Oracle 为其分配另一个数据区,段的数据区在磁盘上可能是不连续的。
数据段用来存储表中所有数据;
索引段用来存储表中索引的所有数据;
临时段用于存储表排序或汇总时产生的临时数据
LOB 段LOB 用来存储表中大型数据对象,例如 CLOB 与 BLOB
回退段用 ...
深入了解Oracle数据库的进程结构
Oracle 进程结构图
用户进程 用户进程是一个与 Oracle 服务器进行交互的程序。一般的客户端软件,像 Oracle 的 sqlplus,sql developer,或者是一些驱动程序等等向数据库发送请求时即创建了用户进程。
服务器进程 当监听程序监听到客户端来了一个请求,在创建会话时便会为其分配一个对应的服务器进程。服务器进程的主要作用就是处理连接到当前实例的用户进程的请求,对客户端发来的 sql 进行执行并返回执行结果。
后台进程后台进程是 Oracle 数据库为了保持最佳系统性能和协调多个用户请求而设置的一系列后台进程。
进程监控(PMON)对故障的进程执行恢复操作,负责清理内存存储区和释放该进程所使用的资源周期的检查调度进程和服务器进程的状态,对已死的进程进行重启
系统监控(SMON)当数据库实例出现故障或者系统崩溃的时候,执行恢复操作定期合并字典管理的表空间中的空闲空间在系统重启期间,清理表空间所有临时段安装和打开数据库
数据写入(DBWn)负责的将更新完的缓冲区数据写入磁盘中。以下情况发生时执行:
没有可以写入的缓存空间 ...
深入了解Oracle数据库的内存结构
Oracle 内存结构图
System Global Aera (SGA)
V$SGASTAT 视图提供有关 SGA 更详细的内存分配信息。
V$SGA 视图给出了系统全局区(System Global Area,SGA)内存结构的摘要信息。
数据库缓存区(Database Buffer Cache) 用于缓存当前或最近使用的从磁盘读取的数据块的拷贝,来优化数据库的 I/O 减少物理读/写。Oralce 依据 LRU 算法对该内存区域进行 block-level 的更新。数据高速缓存块又由以下几个缓存块组成:
脏缓存块(Dirty buffers)保存被修改过并且 commit 但未写入磁盘数据的缓存块,脏缓存块最终被 DBWn 进程写入到硬盘的数据文件中永久保存。
命中缓存块(Pinned buffers)保存最近正在被访问的缓存块,始终被保留在数据高速缓存中,不会被写入数据文件。
空闲缓存块(Free buffers)该缓存块中没有数据,等待被写入数据。oracle 从数据文件中读取数据后,寻找空闲缓存块,以便写入其中。
日志缓冲区(Redo Log Bu ...
深入了解Oracle数据库的物理结构:文件组织与作用详解
在Oracle数据库中,物理结构是数据库存储的基础,各种文件扮演着重要的角色。本文将为您深入介绍Oracle数据库的物理结构,特别是不同类型的文件以及它们的作用。我们将逐步介绍数据文件、控制文件、重做日志文件和参数文件,并详细解释这些文件在Oracle数据库中的重要性和功能。让我们一起来了解Oracle数据库中的物理结构与文件组织吧!
数据文件(Data file)数据文件是Oracle数据库中存储实际数据的文件。每个表空间在磁盘上都有一个或多个关联的数据文件,它们保存了表和索引的物理数据。数据文件的扩展名为.dbf。数据文件是Oracle数据库的核心组成部分。
数据文件特性
每个数据文件对应一个数据库,一个数据库可以对应多个数据文件
数据文件可以自动扩展
数据文件专属于一个表空间,一个表空间可以拥有多个数据文件。
控制文件(Control file)控制文件是Oracle数据库的重要组成部分,用于跟踪数据库的结构和状态。它记录了数据库的结构信息,包括数据文件、日志文件和数据库参数的位置和状态信息。控制文件还包含数据库的日志序列号,用于恢复和故障恢复。通常情况下,一个数据库有一个主 ...
加速查询优化——深入了解Oracle Hint
引言:在Oracle数据库中,查询性能的优化一直是DBA和开发人员关注的焦点。作为Oracle数据库的高级功能之一,Oracle Hint(提示)可以直接指导执行计划的生成,对于提高查询性能至关重要。
什么是Oracle Hint?Oracle Hint是一种以注释形式嵌入SQL语句中的指令,其目的是引导数据库优化器生成更优化的查询执行计划。通过使用Hint,我们可以直接干预执行计划的生成过程,以最大程度地提高查询性能。
常用Hint
Oracle Hint
作用与使用场景
ALL_ROWS
以最佳的性能获取所有行的方式进行查询
FIRST_ROWS(n)
指示优化器返回前n行结果,适用于需要快速返回部分结果的查询
INDEX(table_name index)
强制使用指定索引进行查询
FULL(table_name)
强制执行全表扫描,避免使用索引
ORDERED
强制按照查询中表出现的顺序连接表
USE_HASH(table_name)
强制使用哈希连接算法来连接表
USE_MERGE(table_name)
强制使用合并连接算法
LE ...
如何根据执行计划识别低效SQL
引用《收获,不止SQL优化》中的总结
看懂执行计划之执行顺序
口诀 最右最上先执行
方法
从上往下,第一个没有子节点的步骤先执行
对于兄弟节点,即靠上的节点先执行
所有兄弟节点执行完以后,执行父节点
缩进最深的,最先执行
缩进深度相同的,先上后下
原则从上至下,从右向左
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行 从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。
先从最开头一直连续往右看,直到看到最右边的并列的地方;对于不并列的,靠右的先执行;如果见到并列的,就从上往下看,对于并列的部分,靠上的先执行。
格式化显示父子关系12345678910select id, parent_id, operation from (select level lvl, id, parent_id, lpad(' ', level) || operation || ' ' || options || ' ' | ...
获取执行计划
获取执行计划的方法获取执行计划之 Autotrace获取执行计划之 explain plan for获取执行计划之 dbms_xplan.display_cursor()获取执行计划之 dbms_xplan.display_awr()获取执行计划之 10046 事件获取执行计划之 10053 事件获取执行计划之 AWR
适用场合分析
简单获取执行计划的方法:explain plan for 或 set autotrace on
获取目标 SQL 的多个执行计划:dbms_xplan.display_cursor 或 AWR 报告
有函数,存在多层调用:10046 事件
表被访问次数:dbms_xplan.display_cursor 搭配 ALTER SESSION SET STATISTICS_LEVEL = ALL
获取真实执行计划:除 explain plan for 和 SET AUTOTRACE TRACEONLY EXPLAIN 外
dbms_xplan.display_cursor()与 set autotrace traceonly exp 的区别在于当 SQL 有绑定 ...
获取执行计划之 AWR
AWR AWR(Automatic Workload Repository 自动工作负载库)。AWR 报告是进行日常数据库性能评定、问题 SQL 发现的重要手段。可以自动采集 Oracle 运行中的负载信息,并生成与性能相关的统计数据。
原理 AWR 报告的原理是基于 Oracle 数据库的定时镜像功能。Oracle 数据库后台进程会以一定间隔收集系统的快照信息,并且保存在数据库中。AWR 通过比对两次快照收集到的统计信息来生成对应的报表数据。AWR 来源:V$ACTIVE_SESSION_HISTORYAWR 开关参数:CONTROL_MANAGEMENT_PACK_ACCESS采样频率和保存时间配置表:DBA_HIST_WR_CONTROL。
执行步骤
sqlplus 运行 awrrpt.sql 脚本
1@?/rdbms/admin/awrrpt.sql
选择报告生成格式
选择生成报告日期,缺省值最近 7 天
选择 snpID
选择报告保存路径以及名字,默认路径为当前 CMD 目录
根据上面的 awr 报告中,找出花费时间比较 ...
获取执行计划之 dbms_xplan.display_awr()
前提 目标SQL的执行计划被Oracle采集到AWR Reponsitory中
操作流程
查看 CONTROL_MANAGEMENT_PACK_ACCESS、STATISTICS_LEVEL 参数
12SHOW PARAMETER control_management_pack_accessshow parameter STATISTICS_LEVEL
以上两个参数用于控制诊断和调优包的使用 CONTROL_MANAGEMENT_PACK_ACCESS 应该被设置为 DIAGNOSTIC+TUNING 诊断和调优模式 DIAGNOSTIC 为确保启用自动数据库诊断监视器,包括 AWR、ADDM TUNING 显示一 sql 推断信息和调优建议,包括 SQL Tuning Advisor,、SQLAccess Advisor
1alter system set control_management_pack_access="DIAGNOSTIC+TUNING";
执行测试 SQL
1select count(1) from emp;
查询 Shared ...