我们知道oarcle数据库真正存放数据的是数据文件(datafiles),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组datafiles捻在一起就成为一个表空间。
表空间属性:
一个数据库可以包含多个表空间,一个表空间只能属于一个数据库
一个表空间包含多个数据文件,一个数据文件只能属于一个表空间
表这空间可以划分成更细的逻辑存储单元
Oracle数据库的存储结构:
从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment)。一个段(segment)由多个区间(extent)组成,那么一个区间又由一组连续的数据块(datablock)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block组成的。
Segment(段):段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。
Extent(区间):分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.
查看表空间:
SQL> select * from v$tablespace;
TS# NAME INCLUD BIGFIL FLASHB ENCRYP
---------- ------------------------------------------------------------ ------------ ------ ------
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
查看每个表空间有哪些数据文件:
SQL> desc dba_data_files;
Name Null? Type
----------------------------------------- -------- ----------------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)
查看详细数据文件:
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
----------------------------------------------------------------------------------------------------------------
/ora10/product/oradata/ora10/users01.dbf USERS
/ora10/product/oradata/ora10/sysaux01.dbf SYSAUX
/ora10/product/oradata/ora10/undotbs01.dbf UNDOTBS1
/ora10/product/oradata/ora10/system01.dbf SYSTEM
创建一个表空间:
SQL> create tablespace paul datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;
Tablespace created.
查看我们创建的表空间:
[ora10@localhost ora10]$ pwd
/ora10/product/oradata/ora10
[ora10@localhost ora10]$ ls
control01.ctl control03.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
control02.ctl paul01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
表空间根据对区间(extents)的管理分为两种类型
词典管理表空间(Dictionary-managedtablespaces)
在表空间里,有的区间被占用了,有的没被占用,这些数据是放在数据字典里的。当你对这个表空间进行分配或释放的时候,数据文件里相关的表就会做修改。
本地管理表空间(locallymanagedtablespace)
本地管理表空间不是在数据词典里存储表空间的,由自由区管理的表空间。用位图来自由的管理区间。一个区间对一个位,如果这个位是1表示已经被占用,0表示未被占用。
词典管理空间表示“中央集权治”,本地管理表空间表示“省市自治区”,一个databases表示中国,tablespaces表示一个省或直辖市。词典管理统一由中央调配。而本地管理表示有高度的自治权利,自已各种资源的分配不用上报中央。
Undotablespace
Undo类型的表空间,当你对一张表或一条记录进行修改的时候,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。
创建undo类型的表空间:
SQL>createundotablespaceundo1datafile'/ora10/product/oradata/ora10/paul01.dbf'size20m;
TemporaryTablespaces
临时表空间,相当于一个临时的垃圾场。用于排序操作,比如你要做一次大数据量的查询,但在内存无法存储这么大量的数据,然后会在磁盘上建立一个临时的表空间用记存放这些数据。Oracle就会用这个临时表空间做排序,存储中间结果。
一个全局的临时表空间,可以由多个用户共享,谁需要谁使用。但它只能存放临时的数据,不能包含任何永久性对象。建议用本地管理方式创建这个表空间。
创建临时表空间:
SQL>createtemporarytablespacetempdatafile'/ora10/product/oradata/ora10/paul01.dbf'size20mextentmanagementlocaluniformsize4m;
删除表空间:
删除表空间,使用命令drop tablespace ‘表空间名’ 但是有3个选项需要注意:
INCLUDING CONTENTS:指删除表空间中的segments;
INCLUDING CONTENTS AND DATAFILES:指删除segments和datafiles;
CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。
例:
DROPTABLESPACEFESCO‘表空间名’CONTENTSANDDATAFILESCASCADECONSTRAINTS;
分享到:
相关推荐
### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...
"Oracle 表空间创建" Oracle 表空间创建是 Oracle 数据库中的一种基本操作,它允许用户创建一个或多个表空间,以存储数据库中的数据。表空间是 Oracle 数据库的基本存储单元,每个表空间都可以包含多个数据文件和...
1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成。每个表、索引和其他对象都会被分配到特定的表空间中。理解表空间的工作原理对于管理数据库空间至关...
Oracle数据库系统是企业级数据管理的重要工具,其中表空间(Tablespace)是数据库存储结构的基础单元。本篇文章将深入探讨Oracle表空间的概念、作用、创建方法以及常用的SQL语句,帮助你更好地理解和管理数据库资源...
在Oracle数据库管理中,了解和监控表空间及数据文件的状态对于数据库管理员至关重要。表空间是数据库逻辑结构的一部分,它将数据库对象与物理存储关联起来。本文将详细介绍如何查询Oracle数据库中的表空间和数据文件...
根据提供的文件信息,我们可以深入探讨Oracle表空间管理的相关知识点,包括如何查看表空间的状态、类型、大小等信息,以及如何创建、调整表空间大小、设置自动扩展等。 ### Oracle表空间概念 在Oracle数据库中,表...
在Oracle数据库管理中,表空间(Tablespaces)是组织数据的主要方式,它是数据库逻辑存储结构与物理存储设备之间的桥梁。表空间巡检是数据库管理员(DBA)日常维护工作的重要部分,有助于监控和优化数据库的性能。...
### Oracle表空间管理知识点 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织和管理数据文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间。Oracle中的表...
### Oracle表空间查询与操作方法 #### 一、Oracle表空间基本信息查询 1. **查询Oracle表空间使用情况** ```sql SELECT b.file_id AS file_id, b.tablespace_name AS tablespace, b.file_name AS filename, b...
### Oracle表空间使用情况查询知识点 #### 一、概述 在Oracle数据库管理中,了解表空间的使用情况是非常重要的。这有助于我们优化存储资源、预防空间不足等问题。本篇文章将详细介绍如何通过SQL语句来查询Oracle表...
### Oracle 临时表空间管理与释放脚本解析 在Oracle数据库管理中,临时表空间(Temporary Tablespace)的管理是一项非常重要的任务。合理的管理和优化临时表空间不仅可以提高系统的性能,还可以帮助解决空间不足等...
### ORACLE 修改表空间大小详解 #### 一、问题背景及原因分析 在Oracle数据库管理过程中,经常会遇到因表空间不足导致的各种问题。其中一种常见问题是ORA-01652错误,即“无法在指定表空间扩展临时段”。这通常...
### Oracle 临时表空间详解 #### 一、Oracle表空间概览 在Oracle数据库系统中,数据被组织成多个逻辑单元,这些单元被称为表空间。每个表空间由一个或多个物理磁盘文件(称为数据文件)组成,并且是数据库中的最高...
### Oracle表空间传输步骤详解 #### 一、概述 在Oracle数据库管理中,表空间传输是一种常见的数据库迁移技术,主要用于将一个或多个表空间从一个数据库迁移到另一个数据库。这种技术特别适用于数据量较大的场景,...
从 Oracle 9iR2 开始,Oracle 提供了表/表空间压缩技术,以减少磁盘开销,节省空间,并在某些情况下提高查询性能。 表压缩的工作原理是删除在数据库表中发现的重复数据值,以节省空间。压缩是在数据库的数据块级别...
在Oracle数据库管理中,表空间(Tablespaces)是存储数据对象如表、索引和视图等的基础单元。当遇到“ORA-01653: unable to extend table”这样的错误时,通常意味着数据库尝试扩展一个表,但由于表空间容量不足而...
在Oracle数据库系统中,表空间(Tablespaces)是用来存储数据库对象如表、索引、视图等的主要存储区域。当表空间的存储空间不足时,会导致数据库无法继续写入新的数据,进而影响到数据库的正常运行。本文将详细介绍...
以下是如何在Oracle RAC环境中增加ASM磁盘并创建表空间的详细步骤: 1. **环境准备**: - 使用虚拟化软件如Oracle VM VirtualBox搭建Oracle RAC环境,这里有两个节点:rac1和rac2,分别对应虚拟机CentOS_Oracle_2...
### 调整Oracle内存及调整表空间大小的方法 #### Oracle内存管理 Oracle数据库的内存管理对于确保数据库高效运行至关重要。内存配置不当可能导致性能下降甚至系统崩溃。在默认情况下,Oracle会根据系统的总内存自动...