表空间和数据文件的管理
基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

基础概念:Oracle数据库、实例、用户、表空间、表之间的关系数据库:Oracle数据库是数据的物理存储。
这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。
其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。
可以看作是Oracle就只有一个大数据库。
实例:一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。
一个数据库可以有n个实例。
用户:用户是在实例下建立的。
不同实例可以建相同名字的用户。
表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件(dbf、ora):数据文件是数据库的物理存储单位。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。
但是表不是有表空间去查询的,而是由用户去查的。
因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!关系示意图:理解1:Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:理解2:理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。
oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。
Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。
Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。
也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。
我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。
就像Java中new出来的实例对象⼀样。
我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。
Oracle数据压缩和表空间大小的处理

4.扩展表空间,表空间扩展有两种方法:增加数据文件;调整当前数据文件的大小或扩展的大小。
(1)增加数据文件ALTER TABLESPACE TESTTBSADD DATAFILE 'D:/ora/datafile/users.ora' SIZE 500MAUTOEXTEND ONNEXT 50MMAXSIZE 2000M;增加了一个500M的数据文件,并且可以自动扩展到2G,每次扩展50M。
(2)增加当前数据文件的大小ALTER DATABASEDATAFILE 'D:/ora/datafile/users.ora'RESIZE 50000M;或者使用file_idALTER DATABASEDATAFILE 10RESIZE 50000M;(3)在使用过程中,如果想改变某个数据文件的最大大小,可以ALTER DATABASEDATAFILE 'D:/ora/datafile/users.ora'AUTOEXTEND ONMAXSIZE 10240M;---------------------------------------------------------------------------------- Oracle中压缩数据节省空间和提高速度添加时间:2007-4-22使用表压缩来节省空间并提高查询性能很多决策支持系统通常都涉及到存储于几个特大表中的大量数据。
随着这些系统的发展,对磁盘空间的需求也在快速增长。
在当今的环境下,存储着数百TB(太字节)的数据仓库已经变得越来越普遍。
为了帮助处理磁盘容量问题,在Oracle9i第2版中引入了表压缩特性,它可以极大地减少数据库表所需要的磁盘空间数量,并在某些情况下提高查询性能。
在本文中,我将向你说明表压缩是如何工作的,以及在构建和管理数据库时如何配置表空间。
我还将基于一些示例测试结构讨论一些性能问题,以帮助你了解使用表压缩预计能获得多大好处。
数据库存储设置与管理

• 创建一个永久性的表空间HRTBS4,区定制
分配,段采用手动管理方式。
– CREATE TABLESPACE HRTBS4 DATAFILE
– 'D:\APP\ADMINISTRATOR\ORADATA\HUMAN_RESOURCE\
– HRTBS4_1.DBF' SIZE 50M
– EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K
• Oracle数据库物理存储结构
精品课件
4
• 数据文件:用于存储数据库中的所有数据; • 控制文件:用于记录和描述数据库的物理存储
结构信息; • 重做日志文件:用于记录外部程序对数据库的
改变操作; • 归档文件:用于保存已经写满的重做日志文件; • 初始化参数文件:用于设置数据库启动时的参
数初始值; • 跟踪文件:用于记录用户进程、数据库后台进
– INDEX01.DBF' SIZE 50M;
精品课件
13
创建大文件表空间
• 一个大文件表空间只包含一个数据文件, 该数据文件可以包含4G(232)个数据块。
• 通过查询数据字典DATABASE_PROPERTIES中 数据库的属性DEFAULT_TBS_TYPE,可以知 道数据库默认创建的是小文件表空间还是 大文件表空间。
精品课件
14
• 创建一个大文件表空间,文件大小为1G,区 的分配采用定制方式。
– CREATE BIGFILE TABLESPACE big_tbs DATAFILE – 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\big01.dbf' – SIZE 1G UNIFORM SIZE 512K;
Oracle Storage

一、基本的Oracle存储结构:表空间与数据文件Oracle数据库中具有两种类型的存储:物理存储和逻辑存储。
上面的Oracle存储结构模型中,可以看出下列要素:∙每个数据库(Database)都必须由一个或多个表空间(Tablespace)组成。
每个表空间都必须属于并且只属于一个数据库。
∙每个表空间都必须由一个或多个数据文件(Datafile)组成。
每个数据文件都必须属于并且只属于一个表空间。
∙每个数据文件都必须由一个或多个操作系统块(Operation System Block)组成。
每个操作系统块都必须属于并且只属于一个数据文件。
∙每个表空间都可以包含一个或多个段(Segment)。
每个段都必须存在并且只能存在于一个表空间内。
∙每个段都必须由一个或多个区间(Extent)组成。
每个区间都必须属于并且只属于一个段。
∙每个区间都必须由一个或多个Oracle数据块(Oracle Block)组成。
每个Oracle 数据块都必须属于并且只属于一个区间。
∙每个区间都必须被定位并且只能定位在一个数据文件内。
数据文件中的空间可以被分配为一个或多个区间。
∙每个Oracle数据块都必须由一个或多个操作系统块组成。
每个操作系统块都可以是并且只能是一个Oracle数据块的部分。
1、物理存储结构物理结构是操作系统操作Oracle数据库时能够看见的结构。
1.1、Oracle数据文件数据文件由下列3部分组成:头部、区间(已分配的空间)以及空闲空间(未分配的空间)。
oracle16数据文件的头部(Header)将其标识为数据库的一部分,并且存储了该数据文件的细节,细节包括数据文件所属的表空间以及最后执行的检查点。
这样,Oracle就能够在启动时检查所有相关文件是否同步。
数据文件的剩余部分由区间和空闲空间组成,通过创建、删除和更改Oracle的段(Segment)逻辑存储组件就可以对这些剩余部分进行管理。
每个Oracle数据文件都只属于一个表空间。
Oracle-undo-表空间管理

Oracle-undo-表空间管理Oracle的Undo表空间管理是Oracle数据库中非常重要而又基础的管理工作之一。
因为数据库中的Undo表空间与事务有着紧密的联系,影响着数据库的性能和稳定性。
本文将对Oracle的Undo表空间管理进行详细介绍,包括Undo表空间的概念、作用、管理方法、优化等方面。
一、Undo表空间的概念Undo表空间是用来存储Oracle数据库中操作的回滚信息,主要的作用是进行事务的回滚和恢复。
在Oracle数据库中,事务的ACID属性可以保证数据的完整性和一致性,而Undo表空间就是为了保证事务的ACID属性而存在的。
在Oracle数据库中,Undo表空间分为两种类型:System Undo表空间和User Undo表空间。
系统Undo表空间是由系统自动创建的一个表空间,用于存储系统级的回滚信息,用户不能自己创建或删除该表空间。
而用户Undo表空间则是由用户自己创建的,用来存储用户级别的回滚信息,一个数据库中可以有多个用户Undo表空间。
二、Undo表空间的作用Undo表空间的作用非常重要,它主要用来完成以下几个方面的功能:1. 事务的回滚当某个事务需要回滚时,Oracle会将该事务所做的修改操作写入到Undo表空间中,然后撤销这些操作来回滚事务。
因此Undo表空间的存储能力和速度直接影响着Oracle数据库回滚事务的性能和效率。
2. 数据库恢复当数据库需要恢复时,Oracle会利用Undo表空间中的回滚信息将数据库恢复到特定的时间点。
因此Undo表空间存储的时间范围和存储能力对数据库恢复能力有着直接的影响。
3. MVCC机制在Oracle数据库中,MVCC(多版本并发控制)机制是一种用来实现并发控制的技术,它需要利用Undo表空间中的回滚信息来实现数据的版本控制。
当多个事务同时对一个数据进行操作时,Undo表空间就派上用场了。
三、Undo表空间的管理方法为了更好地管理Undo表空间,我们需要掌握以下几种管理方法:1. 创建Undo表空间在Oracle数据库中,可以通过语句CREATE UNDO TABLESPACE来创建Undo表空间。
表空间(TABLESPACE)

表空间(TABLESPACE)表空间(TABLESPACE)是ORACLE数据库中最大的逻辑结构。
ORACLE数据库是由一个或多个表空间组成的。
它在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。
从物理上说数据库的数据被存放在数据文件中,而从逻辑上说是被存放在表空间中的。
数据库的逻辑配置实际上就是指表空间的配置。
一、表空间概述表空间是ORACLE数据库中最大的逻辑结构。
数据库的所有对象和方案都被逻辑的保存在表空间中。
(一)表空间的特性与作用数据库管理系统(DBMS)是建立在操作系统(OS)基础上的,它的数据也必须存储在各个文件中,如数据文件、重做日志文件、归档日志文件等。
表不是文件,表不是空间。
表空间是组织结构和分配空间的逻辑结构。
除了数据文件之外,控制文件、重做日志文件、归档日志文件等其他文件都不属于任何表空间。
表空间的特性如下:1.一个数据库可以有多个表空间。
可以在数据库中创建、删除表空间;2.一个表空间只属于一个数据库;3.一个表空间必须要有一个数据文件;4.一个表空间的大小等于其中所有数据文件的大小之和。
数据库的大小等于其中所有表空间的大小之和;5.表空间可以被联机和脱机。
SYSTEM表空间不能被脱机;6.表空间可以在读写、只读状态之间切换;7.每个表空间由一个或多个物理存在的操作系统的数据文件组成。
这种数据文件可以具有固定的大小,或允许其自动变大。
可以在表空间中添加、删除数据文件;8.方案对象、表、索引的数据都被存储在表空间的数据文件中。
一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就可以;9.一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中;10.一个用户使用的表空间的数量是有一定配额的,不能超出这个配额;11.可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。
提高达梦数据库空间使用率方法

提高达梦数据库空间使用率方法【导语】达梦数据库是我国自主研发的一款高性能数据库产品,有效管理和优化其空间使用率,对于保障数据库性能、降低运维成本具有重要意义。
本文将详细介绍几种提高达梦数据库空间使用率的方法,帮助您更高效地使用数据库资源。
一、定期进行空间回收1.利用达梦数据库提供的回收功能,定期对不再使用的空间进行回收。
例如,对于已删除的数据,可以通过回收空间操作将其所占用的存储空间释放,提高空间使用率。
2.回收空间时,注意选择合适的回收策略,如全量回收、增量回收等,以满足不同场景的需求。
二、优化表空间管理1.合理规划表空间,根据业务特点将不同类型的数据存储在不同的表空间中,便于管理和优化。
2.控制表空间的自动扩展,避免无限制地扩展表空间导致空间浪费。
3.对于不再使用的表空间,可以将其删除或将其数据迁移到其他表空间,以释放空间。
三、压缩数据1.对数据进行压缩,可以显著降低数据占用的存储空间。
达梦数据库支持多种压缩算法,如LZ77、LZ78等,可以根据数据特点选择合适的压缩算法。
2.在创建表时,可以指定数据压缩选项,对数据进行实时压缩。
3.对于已存在的数据,可以通过数据迁移工具进行数据压缩,提高空间使用率。
四、使用分区表1.对于大型数据表,可以采用分区表的方式,将数据分散存储在多个分区中。
2.分区表可以降低单个数据文件的大小,提高空间使用率。
3.根据业务需求,合理划分分区键,使得数据分布更加均匀,降低空间浪费。
五、优化索引1.索引可以加快数据查询速度,但过多的索引会占用大量存储空间。
因此,合理创建索引至关重要。
2.定期审查索引的使用情况,对于不再使用或冗余的索引,可以删除或修改。
3.考虑使用函数索引、组合索引等优化索引策略,提高索引空间使用率。
六、监控和调整1.定期监控数据库空间使用情况,了解空间占用较高的表、索引等对象。
2.根据监控结果,调整数据库参数、优化数据存储结构,进一步提高空间使用率。
通过以上方法,可以有效提高达梦数据库的空间使用率,为业务发展提供稳定、高效的数据库支持。