Oracle表空间管理逻辑
- 格式:docx
- 大小:23.29 KB
- 文档页数:6
基础概念:Oracle数据库、实例、用户、表空间、表之间的关系数据库:Oracle数据库是数据的物理存储。
这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。
其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。
可以看作是Oracle就只有一个大数据库。
实例:一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。
一个数据库可以有n个实例。
用户:用户是在实例下建立的。
不同实例可以建相同名字的用户。
表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件(dbf、ora):数据文件是数据库的物理存储单位。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。
但是表不是有表空间去查询的,而是由用户去查的。
因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!关系示意图:理解1:Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:理解2:理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。
表空间(TableSpace)我们知道Oracle数据库真正存放数据的是数据⽂件(Data File),oracle表空间(tablespace)实际上是⼀个逻辑的概念,在物理上是并不存在的,那么把⼀组data files捻在⼀起就成为⼀个表空间。
表空间属性:⼀个数据库可以包含多个表空间,⼀个表空间只能属于⼀个数据库⼀个表空间包含多个数据⽂件,⼀个数据⽂件只能属于⼀个表空间表空间可以划分成更细的逻辑存储单元:Oracle数据库的存储空间结构:从逻辑的⾓度来看,⼀个数据库(database)下⾯可以分多个表空间(tablespace);⼀个表空间下⾯有可以分多个段(segment);⼀个数据表要占⼀个段(segment),⼀个索引也要占⼀个段(segment)。
⼀个段(segment)由多个区间(extent)组成,那么⼀个区间⼜由⼀组连续的数据块(data block)组成,这连续的数据块是在逻辑上是连续的,有可能是物理逻辑上是分散那么从物理的⾓度上看,⼀个表空间由多个数据⽂件组成,数据⽂件是实实在在存在的磁盘⽂件,这些⽂件是由oracle数据库操作系统的block组成的Segment(段):段是指占⽤数据⽂件空间的通称,或数据库对象使⽤的空间的稽核;段可以由表段、索引段、回滚段、临时段、和⾼速缓存段等。
Extent(区间):分配给对象的任何连续块就叫区间;区间也叫扩展,因为当它⽤完已经分配的区间后,再有新的记录插⼊就必须在分配新的区间(即扩展⼀些块);⼀旦区间分配某个对象(表,索引或簇),则该区间就不能再分配给其它的对象1,查看表空间的名称及⼤⼩select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name2、查看表空间物理⽂件的名称及⼤⼩select tablespace_name,file_id,file_name,round(bytes / (1024*1024), 0) total_spacefrom dba_data_filesorder by tablespace_name;select tablespace_name,file_id,file_name,round(bytes / (1024*1024), 0) total_spacefrom dba_temp_filesorder by tablespace_name;3、查看表空间的使⽤情况select sum(bytes) / (1024 * 1024) as free_space, tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT * from DBA_TEMP_FREE_SPACE;SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间⼤⼩(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使⽤空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使⽤⽐",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最⼤块(M)"FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 4 DESC;4、查看/修改Database的Default Temporary TablespaceSELECT PROPERTY_NAME, PROPERTY_VALUEFROM DATABASE_PROPERTIESWHEREPROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;5,--查看表空间是否具有⾃动扩展的能⼒SELECT T.TABLESPACE_NAME,D.FILE_NAMED.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROM DBA_TABLESPACES T, DBA_DATA_FILES DWHERE T.TABLESPACE_NAME = D.TABLESPACE_NAMEORDER BY TABLESPACE_NAME, FILE_NAME;当数据库刚建⽴起来,系统会建⽴⼀个叫做SYSTEM的系统的TableSpace,存放SYS,SYSTEM等User重要的系统数据(ex:数据字典与预存储程序等)建⽴oracle User时,不指定预设的TableSpace,则此User则会以System TableSpace 作为预设的TableSpace,这造成管理上的混乱与严重的效能问题,这是必须注意的TableSpace的类型:Permanent、Undo、TemporaryPermanent TableSpace:创建给AP使⽤的都是。
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数据库体系结构的组成及其关系。
Oracle数据库体系结构由以下几个部分组成:1. 实例(Instance):实例是在计算机内存中运行的一个进程,负责管理数据库的操作。
每个实例都有自己的内存空间和进程,可以同时运行多个实例。
2. 数据库(Database):数据库是一个存储数据的容器,包含了表、视图、索引等对象。
一个实例可以管理多个数据库,每个数据库由一个或多个数据文件组成。
3. 数据文件(Data File):数据文件是用来存储数据库的实际数据的文件,包含了表、索引等对象的数据。
一个数据库可以有多个数据文件,每个数据文件具有独立的文件名和路径。
4. 控制文件(Control File):控制文件是用来记录数据库的结构和状态信息的文件,包括数据库名、数据文件的路径、表空间的信息等。
一个数据库通常有一个或多个控制文件。
5. 日志文件(Redo Log File):日志文件是用来记录数据库的变化操作的文件,包括数据更改、事务回滚等。
日志文件用于实现数据库的恢复和数据的一致性。
每个数据库通常有多个日志文件。
6. 表空间(Tablespace):表空间是数据库中逻辑数据存储的单位,用来管理和组织对象。
每个表空间由一个或多个数据文件组成,不同表空间可以包含不同的数据对象。
7. 段(Segment):段是逻辑存储结构的基本单位,是指数据库中的一个连续空间。
每个表、索引等对象都占用一个或多个段。
8. 区(Extent):区是段的扩展单位,是一组连续的数据块。
一个段由多个区组成。
9. 块(Data Block):块是数据库存储的最小单位,通常是8KB大小。
每个数据文件由多个块组成。
以上组成部分之间的关系如下:- 实例与数据库:一个实例可以管理多个数据库,每个数据库都有自己的实例。
- 数据库与数据文件:一个数据库可以由一个或多个数据文件组成,每个数据文件存储数据库的实际数据。
- 实例与控制文件:一个实例通常有一个或多个控制文件,控制文件记录了数据库的结构和状态信息。
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)是ORACLE数据库中最大的逻辑结构。
ORACLE数据库是由一个或多个表空间组成的。
它在物理上与磁盘上的数据文件相对应(一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间)。
从物理上说数据库的数据被存放在数据文件中,而从逻辑上说是被存放在表空间中的。
数据库的逻辑配置实际上就是指表空间的配置。
一、表空间概述表空间是ORACLE数据库中最大的逻辑结构。
数据库的所有对象和方案都被逻辑的保存在表空间中。
(一)表空间的特性与作用数据库管理系统(DBMS)是建立在操作系统(OS)基础上的,它的数据也必须存储在各个文件中,如数据文件、重做日志文件、归档日志文件等。
表不是文件,表不是空间。
表空间是组织结构和分配空间的逻辑结构。
除了数据文件之外,控制文件、重做日志文件、归档日志文件等其他文件都不属于任何表空间。
表空间的特性如下:1.一个数据库可以有多个表空间。
可以在数据库中创建、删除表空间;2.一个表空间只属于一个数据库;3.一个表空间必须要有一个数据文件;4.一个表空间的大小等于其中所有数据文件的大小之和。
数据库的大小等于其中所有表空间的大小之和;5.表空间可以被联机和脱机。
SYSTEM表空间不能被脱机;6.表空间可以在读写、只读状态之间切换;7.每个表空间由一个或多个物理存在的操作系统的数据文件组成。
这种数据文件可以具有固定的大小,或允许其自动变大。
可以在表空间中添加、删除数据文件;8.方案对象、表、索引的数据都被存储在表空间的数据文件中。
一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就可以;9.一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中;10.一个用户使用的表空间的数量是有一定配额的,不能超出这个配额;11.可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。
Oracle表空间自增长机制1. 概述在Oracle数据库中,表空间(tablespace)是用于存储数据和索引的逻辑结构。
它可以包含一个或多个数据文件(datafile),而数据文件则是物理上存储数据的文件。
为了有效地管理存储空间,Oracle提供了自增长机制,使得表空间可以根据需要自动增加或减少存储容量。
本文将详细介绍Oracle表空间自增长机制的原理、配置和管理方法。
2. 自增长类型Oracle表空间的自增长机制主要有两种类型:自动扩展和手动扩展。
2.1 自动扩展当表空间中的数据文件达到其最大大小时,Oracle会自动扩展该数据文件。
自动扩展可以通过设置表空间的最大大小(MAXSIZE)来限制。
当数据文件达到最大大小时,Oracle会创建一个新的数据文件,并将新写入的数据分配给新的数据文件。
自动扩展还可以通过设置增量大小(INCREMENT BY)来控制每次扩展的大小。
例如,如果设置增量大小为100M,则每次扩展时会新增100M的存储容量。
2.2 手动扩展除了自动扩展外,用户还可以手动地对表空间进行扩展。
手动扩展可以通过执行ALTER TABLESPACE语句来实现。
手动扩展时,可以指定增加的数据文件的大小和位置。
Oracle会在指定位置创建一个新的数据文件,并将新写入的数据分配给新的数据文件。
3. 配置表空间自增长要配置表空间的自增长机制,需要使用ALTER TABLESPACE语句。
下面是一些常用的配置选项:3.1 设置最大大小可以使用以下语法设置表空间的最大大小:ALTER TABLESPACE tablespace_name MAXSIZE size;其中,tablespace_name是要配置的表空间名称,size是最大大小(例如1G、100M等)。
3.2 设置增量大小可以使用以下语法设置表空间的增量大小:ALTER TABLESPACE tablespace_name AUTOEXTEND ON NEXT size;其中,tablespace_name是要配置的表空间名称,size是增量大小(例如100M、1G等)。
oracledb的逻辑结构1. 实例(instance)实例是Oracle数据库的最高层次,它包含了数据库的内存结构和后台进程。
每个Oracle数据库都有一个对应的实例。
实例负责管理数据库的内存和进程,以及处理用户的请求。
2. 数据库(database)数据库是由多个表空间组成的,每个表空间又包含多个数据文件。
数据库是存储数据的物理结构,用于持久化存储数据。
一个Oracle 数据库可以包含多个数据库。
3. 表空间(tablespace)表空间是逻辑上的存储区域,用于组织和管理数据库中的数据。
每个表空间包含多个数据文件,用于存储表和索引等数据库对象。
不同的表空间可以有不同的存储特性和管理策略。
4. 数据文件(data file)数据文件是表空间的组成部分,用于存储表和索引等数据库对象的数据。
一个数据库可以包含多个数据文件,每个数据文件都有固定的大小和位置。
5. 段(segment)段是逻辑上的存储单位,每个段对应一个表、索引或者其他数据库对象。
段由一组连续的数据块组成,用于存储实际的数据。
6. 数据块(data block)数据块是数据库的最小存储单位,每个数据块包含一定数量的字节。
数据库中的数据被分割成多个数据块进行存储和管理。
7. 扩展(extent)扩展是一组连续的数据块,用于分配给段进行存储。
扩展是数据库的分配单位,当段需要更多的存储空间时,会向其分配新的扩展。
8. 逻辑块(logical block)逻辑块是Oracle数据库中数据的逻辑单位,每个逻辑块包含一定数量的字节。
逻辑块是对数据块的逻辑封装,用于提供更高层次的数据管理。
9. 段空间管理(segment space management)段空间管理是指如何分配和管理段的存储空间。
Oracle数据库支持两种段空间管理方式:自动段空间管理(Automatic Segment Space Management, ASSM)和手动段空间管理(Manual Segment Space Management)。
Oracle 逻辑存储结构逻辑存储结构是Oracle 数据库存储结构的核心内容,对Oracle 数据库的所有操作都会涉及到其逻辑存储结构。
数据库的逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。
在逻辑上,Oracle 将保存的数据划分为一个个小单元来进行存储和维护,高一级的存储单元由一个或多个低一级的存储单元组成。
Oracle 的逻辑存储单元从小到大依次为:数据块(DA TA BLOCKS )、盘区(EXTENT )、段(SEGMENTS )和表空间(TABLE SPACES ),图2-2显示了各逻辑单位之间的关系。
数据库...表空间表空间段段盘区数据块盘区数据块段段数据库...表空间表空间段段盘区数据块盘区数据块段段图2-2 数据库的逻辑存储组成由图2-2可知,Oracle 数据库由多个表空间组成,而表空间又由许多段组成,段由多个盘区组成,盘区又由多个数据块组成。
1 数据块数据块是Oracle 用来管理存储空间的最小单元,也是执行数据库输入输出操作时的最小单位。
相对应地,操作系统执行输入输出操作的最小单位为一个操作系统块的大小。
在操作系统中,执行I/O 操作是以操作系统块为单位,而在Oracle 中,执行的I/O 操作以Oracle 数据块为单位。
Oracle 块的大小是操作系统块大小的整数倍。
以Windows NT 操作系统为例,NTFS 格式的磁盘分区一般为4KB 大小,因此Oracle 块的大小为8KB 等。
数据块的标准大小由初始化参数DB_BLOCK_SIZE 确定,具有标准大小的块被称为标准块。
Oracle 支持在同一个数据库中使用多种大小的块,与标准块大小不同的块称为非标准块。
可以通过查询V$PARAMETER 数据字典,可以获得参数DB_BLACK_SIZE 的值,该参数值同时也是数据块的尺寸大小。
例如:SQL> select name,value2 from v$parameter where name ='db_block_size';NAME V ALUE--------------------------- --------------------------db_block_size 8192在数据块中可以存储各种类型的数据,如表数据、索引数据、簇数据等。
表空间含义:表空间是数据库的逻辑组成部分。
从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成1,oracle 中逻辑结构包括表空间、段、区和块。
说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle 块构成的这样的一种结构,可以提高数据库的效率。
表空间用于从逻辑上组织数据库的数据。
数据库逻辑上是由一个或是多个表空间组成的2,创建表空间:create tablespace data01 datafile 'd:\test\dada01.dbf' size 20m uniform size 128k;或SQL> create tablespace lqb datefile 'e:\lqb.dbf' size 50M autoextend on next 50M maxsize unlimited extend mangement local;-------------extend mangement local;本地管理表空间。
autoextend on next 50M maxsize unlimited 在50M后最大的扩展时没有限制的3,第3步:创建用户并指定表空间*/ create user USERNAME identified by PASSWORD default tablespace USER_DATE temporary tablespace user_temp;-------------temporary 临时的,暂时的4,如何将表移动到指定表空间alter table TABLE_NAME move tablespace TABLESPACE_NAME;如何将索引移动到指定的表空间alter index INDEX_NAME REBUILD tablespace TABLESPACE_NAME;5,改变表空间的状态a,使表空间脱机alter tablespace 表空间名offline; b,使表空间联机alter tablespace 表空间名online; c,只读表空间alter tablespace 表空间名read only; (修改为可写是alter tablespace 表空间名read write;)6, 知道表空间名,显示该表空间包括的所有表select * from all_tables where tablespace_name='表空间名';7,知道表名,查看该表属于那个表空间select tablespace_name, table_name from user_tables where table_name='emp';8,扩展该表空间,为其增加更多的存储空间。
实验3 Oracle逻辑存储结构
一、实验环境
Oracle 10g
二、实验目的
(1)了解Oracle逻辑存储结构。
(2)掌握Oracle表空间管理。
(3)学会利用OEM管理表空间。
三、实验内容
(1)创建表空间
(2)编辑表空间
(3)查看表空间信息
(4)删除表空间
四、实验步骤
(1)创建表空间MyTblSpace
①选择OEM管理选项的“表空间项”
②单击“创建”按钮
③填写所建表空间的基本信息(按下图填写)
④单击“添加”按钮,将MyTblSpace表空间关联到物理文件(按下表填写)
⑤单击“确定”按钮,完成MyTblSpace表空间的创建
(2)编辑MyTblSpace表空间
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击“编辑”按钮
④单击上图中红色框框起的连接,将存储改为自动扩展,按下图填写后单击“继续”按钮
(3)查看表空间信息
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击上图中红色框框起的连接,可查看MyTblSpace表空间的信息。
(4)删除MyTblSpace表空间
①选择OEM管理选项的“表空间项”
②搜索“名称”文本框填写“MyTblSpace”并单击“开始”按钮
③单击“删除”按钮
④选中“从操作系统中删除关联的数据文件”,并单击“是”按钮。
oracle自动扩展表空间原理Oracle自动扩展表空间原理引言在Oracle数据库中,表空间是逻辑存储结构,用于存储数据库中的对象,如表、索引等。
当表空间的存储空间不足时,就需要进行扩展。
本文将以浅入深的方式介绍Oracle自动扩展表空间的原理。
什么是自动扩展表空间自动扩展表空间是指在表空间的存储空间不足时,Oracle数据库自动进行空间的扩展,以满足数据的存储需求。
这种自动扩展表空间的机制,提高了数据库的可用性和性能。
自动扩展表空间的原理自动扩展表空间的原理主要包括以下几个方面:1. 数据字典的管理Oracle数据库使用数据字典来管理表空间的信息。
数据字典是一个系统表,它包含了数据库中所有对象的元数据信息。
在自动扩展表空间的过程中,数据字典记录了表空间的当前大小、剩余空间等信息。
2. 自动扩展参数的设置Oracle数据库中有一些参数用于控制自动扩展表空间的行为。
其中包括AUTOEXTEND和NEXT参数。
AUTOEXTEND参数用于指定当表空间的空间不足时,是否自动进行扩展。
NEXT参数用于指定每次扩展的大小。
3. 自动扩展策略自动扩展表空间的策略可以分为两种情况:均匀扩展和不均匀扩展。
•均匀扩展:当表空间的剩余空间小于一定阈值时,自动进行均匀扩展,即每次扩展的大小相同。
•不均匀扩展:当表空间的剩余空间小于一定阈值时,根据实际需求自动进行不均匀的扩展,即每次扩展的大小可以不相同。
自动扩展策略的选择需要根据实际情况来定,以保证数据库的性能和空间的可用性。
4. 自动扩展的触发机制自动扩展表空间的触发机制主要包括两种:增量触发和阈值触发。
•增量触发:当表空间的存储空间小于一定百分比时,自动进行扩展,扩展的大小为设置的增量。
•阈值触发:当表空间的剩余空间小于一定阈值时,自动进行扩展,扩展的大小可以根据实际情况设定。
增量触发和阈值触发的机制可以根据实际需求来选择,并可以结合使用。
结论自动扩展表空间是Oracle数据库提供的一个重要功能,能够有效地提高数据库的可用性和性能。
Oracle⽤户和模式,表空间oracle ⽤户与表空间关系oracle⽤户与表空间关系⽤户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于⼀个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放⼊A和B3. 仓库不属于任何商家4. 商家都有⼀个默认的仓库,如果不指定具体仓库,商品则放到默认的仓库中oracle中⽤户的所有数据都是存放在表空间中的,很多个⽤户可以共⽤⼀个表空间,也可以指定⼀个⽤户只⽤某⼀个表空间。
表空间:创建表空间会在物理磁盘上建⽴⼀个数据⽂件,作为数据库对象(⽤户、表、存储过程等等)的物理存储空间;⽤户:创建⽤户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建⽤户后,可以在⽤户上,创建表、存储过程等等其他数据库对象;表:是数据记录的集合;创建过程:表空间--->⽤户--->表;所属关系:表空间包含⽤户包含表;所以在oracle下建⽴建表空间,建⽤户,设置⽤户的默认表空间,在⽤户下建表;--创建数据表空间create tablespace CICIloggingdatafile 'D:\oraclexe\app\oracle\oradata\CICI\CICI.DBF'size 32mautoextend onnext 32m maxsize 2048mextent management local;--创建⽤户并指定表空间CREATE USER cici IDENTIFIED BY ciciPROFILE DEFAULTDEFAULT TABLESPACE CICIACCOUNT UNLOCK;-- 为⽤户赋予权限GRANT connect, resource TO cici;grant create session to cici;查询数据库当前进程的连接数:select count(*) from v process; 查看数据库当前会话的连接数: select count(*) from v session;查看数据库的并发连接数:select count(*) from v session where status='ACTIVE'; 查看当前数据库建⽴的会话情况: selectsid,serial#,username,program,machine,status from v session;查询数据库允许的最⼤连接数:select value from v$parameter where name = 'processes';Oracle⽤户和模式的区别以下来⾃另⼀⽂:A⽤户是表table1的属主,B⽤户要查询table1中的数据1、⽤户A给⽤户B授权查询权限(⽤户B登录数据后可以查询,select * from A.table1,必须显⽰写上属主才能查询)2、⽤户A给table1建同义词,查询table1时,可以直接select * from table1,隐藏掉table1的属主create orreplace synonym lsfapcopr.tsysparameter for lsfapdata.tsysparameter;1、属主(owner)⽤简单的话来说就是数据库的⽤户。
oracle表空间的概念和作用
Oracle表空间是逻辑上的一个概念,用于组织和管理数据库中的表、索引、存储过程、视
图等数据库对象。
作用如下:
1. 数据存储:表空间是物理存储数据库对象的地方,包括表、索引、数据文件等。
通过在不同
的表空间存储不同的数据库对象,可以对数据进行组织和管理。
2. 空间管理:通过表空间可以对数据库中的数据进行逻辑上的划分,方便进行空间管理和监控。
可以通过创建多个表空间在不同的磁盘上存储数据,提高数据库的性能和容量。
3. 管理对象:可以通过分配不同的表空间给不同的数据库用户,实现对数据库对象的权限管理。
不同的用户可以在自己的表空间中创建、修改和删除数据库对象。
4. 数据备份和恢复:使用表空间可以方便地进行数据备份和恢复。
可以根据需要备份或恢复整
个表空间,而不必担心其他表空间中的数据。
5. 性能优化:通过合理划分表空间可以提高数据库的性能。
可以将相互关联的表放在同一个表
空间中,减少物理I/O操作和提高查询性能。
总之,表空间的概念和作用是为了更好地管理和组织数据库中的数据,提高数据库的性能和管
理效率。
oracle表空间释放原理Oracle表空间的释放原理主要是通过一系列的管理和操作,使表空间中的数据文件得以重新利用,从而释放存储空间。
以下是Oracle表空间释放的原理和步骤:1. 数据文件的重新利用:当表空间中的数据被删除或被标记为可删除时,这些数据所占用的数据文件空间可以被重新利用。
Oracle会自动回收这些空间,并可供其他数据使用。
2. 自动存储管理:Oracle的自动存储管理(Automatic Storage Management,ASM)可以自动管理和释放表空间中的空间。
当表空间中的数据被删除或过期时,ASM会自动回收这些空间。
3. 手动管理:管理员也可以手动执行释放表空间的命令。
例如,可以使用`ALTER TABLE`语句来删除未使用的列,从而释放表空间。
或者使用`SHRINK SPACE`命令来缩小表的大小,以释放未使用的空间。
4. 重新整理表空间:当表空间中的数据文件需要重新整理时,可以使用`ALTER TABLESPACE`命令来重新组织数据文件中的数据。
这样可以确保数据文件中的空间得到充分利用,并释放出未使用的空间。
5. 移动或重建索引:有时,表空间的释放可能需要移动或重建索引。
因为索引的存储位置和表是紧密相关的,所以当表的空间发生变化时,索引的位置也可能需要相应地进行调整。
6. 清理临时表:如果表空间中包含临时表,那么在释放表空间之前,需要清理这些临时表。
临时表的空间在数据库关闭时会自动被清理,但如果数据库处于运行状态,则需要手动清理临时表的空间。
总的来说,Oracle表空间的释放原理是通过回收和重新利用数据文件的空间,以及管理员的手动管理和操作,来实现存储空间的释放和再利用。
这些操作有助于提高数据库的性能和管理效率。
ORACLE体系结构逻辑结构-表空间、段、区和数据块转⾃:⼀、Oracle的逻辑结构Oracle的逻辑结构是⼀种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是⾯向⽤户的,⽤户使⽤Oracle开发应⽤程序使⽤的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。
1.数据块(Data Blocks)1.1 数据块是Oracle最⼩的存储单位,Oracle数据存放在“块”中。
⼀个块占⽤⼀定的磁盘空间。
特别注意的是,这⾥的“块”是Oracle的“数据块”,不是操作系统的“块”。
1.2 Oracle每次请求数据的时候,都是以块为单位。
也就是说,Oracle每次请求的数据是块的整数倍。
如果Oracle请求的数据量不到⼀块,Oracle也会读取整个块。
所以说,“块”是Oracle读写数据的最⼩单位或者最基本的单位。
1.3 块的标准⼤⼩由初始化参数DB_BLOCK_SIZE指定。
具有标准⼤⼩的块称为标准块(Standard Block)。
块的⼤⼩和标准块的⼤⼩不同的块叫⾮标准块(Nonstandard Block)。
1.4 操作系统每次执⾏I/O的时候,是以操作系统的块为单位;Oracle每次执⾏I/O的时候,都是以Oracle的块为单位。
1.5 Oracle数据块⼤⼩⼀般是操作系统块的整数倍。
1.6 数据块的格式(Data Block Format)块中存放表的数据和索引的数据,⽆论存放哪种类型的数据,块的格式都是相同的,块由块头(header/Common and Variable),表⽬录(Table Directory),⾏⽬录(Row Directory),空余空间(Free Space)和⾏数据(Row Data)五部分组成块头(header/Common and Variable):存放块的基本信息,如:块的物理地址,块所属的段的类型(是数据段还是索引段)。
表空间(Tablespace)——为数据库提供使用空间的逻辑结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件。
本地管理表空间(Locally Managed Tablespace简称LMT)——8i以后出现的一种新的表空间的管理模式,通过本地位图来管理表空间的空间使用。
字典管理表空间(Dictionary-Managed Tablespace简称DMT)——8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间。
本地化管理:就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。
每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化。
本地化管理的表空间的创建过程:语法:CREATE TABLESPACE 表空间名字DATAFILE ’数据文件详细信息’[EXTENT MANAGEMENT { LOCAL{AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ]关键字EXTENT MANAGEMENT LOCAL 指定这是一个本地化管理的表空间。
对于系统表空间,只能在创建数据库的时候指定EXTENT MANGEMENT LOCAL,因为它是数据库创建时建立的第一个表空间。
在8i中,字典管理还是默认的管理方式,当选择了LOCAL关键字,即表明这是一个本地管理的表空间。
当然还可以继续选择更细的管理方式:是AUTOALLOCATE 还是UNIFORM.。
若为AUTOALLOCATE,则表明让Oracle来决定区块的使用办法;若选择了UNIFORM,则还可以详细指定每个区块的大小,若不加指定,则为每个区使用1M大小。
本地管理表空间的优点:1)减少了递归空间管理本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。
并及时做更新。
这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间管理,提高了管理效率。
同时由于本地管理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间管理,提高了数据库性能。
2)系统自动管理extents大小或采用统一extents大小本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。
这两种分配方式都提高了空间管理效率。
3)减少了数据字典之间的竞争因为本地管理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。
4)不产生回退信息因为本地管理表空间的空间管理除对表空间的额度情况做更新之外不修改其它任何数据字典表,因此不产生回退信息,从而大大提高了数据库的运行速度。
5)不需合并相邻的剩余空间因为本地管理表空间的extents空间管理会自动跟踪相邻的剩余空间并由系统自动管理,因而不需要去合并相邻的剩余空间。
同时,本地管理表空间的所有extents还可以具有相同的大小,从而也减少了空间碎片。
6)减少了空间碎片7)对临时表空间提供了更好的管理表空间管理方式转换:字典管理表空间每当表或其他对象需要扩大的时候都检查其数据字典以确保有可用的空间分配给对象,然后给对象分配一个新区段并更新其可用空间信息。
本地管理表空间保存数据文件本身的空间管理信息,而且表空间自动跟踪每个数据文件块的可用或已用状态。
在事务比较多的数据库中显然字典管理每次插入数据时都会检查数据字典,这就使得数据库性能有所损耗。
1)命令方式转移。
首先你要新建一个oracle表空间,在oracle 10g以后默认都是采用本地管理表空间的。
对于表空间的转移使用命令:ALTER TABLE temp MOVE TABLESPACE new_temp;对于索引你需要重建:ALTER TABLE index REBUILD TABLESPACE new_index;显然上面的方法并不适用于对system表进行转换,因为你不能建立2个同名的system 表。
2)采用oracle提供的PL/SQL数据包中的DBMS_SPACE_ADMIN.在转换system表前,你必须把所有的其他表空间转换为本地管理。
EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace");——转行表空间然后同样的方法将system表空间也进行转换。
EXECUTE dbms_space_admin.tablespace_migrate_to_local("system");使用这种方法很好,但是它建立的表空间没有automatic segment space managerment 选项,所有字典管理表空间都是用默认手动段空间管理,而且在转换为本地管理的表空间是不能进行修改。
还有一个缺点,就是表空间如果存在空间碎片的话,此方法也不能解决碎片问题。
管理表空间的几个基本准则1.使用多个表空间使用多个表空间是有好处的,从硬件上说:我们可以将不同应用的数据存放在不同的表空间内,并且放在不同的分区上,这样可以防止多个应用抢占磁盘的I/O资源,另外当磁盘有损坏时不会同时影响到多个应用。
从数据库上说:使用多个表空间可以将不同的用户数据从数据字典中分离,以减少一个数据文件的数据字典对象和模式对象之间的竞争。
同样的临时表空间也是需要创建多个,用来匹配表空间,保证在执行操作过程中,得到更优化的响应。
2.指定表空间的存储参数这个主要是针对不同的特殊应用来做(比如只做查询的表空间),暂时没研究。
一般的应用就让oracle自己管理吧。
3.为表空间指定限额合理的限额对表空间的利用率是有很大帮助的,如果一个只会用到20M的空间,而你却给它分配几百M,是不是就成为一个很严重的资源浪费。
另外要提的是当表空间不够用的时候,需要做的是增加表空间所在文件的数据文件的大小,或者新建几个比较大的数据文件,而不是创建很多个比较小的数据文件,这么做理由应该是很好理解的。
值得注意的表空间存储参数:MINIMUM:CREATE TABLESPACE的一个参数,它能影响表空间段的分配,换句话说是能影响到表空间中空闲空间碎片的一个参数,当为它指定大小后,它能确保所有空闲的或者已分配的盘区的大小一定是它的倍数,以K或者M计算,系统的默认值似乎是64K。
ALTER TABLESPACE语句的限制:ALTER TABLESPACE语句可以用来修改一个表空间的存储参数,但是它不能用来修改INITIAL和MINEXTENTS,一个表空间的默认参数的新值只能影响到将来该表空间为段分配的盘区,而已有分配的还是照创建时的设定值。
因此一旦设定了默认参数,最好不要随意修改。
合并表空间中的空闲空间:先来看看空闲空间是如何存储的:一个表空间的空闲空间是一些相邻的空闲块构成的,这些空闲块的大小不用说当然是由MINIMUM设定的,当需要创建一个新的表空间存储段的时候,系统会在这些连续的空闲块中寻找大小大于新存储段大小的区间进行创建,而当一个表空间存储段被取消时它的空间将直接被标记成空闲块,这样就会造成表空间中,连续的空闲块大小越来越小,越来越不连续,那么在之后需要创建新的表空间段时,就无法保证新的表空间段的空间是连续的块,当然oracle会自动去做合并这个事,那我们可以通过管理来减轻系统的负担。
手动合并空闲的空间:ALTER TABLESPACE ... COALESCE 这个语句用来合所有的空闲空间,起到的作用类似于WINDOWS的磁盘整理,对操作者的权限要求是有 ALTER TABLESPACE 权限(似乎是句废话,但是如果发现无法执行的时候,不妨GRANT ... ALTER TABLESPACE),不过这条语句不能用来合并一个表空间中不同盘区的所有空闲空间,如果要做到所有盘区的空闲空间的整理,除非导出空间数据再重新创建表空间再导入数据,而且最好只有一个盘区。
那么如何才能了解表空间中空闲空间的分布呢(就是如何监控空闲空间)?有几个视图帮我们记录了这些数据:DBA_FREE_SPACE 、 DBA_FREE_SPACE_COALESCE。
我们要做的就是在上面做查询,得到某个表空间中空闲空间的分布:SELECT BLOCK_ID, BYTES, BLOCKS, FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME = '**' ORDER BY BLOCK_ID; 结果显而易见。
另外表空间的管理还有设置表空间是否联机。
表空间可以有两种状态:脱机和联机,什么意思?脱机就是证明这表空间虽然存在但是它不能被使用,联机则相反。
修改语句就是:ALTER TABLESPACE ……[ONLINE/OFFLINE]。
使用只读表空间只读表空间:从字面意思理解就是一个只能执行查询等不影响表空间内存储的数据的事务的一个表空间。
那现在来看看它的定义:只读表空间的主要目的是消除执行数据库大量的静态部分的备份和恢复的需要。
因此只读表空间应该有如下特性:•任何用户都不可以在表空间创建或修改数据•没有回滚段•可以随意拷贝,甚至刻录到光盘中那么如何使一个表空间变成只读状态呢?我们知道任何一个表空间在创建后默认都是可读写状态,我们就需要改变这种状态:ALTER TABLESPACE ……READ ONLY;这条命令需要用户拥有ALTER/MANAGE TABLE 权限。
要设定一个表空间成为只读表空间需要注意几点:•表空间必须是联机的•表空间没有包括任何的活动回滚段•表空间不能是SYSTEM(正是因为SYSTEM总是有活动的回滚段)•该表空间没有涉及的联机备份,因为在备份的最后会要求更新表空间中所有的头文件新特性:在使用ALTER TABLE ……READ ONLY;之前不需要等待表空间完成所有的事务,系统会自动转入过渡的只读模式,该模式将阻止一切新的事务进行,但是允许现有事务进行提交和回滚。
注意:过渡状态只在初始化参数PATIBLE(和数据库版本有关的参数)的值为8.1.0以上才会出现,如果是小于8.1.0的值,当READ ONLY语句会在有活动的事务的情况下失败。