不胜人生一场醉>数据库>正文 Oracle的逻辑结构(表空间、段、区间、块)——段

简介:
Oracle 的逻辑结构 ( 表空间、段、区间、块 ) ——段
 
数据段是一系列区间 , 在这个特定逻辑存储结构存储的数据都在一个表空间内 . 例如对于每一种数据库 对象 ( 表、索引 ) ,数据库都会分配一个或一段区间构成其对象的数据段。
A segment is a set of extents that contains all the data for a specific logical storage structure within a tablespace. For example, for each table, Oracle allocates one or more extents to form. that table’s data segment, and for each index, Oracle allocates one or more extents to form. its index segment
数据段
Oracle 数据库中,一个独立的数据段保存以下所有情况的数据:
l  一个非分区表或非簇的表
l  分区表的一个分区
l  表的一个簇
当使用 Create 语句创建表或簇的时候, Oracle 会自动创建该数据段。
表或簇的存储参数决定了该数据段的区间如何分配。存储参数也影响了与该对象相关的数据段的存储和数据的查询。
索引段
Oracle 数据库中每一个非分区索引都有一个对应的单一的索引段用来保存所有数据。对于分区索引而言,每一个分区都有一个单一的索引短。
当执行Create Index 语句,Oracle 就会创建相应的索引段。在创建索引的时候同样也可以指定相应的存储参数。设置这些参数将会直接影响到数据查询和存储的效率。
临时段
处理查询的时候,对于 SQL 语句的解析和执行阶段 Oracle 经常需要临时工作区。 Oracle 字段分配的磁盘空间就叫临时段。例如, Oracle 需要一个临时段作为排序工作区。如果排序操作可以在内存进行或者 Oracle 可以直接使用索引的话, Oracle 就不会创建这个临时段。
以下语句有时会需要使用临时段:
l  CREATE INDEX
l  SELECT ... ORDER BY
l  SELECT DISTINCT ...
l  SELECT ... GROUP BY
l  SELECT ... UNION
l  SELECT ... INTERSECT
l  SELECT ... MINUS
自动回滚( 撤销) 段
自动回滚 ( 撤销 ) 段管理 是基于 undo 表空间的,取代了原来的人工分配回滚段的方式。
自动撤销段管理允许你显式的控制 undo retention(undo 保留时间 ) ,通过 UNDO_RETENTION 系统参数,可以指定在数据库中已提交的 undo 信息所保留的量。通过控制 retention ,你可以配置你的系统以确保长期运行的查询能够运行成功。
Oracle 用 V$UNDOSTAT 视图来监控和配置你的数据库系统以确保 undo 空间高效使用。
UNDO Retention 控制
长时间运行的查询有时会失败,因为对于所需的一致性读操作的 undo 信息已不再可用。这通常发生在已提交的 undo 数据块被活动事务给覆盖了。
自动撤消管理为 undo 空间何时重用提供了一种显式的控制方法,也就是 undo 信息能够保留多久。 DBA 可以用 UNDO_RENTENTION 参数指定保留时间。例如,如果 UNDO_RETENTION 设置为 30 分钟,那么系统中所有已提交的 undo 信息将至少保留 30 分钟。这样就可以确保所有运行小于等于 30 分钟的查询,在通常情况下,不会碰到 ”snapshot too old” 的 Oracle 错误。
你可以在数据库启动时设置 UNDO_RETENTION 或者通过 ALTER SYSTEM 语句改变改变设置。下面的例子为设置 retention 为 20 分钟:
ALTER SYSTEM SET UNDO_RETENTION = 1200 ;
如果没有设置 UNDO_RETENTION 参数的话, Oracle 会使用一个基于多数 OLTP 系统预置的缺省值,通常情况下查询时间不会很长。
Oracle 提供如下为新数据库设置撤销保留时间间隔的指导:
1 、  OLTP 系统: 15 分钟
2 、   混合: 1 小时
3 、  DSS 系统: 3 小时
4 、   闪回查询: 24 小时
 
表与段的关系
 
如何查找一个表所对应的所有段
包含 4 个部分
-- 普通表段 , 对于分区表每个区对应一个分区段
--BLOB 段 , 普通表每个 BLOB 字段一个段;分区表每个分区一个 BLOB 段
--BLOB 索引段,同上
-- 普通索引段,全局索引每个索引一个段;分区索引每个索引则一个段
测试 :创建一个带 BLOB 字段的分区表
create table TESTPARTITION
(
 A VARCHAR2(10),
 B VARCHAR2(10),
 C BLOB
)
partition by list (A)
(
 partition PARTA values ('A'),
 partition PARTB values ('B')
);
创建一个全局索引和局部索引
CREATE INDEX INDTESTPARTITIONGLOBAL_B ON TESTPARTITION(b); 
CREATE INDEX INDTESTPARTITIONLOCAL_A ON TESTPARTITION(A) local
(
partition part_A tablespace AUTOALLOCATE,
partition part_B tablespace AUTOALLOCATE
);
查询该表所有的段
SELECT A.SEGMENT_NAME TABLE_NAME,'N/A' COLUMN_NAME,A.SEGMENT_NAME,'TABLE' SEGMENT_TYPE,A.HEADER_FILE,A.HEADER_BLOCK,A.BYTES
FROM DBA_SEGMENTS A                        --LOCAL SEGMENT
WHERE A.segment_name='TBLTESTSEGMENT'
UNION ALL
select A.TABLE_NAME,A.COLUMN_NAME,B.SEGMENT_NAME,B.SEGMENT_TYPE,B.HEADER_FILE,B.HEADER_BLOCK,B.BYTES
from DBA_LOBS A,DBA_SEGMENTS B             --LOB SEGMENT
where A.SEGMENT_NAME=B.SEGMENT_NAME AND A.TABLE_NAME='TBLTESTSEGMENT'
UNION ALL
select A.TABLE_NAME,A.COLUMN_NAME,B.SEGMENT_NAME,B.SEGMENT_TYPE,B.HEADER_FILE,B.HEADER_BLOCK,B.BYTES
from DBA_LOBS A,DBA_SEGMENTS B              --LOB INDEX SEGMENT
where A.INDEX_NAME=B.SEGMENT_NAME AND A.TABLE_NAME='TBLTESTSEGMENT'
UNION ALL
select A.TABLE_NAME,A.INDEX_NAME,B.PARTITION_NAME,B.SEGMENT_NAME,B.SEGMENT_TYPE,B.HEADER_FILE,B.HEADER_BLOCK,B.BYTES
from DBA_INDEXES A,DBA_SEGMENTS B          --INDEX SEGMENT
where A.INDEX_NAME=B.SEGMENT_NAME AND A.TABLE_NAME='TESTPARTITION'

 
深度理解 Oracle10g  UNDO_RETENTION 参数的使用
深入学习 分区表及分区索引




本文转自baoqiangwang51CTO博客,原文链接: http://blog.51cto.com/baoqiangwang/312711 ,如需转载请自行联系原作者
相关文章
|
7天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
113 64
|
4天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
6天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
13 1
|
19天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
35 3
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
157 2
|
13天前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
20 0
|
15天前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
66 0

推荐镜像

更多