oracle数据库是跨平台的,在一个数据库平台上开发的数据库可以不加修改地移植到另一个操作系统平台
上。因为,oracle不会直接操作底层操作系统的文件,而是提供一个中间层,这个中间层就是oracle的逻
辑结构,它与操作系统的平台无关,而中间层到数据文件的映射通过DBMS来完成。
oracle数据库应用系统通过操作中间件来实现逻辑操作,而逻辑操作到数据文件操作之间是通过DBMS来映
射完成的。这样数据文件对于oracle数据应用系统来说就是通明的。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件( d a t a f i l e )。一个数据
文件只能属于一个表空间。数据文件创建后可改变大小。创建新的表空间需要创建新的数据文件。
数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其他表空间发生联系。
如果数据库对象存储在多个表空间中,那么可以通过把它们各自的数据文件存放在不同磁盘上来对其进行
物理分割。数据库、表空间和数据文件之间的关系如下图所示。
表空间(Tablespace):在逻辑上一个数据库由表空间组成,一个表空间只能属于一个数据库,一个表空
间包含一个或多个操作系统文件,把这些操作系统文件称为数据文件,表空间包含一个或多个段(数据库
是一个逻辑上的概念,它是所有数据库对象和数据的容器,数据库下面是表空间。实际上,数据库中的数
据都存储在表空间中。数据库由多个逻辑空间组成,这些逻辑空间也称为表空间)。
段(segment):是表空间内的一个逻辑存储空间,一个表空间包含一个或多个段,一个段不能跨越表空间,
即一个段只能在一个表空间里,但是段可以跨越数据文件,即一个段可以分布在同一个表空间的几个数据
文件上,一个段有一个或多个区段组成;
区段(extent):区段是段中分配的逻辑存储空间,一个区段由连续的oracle数据库块组成,一个区段只能
属于一个数据文件中。创建一个段时,该段至少包含一个区段。当段增长时,将分配更多的区段给该段,
同时DBA可以手动地向段中添加区段。
数据库块:oracle block,oracle数据库服务器管理存储空间中的数据文件的最小单位就是数据库块。它
是oracle数据库系统输入、输出的最小单位,一个数据库块由一个或多个操作系统块组成。oracle提供了
标准的数据库块尺寸,该尺寸通过初始化参数DB_BLOCK_SIZE来设置,一般为4k或者8看,在创建数据库时
指定。一个数据库应该是操作系统块的整数倍,这样可以避免不必要的I/O。
上面是oracle的逻辑存储结构
物理结构
数据文件(datafile):数据文件是oracle格式的操作系统文件,即.dbf文件等。数据文件的大小决定了
表空间的大小,当表空间不足时,需要增加新的数据文件或者重新设置当前数据文件的大小,以满足表空
间增长的需求。
操作系统块(OS BLOCK):操作系统块依赖于不同的操作系统平台,它是操作系统操作数据文件的最小单
位,一个或多个操作系统块组成了一个数据库块。
在一个数据库中,表空间的数量没有严格的限制,大小为2G的表空间和大小为20M的表空间可以并存。
有几个表空间是所有oracle数据库必备的表空间,它们是:System表空间、临时表空间、还原表空间和默
认表空间。
oracle数据库表表空间分为两类:系统表空间和非系统表空间
系统表空间:数据库创建时自动创建,是每个数据库必须的表空间,满足数据库系统运行时最低的要求。
在用户没有创建非系统表空间时,系统表空间可以存放用户数据或索引,但是这样做会增加系统表空间的
I/O,影响系统效率。
非系统表空间:用户根据业务需求而创建的表空间,功能独立的表空间可以一定程度上提供系统效率。
表空间的管理
对表空间的管理就是对该表空间区段的管理,但用户增加数据时,就需要分配更多的区段给新增的数据使
用。表空间的管理,分为两种方式:
数据字典管理:把每个表空间的使用情况记录在数据字典表中,当分配或撤销表空间的区段时,隐含使用
sql语句对表操作以记录当前表空间区段的使用情况,并且在还原段中就了变化前的区段使用情况,显然这
种方式增加了数据字典的频繁操作,如果一个数据有成千上百个表空间,这样维护起来效率就很低。
本地管理表空间:其思想就是每个表空间管理自己的区段分配,记录区段的使用情况。这种管理方式类似
于一种分布式管理,减轻了数据字典的工作压力。但是创建本地管理的表空间时,不能随意更改存储参数
。
创建表空间的语句如下(必须具有sysdba的权限才能创建表空间):
create tablespace cxm_tablespace
datafile 'F:\oracle\oradata\test\cxm.dbf' size 100M
(目录必须存在,cxm.dbf这个文件不能存在,负责冲突,表空间名和数据文件名可以不一样)
上面的语句创建了一个表空间名为cxm_tablespace的表空间,该表空间只有一个数据文件。
如果想查看表空间信息,可以通过user_tablespaces这个数据字典视图查看(任何用户都可以查看表空间
的信息)。
如果要想查看表空间对应的数据文件信息,可以通过dba_data_files视图查看,例如:
select * from dba_data_files where tablespace_name like '%CXM%'
创建本地管理的表空间如下:
create tablespace cxm_tablespace2
datafile 'F:\oracle\oradata\test\cxm3.dbf' size 100M,
'F:\testSpace\Test2\cxm6.dbf' size 10M
extent management local
uniform size 1M(区段尺寸统一为1M)
(由于不能随意更改存储参数,所以比起数据字典管理表空间的创建更坚决一些)
创建数据字典管理的表空间如下:
create tablespace cxm_tablespace2
datafile 'F:\oracle\oradata\test\cxm.dbf' size 100M,
'F:\testSpace\Test2' size 10M
minimum extent 20k
extent management dictionary
default storage(initial 20k next 20k maxextents 500 pctincrease 0)
(注意:这个语句可能运行部成功,oracle9i第二版只能创建本地管理的表空间,数据字典管理表空间逐步
的被淘汰出去了)
还原表空间
如果某个用户想更改某个属性,在更改的过程中其他用户要查看该数据时,看到的应该是原来的数据,应
该用户正在更改数据,还没有提交,所以为了保证这种读的一致性,oracle设计了还原段,在还原段中存
放更改前的数据。
还原表空间只能存储还原段,不能存储其他任何对象。在创建还原表空间时,只能使用datafile、extent
management子句。
创建还原表空间的语句如下:
create undo tablespace cxm_undo
datafile 'F:\testSpace\Test2\cxm8.dbf' size 10M
临时表空间
临时表空间用于用户的特定会话活动,如用户的排序,排序的中间结果需要存储在某个区域,这个区域就
是临时表空间。如果在创建数据库时,没有创建临时表空间,数据库服务器默认就使用system表空间,由
于临时表空间使用频繁,会不断出现磁盘碎片,显然这样会影响数据库系统的效率,因为system表空间中
存储了数据字典等数据库系统的重要信息。
oracle9i、oracle10g会自动创建一个临时表空间temp。
临时表空间被当前数据库的多个用户共享使用的。
创建临时表空间的语句为:
create temporary tablespace cxm_tem
tempfile 'F:\testSpace\Test2\cxm_temp.dbf' size 10M
如果想查看临时表空间对应的数据文件,可以通过查看动态性能视图v$tempfile来获得,例如:
select * from v$tempfile
如果想查看当前默认的临时表空间,可以使用如下语句:
select * from database_properties where property_name like 'DEFAULT%'
如果想更改当前的默认表空间,可以使用如下代码:
alter database default temporary tablespace cxm_tem
一旦更改,则所有的用户将自动使用更改后的临时表空间作为默认临时表空间
注意:不能删除一个当前使用的默认表空间;不能把默认表空间设置为脱机状态。
分享到:
相关推荐
### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...
### Oracle表空间与数据文件详解 #### 一、Oracle表空间与数据文件的概念 在Oracle数据库中,**表空间**是存储数据的基本单位之一,它是一个或多个数据文件的逻辑集合。表空间提供了数据存储的逻辑视图,而数据...
### Oracle 表空间收缩详解 #### 一、背景与需求 在Oracle数据库管理过程中,合理地管理和优化存储空间是非常重要的工作之一。有时,我们会遇到这样的情况:某个表空间占用的实际物理空间远大于其实际需要的空间,...
"Oracle 表空间创建" Oracle 表空间创建是 Oracle 数据库中的一种基本操作,它允许用户创建一个或多个表空间,以存储数据库中的数据。表空间是 Oracle 数据库的基本存储单元,每个表空间都可以包含多个数据文件和...
在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...
Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...
Oracle 表空间 Oracle 表空间是 Oracle 数据库中用于存储表、索引、约束、触发器等对象的逻辑存储单元。它是 Oracle 数据库的基础组件之一,用于管理和存储数据库中的数据。 1. 创建表空间 创建表空间是指在 ...
本文将详细介绍Oracle中关于表空间的一些关键操作,包括创建、修改、管理和删除表空间的过程,以及如何处理表空间的在线与离线状态,数据文件的管理,以及表空间的扩展策略。 #### 一、建立表空间 创建表空间是...
Oracle数据库系统是企业级数据管理的重要工具,其中表空间(Tablespace)是数据库存储结构的基础单元。本篇文章将深入探讨Oracle表空间的概念、作用、创建方法以及常用的SQL语句,帮助你更好地理解和管理数据库资源...
### 创建Oracle表空间知识点 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织和管理数据文件。一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。Oracle中的表...
在Oracle数据库管理与维护过程中,表空间(tablespace)的操作是一项非常重要的工作。表空间是Oracle数据库中的逻辑存储单元,用于组织和管理数据文件。本文将详细介绍关于Oracle表空间变动时需要注意的关键点,特别...
本文将深入探讨Oracle表空间的备份与恢复,这是数据库管理中至关重要的环节。 首先,了解Oracle中的表空间(Tablespace)概念。表空间是Oracle数据库中逻辑存储结构的基本单位,它由一个或多个数据文件组成,用于...
标题与描述均提到了“六分钟学会创建Oracle表空间的步骤”,这暗示了文章旨在提供一个快速学习如何在Oracle数据库中创建表空间的教程。Oracle表空间是数据库中用于存储数据的一个逻辑容器,每个表空间由一个或多个...
oracle表空间不足报错的解决 。。。。。。。。。。。。。。。。。。。。。。
Oracle 表空间详解 Oracle 表空间是 Oracle 数据库中一个非常重要的概念,它是数据库中存储空间的逻辑概念。由于 Oracle 数据库可以存储大量的数据,但是数据文件大小受操作系统的限制,而过大的数据文件对数据的...
利用DBMS_SPACE包对Oracle 表碎片进行监控与清理,
Oracle 表空间与数据文件 Oracle 表空间是 Oracle 数据库中一个逻辑集合,包含一个或多个数据文件。表空间是 Oracle 数据库中的一个逻辑存储对象,用于存储永久段、临时段和回滚段等数据。 Oracle 表空间分类有...
linux系统下创建oracle表空间和用户权限查询,安装Oracle系统时可以用到。
### Oracle表空间查询与管理命令详解 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。每个Oracle数据库至少包含一个表空间,默认情况下,系统会在创建数据库时自动创建`...
Oracle表空间是数据库的核心组成部分,用于存储数据库对象,如表、索引、视图等。表空间可以是本地管理的,也可以是字典管理的。本地管理的表空间使用位图来跟踪表空间的扩展和空闲空间,并且通常比字典管理的表空间...