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;

时间: 2024-07-30 13:57:25

Oracle数据逻辑组件的相关文章

Oracle数据访问组件ODAC的安装方法

Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库软件的电脑上完成对Oracle数据库的访问. 工具/原料 ODAC安装包 步骤1. 下载ODAC安装包 到Oracle官方网站下载ODAC安装包.在网页上找到你要的版本.我下载的是: 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows

Oracle 数据集成的实际解决方案

就针对市场与企业的发展的需求,Oracle公司提供了一个相对统一的关于企业级的实时数据解决方案,即Oracle数据集成的解决方案.以下的文章主要是对其解决方案的具体描述,望你会有所收获. Oracle 数据集成解决方案 Oracle数据集成解决方案用于在SOA.BI和数据仓库环境中构建.部署和管理以实时数据为中心的架构,包含了Oracle数据集成的所有要素--实时数据移动.转换.同步.数据质量.数据管理和数据服务--能确保各个复杂系统的信息及时.准确.一致. 通过使用Oracle数据集成,企业将

oracle(数据备份)

1 --oracle数据备份(三种方法) 2 --1.逻辑备份与恢复:用Oracle提供的工具,导入/导出(exp,imp),数据 3 --泵导入/导出(impdp,expdp),装入器(SQL*Loader) 4 --2.脱机备份与恢复:指在关闭数据库的情况下对数据库文件的物理备份与 5 --恢复,是最简单,最直接的方法,也称为冷备份与恢复 6 --3.联机备份与恢复:指在数据库处于打开的状态下(归档模式)对数据库进 7 --行的备份与恢复,只有能联机备份与恢复的数据库才能实惠不停机地使用.

Oracle数据库面试题(转)

1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 微观上: 从数据类型,数据库的结构等等回答 2. 如何使用Oracle的游标? 1).  oracle中的游标分为显示游标和隐式游标 2

oracle 数据块介绍 1

ORACLE DATA BLOCK oracle data block是数据库管理数据文件的最小单元. 在物理层面,oracle data file保存在操作系统上,最小i/o单元是操作系统块,oracle data block是oracle db逻辑最小i/o单元,其结构和系统块不同,大小是系统块的整数倍,如图: DATA BLOCK SIZE oracle db都会配置db_block_size参数,在建库时确定oracle db的默认data block size的大小.建库后数据库默认数

oracle ora-01578 ORACLE 数据块损坏 (文件号 4, 块号 840339)

ORA-01578是 数据块物理坏块/损坏的一种,不同于逻辑损坏/坏块,一般 会伴随ORA-1110出现,一旦ORACLE读取到存在损坏的块就会报出Caused by: java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 4, 块号 840339)ORA-01110: 数据文件 4: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' 解决方法如下:1.使用DBV检查数据文件,在cmd目录下直接输入d

使用sqluldr2实现将Oracle数据无落地快速导入Greenplum数据库

环境信息: Greenplum:Greenplum Version: 'postgres (Greenplum Database) 4.3.8.2 build 1' Oracle:Release 11.2.0.1.0 Production 1.       Oracle客户端部署 在使用sqluldr2工具之前,首先需要在Greenplum(以下都称为GP)的Master节点部署Oracle客户端,因为sqluldr2需要使用libclntsh.so等共享库. 假如你想省事的话,也直接从Orac

Oracle数据块实现原理深入解读(转)

Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整数个(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE指定的.除此之外,用

Oracle 数据泵导入导出总结

Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常运维的数据库对象少则几千,多则几万甚至几十万,所以传统exp/imp就会非常耗时,而数据泵方式就因此脱引而出,下面就详细总结一下数据泵的使用方法,希望能给初学者带来帮助. 一.新建逻辑目录 最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\oracleData”(