oracle数据库中最小的逻辑结构,oracle中的逻辑结构讲解

概念:oracle的逻辑结构一般可以分成:表空间(tablespace)、段(segment)、区(extent)、数据块(data block)。oracle由表空间组成,表空间由段组成,段由区组成,区由数据块组成。

分类:表空间:1.表空间是数据库中最大的逻辑单位,几个表空间组成了数据库。

2.表空间由一个或多个数据文件在物理上构成,一个数据文件只能属于一个表空间,这里通过数据文件位置的不同形成表空间在多个磁盘的分布。

3.根据组成的段类型,表空间分成:数据段表空间、索引段表空间、临时段表空间、回退段表空间。

4.可以通过修改数据文件大小或者添加删除数据文件来管理表空间大小。

5.表空间可以在线(ONLINE)或者离线(OFFLINE),也可以将空间中的部分表在线或离线。也有只读(read only)或者读写(read write)的属性。--system等某些特殊表空间不得设置成离线或者只读

6.可以通过QUOTA参数限制用户在表空间上的使用大小。

7.特殊的临时表空间,主要存储在使用ORDER BY语句进行排序或者汇总时所需的临时空间。

9i后一般都用TEMP表空间做为临时表空间,不建议用system等特殊空间当临时表空间使用。基表不能在临时表空间上建立。系统指定默认临时表空间后不得使用其他表空间作为临时表空间。

分类1:系统表空间和非系统表空间。系统表空间主要用于存储系统数据,非系统表空间用于存储用户及其他非系统数据。

系统表空间:1.系统表空间对于数据库是必须存在的,不能离线或者只读。一旦瘫痪,整个数据库将无法正常运作。

2.系统表空间包含了全部的数据字典、存储过程、包和触发器。你可以通过ALL_OBJECTS查看所有系统对象。

3.系统表空间可以包含非系统对象,比如用户数据,但是不推荐这样做。

4.系统表空间包含了系统回退段.通过查询 select segment_name,owner,tablespace_name from dba_rollback_seg;

非系统表空间:1.更加灵活的管理数据库、

2.强化数据库安全和优化运行性能

分类2:数据字典管理表空间(Dictionary-Managed Tablespaces)和本地化管理表空间(Locally Managed Tablespaced).

数据字段管理表空间:必须手动为表空间设置各种参数,容易引起磁盘碎片,管理难度较大

本地化管理表空间:8i以上版本使用,区管理全由系统自动进行,磁盘碎片自动消除,管理难度低且效率高。

通过语句:select tablespace_name,extent_management,allocation_type from dba_tablespaces;

一些关于表空间的查询:a.查询表空间内的数据文件select file_id,bytes,maxbytes,tablespace_name,file_name from dba_data_files;b.查询表空间的自由空间相关信息select tablespace_name,sum(bytes),sum(blocks) from dba_free_space group by tablespace_name;

c.查询临时文件的信息select file#,status,name from v$tempfile;

d.查询用户所使用的临时表空间信息select username,temporary_tablespace from dba_users;

段:按照存储数据的不同分成4类:数据段,索引段,回退段,临时段。

数据段:用于存储数据,每建立一个表,就在表空间里面创建一个数据段(CLUSTER聚集除外,聚集2个表只有一个数据段)。表内数据不断增加,就是段增大的过程,从而引起段内区的个数的增加。

数据段信息的查询:select segment_name,tablespace_name,bytes from user_extents;某些数据段分布于多个表空间(表分区):select segment_name,partition_name,tablespace_name from user_extents;索引段:用于存储索引数据,如果创建了索引,就在索引空间内自动创建一个索引段。

查询索引及其相关信息:select a.table_name,a.index_name,uniqueness,column_namefrom user_ind_columns b,user_indexes a where b.index_name=a.index_name and b.table_name = a.table_name and rownum<10;索引分成B+树索引、位图索引和反向索引。一般默认使用B+树索引,在一些只读数据库或者大表查询中可以使用位图索引。所谓的反向索引就是把键值反过来查询。

回退段:用于存储用户数据修改之前的值,生成读一致性,在数据库恢复的时候回退未提交的事务。一个事务只能用一个回退段存储,但是一个回退段可以存储多个事务。在oracle9i后,管理回退段从非常麻烦的事情变成了一个简单事情,因为提供了Undo空间的自动管理,你只要保证undo空间的大小足够即可,不必担心回退段个数、大小之类的事情。是否使用自动管理,可以查看初始化参数UNDO_MANAGEMENT的值是否为AUTO。诺是,则为自动管理。反之诺为MANUAL,则表示使用回退段管理。回退段分成系统回退段和非系统回退段及DEFERED回退段。

系统回退段:数据库创建后,oracle自动创建一个回退段SYSTEM,只能用于存储系统表空间system的回退信息。

非系统回退段:数据库至少含有一个非系统回退段,用于存储非系统表空间的回退信息。

DEFERED回退段:在表空间离线时自动创建,在表空间在线时自动删除,用于存储在离线时产生的回退信息。

查询系统回退段信息:select segment_name,owner,tablespace_name from dba_rollback_segs;select segment_name,tablespace_name,bytes,blocks from sys.dba_segements where segment_type='ROLLBACK';

临时段:用于存储进行排序或者汇总及执行如连接、分组、创建索引等操作的时候需要的临时表空间,用完后自动消失。当内存安排的大小不够排序的时候,自动使用磁盘临时段。可以通过参数 sort_area_size 进行内存排序区大小的查看。

查看临时文件的信息:select file#,status,name from v$tempfile;

区:区或者叫做范围,是磁盘分配空间的最小单位。磁盘按区分配,每次至少分配一个区。随着区数目的增多,所在的段也不断变大,表空间自然也就大起来了。当区的个数超过MAXEXTENTS的限制时候,不能再增加区的个数,段的大小也不能在增大,表数据不能再增加。

查询表空间的存储参数:   select tablespace_name,contents,initial_extent,next_extent,min_extents,max_extents,extent_management,allocation_type from dba_tablespaces;

管理:分成数据字典表空间(9i Release2中取消了)和本地化管理空间。上述查询语句的extent_management表明了管理方式,allocation_type表示管理方式下的区的分配方式。UNIFORM表示区大小为统一大小,SYSTEM表示区大小自动管理。这里管理方式的区别决定了磁盘碎片的管理。在数据字典方式中,会造成很多磁盘碎片,一般需要通过命令ALTER TABLESPACE TEMP COALESCE进行整理。而在本地化管理中,由于区时统一的大小原因或者自动管理,不需要担心这个磁盘问题。

查询用户创建的基表的存储空间大小及存储方法:select initial_extent,next_extent,min_extents,max_extents,pct_increase from user_tables where table_name='XXXX';initial_extent表示分配给段的第一个区大小;next_extent表示下一个分配区的大小。min_extents表示第一次创建段时候分配的区的最小个数;max_extents表示段中区的最大个数。pct_increase表示从第三个区开始后,相对于上一个区所增加的百分比===>next=next*(1+pctincrease).查询数据段中的区分配情况:select segment_name,table_name,extent_id,bytes,blocks from user_extents where segment_name='XXXX';

数据块:数据块是数据库中最小的数据组织单位和管理单位,也是最小的I/O单位。大小由参数DB_BLOCK_SIZE确定,范围在2k-64k之间。对于系统表空间与默认表空间使用且只能使用参数db_block_size指定的数据块,对于其他表空间则可以使用不同的数据块组合。

查询数据块大小:

1.show parameter db_block_size

2.select name,value from v$parameter where name like '%size%;

3.参数文件..数据块通常由块头、表目录、行目录、行数据和空闲空间组成。

可以通过一系列的参数来控制数据块的行为,如空闲率(PCTFREE)、使用率(PCTUSED)、最小事务数(INITRANS)和最大事务数(MAXTRANS).如PCTFREE用于指定块中要保留的空间率,比如取值20%,那么你的块最多存储80%的块空间。这些空闲的空间可以用于已经存在的行修改的时候可能要使用。PCTUSED用于指定块中使用率的限定值。比如取值60%,在没有存储满的时候可以继续插入新的行值。它主要还是用于插入语句。INITRANS指定在每一个数据块中分配的事务入口的初始数,范围1-255,初始为1。MAXTRANS指定在每一个数据块中分配的事务入口的最大数,范围1-255,默认为255。

查询数据块参数设置:select table_name,pct_free,pct_used,ini_trans,max_trans from user_tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Oracle内核技术揭密》是一本深入解析Oracle数据库内核技术的重要参考书籍。该书由国内著名Oracle专家撰写,对于学习和理解Oracle数据库内部实现原理具有重要的指导意义。 书分为多个章节,系统全面讲解Oracle数据库数据库内核相关知识。首先,书详细介绍了Oracle数据库架构及其内部组件的划分、作用和相互关系,为读者理解Oracle数据库内部工作原理打下了基础。然后,书Oracle数据库的存储结构数据物理布局等方面进行了深入探讨,揭示了数据在磁盘上的存储方式及相关的优化技术。此外,书还讲述了Oracle数据库的SQL解析、执行过程以及执行计划的生成和优化等重要内容,这对于理解SQL语句的执行过程以及优化查询性能非常有帮助。 此外,书还涵盖了事务管理、并发控制、容灾备份与恢复等关键技术,以及存储过程、触发器、索引等数据库对象的内部实现原理和优化策略。通过全面而深入地分析Oracle数据库内部工作机制,读者可以更好地理解Oracle数据库的核心技术,从而更有效地进行性能调优和故障排查。 总的来说,《Oracle内核技术揭密》是一本深入探讨Oracle数据库内核技术的权威著作。无论是对于Oracle数据库的初学者还是对于已经有一定经验的专业人士,该书都是一本不可多得的学习资料。通过阅读该书,读者可以深入理解Oracle数据库的内部机制,从而提升自己在Oracle数据库领域的技术水平。 ### 回答2: 《Oracle内核技术揭密》是一本深入解析Oracle数据库内核技术的重要参考书籍。通过阅读该书,读者能够更加全面地了解Oracle数据库的内部工作原理和实现机制。 首先,该书从基础入手,介绍了Oracle数据库的体系结构和组件。读者可以了解到Oracle数据库是如何将数据存储在数据文件、表空间和数据,以及如何通过逻辑和物理结构相结合的方式来管理数据。 其次,该书还详细讲解Oracle数据库的查询优化和执行过程。读者可以了解到Oracle是如何通过解析器、优化器和执行器三个阶段来实现高效的查询处理。同时,书还介绍了Oracle数据库的索引和统计信息,帮助读者更好地理解查询的执行计划和性能优化。 此外,该书还涉及了Oracle数据库的并发控制和事务管理。读者可以了解到Oracle是如何通过锁和事务日志来实现多用户并发访问和数据一致性。此外,书还介绍了Oracle数据库的故障恢复和备份恢复技术,帮助读者了解到如何保障数据的可靠性和可恢复性。 最后,该书还介绍了一些Oracle数据库的高级功能和特性,如分区表、并行处理和逻辑备份等。通过深入学习这些内容,读者可以更好地应对Oracle数据库的复杂情况和应用场景。 总的来说,《Oracle内核技术揭密》是一本系统而全面的Oracle数据库内核技术参考书籍。通过阅读该书,读者可以更加深入地了解Oracle数据库的内部工作原理和实现细节,为设计、开发和管理Oracle数据库提供了有力的支持。 ### 回答3: 《Oracle内核技术揭密》是一本深入介绍Oracle数据库内核技术的著作,该书的作者是郑莉和许晓斌。这本书首先介绍了Oracle数据库体系结构和内核的基本概念,然后详细讲解Oracle实例和数据库的启动和关闭过程。 在接下来的章节,本书详细介绍了Oracle内存结构和各个关键组件的功能,如System Global Area(SGA)、Program Global Area(PGA)和SGA组件(Shared Pool、Buffer Cache、Large Pool、Java Pool和Streams Pool)等。此外,还对于Oracle数据库的锁、事务管理、日志、重做日志和归档等功能进行了详细的说明。 《Oracle内核技术揭密》一书还涵盖了数据库存储结构,包括表空间、段、块和行等概念的解释,并介绍了数据文件和控制文件的存储方式。 此外,本书还介绍了数据库的性能优化和调优技术,讲解了如何通过合理的SQL语句编写和索引设计来提高数据库的查询效率和响应时间。 总的来说,《Oracle内核技术揭密》是一本非常详细、全面的Oracle数据库内核技术指导书,无论是初学者还是有一定经验的数据库管理员都可以从获得很多有关Oracle内核的重要知识和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值