天天看点

Oracle 表空间详解目录表空间概述对表空间的操作用户表空间限额

<a href="#%E7%9B%AE%E5%BD%95">目录</a>

<a href="#%E8%A1%A8%E7%A9%BA%E9%97%B4%E6%A6%82%E8%BF%B0">表空间概述</a>

<a href="#%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%9A%84%E5%88%86%E7%B1%BB">表空间的分类</a>

<a href="#%E9%BB%98%E8%AE%A4%E8%A1%A8%E7%A9%BA%E9%97%B4">默认表空间</a>

<a href="#%E6%9F%A5%E7%9C%8B%E9%BB%98%E8%AE%A4%E7%9A%84%E6%B0%B8%E4%B9%85%E8%A1%A8%E7%A9%BA%E9%97%B4">查看默认的永久表空间</a>

<a href="#%E6%9F%A5%E7%9C%8B%E9%BB%98%E8%AE%A4%E7%9A%84temp%E8%A1%A8%E7%A9%BA%E9%97%B4">查看默认的TEMP表空间</a>

<a href="#%E6%9F%A5%E7%9C%8B%E9%BB%98%E8%AE%A4%E7%9A%84%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%B1%BB%E5%9E%8B">查看默认的表空间类型</a>

<a href="#%E9%80%BB%E8%BE%91%E7%BB%93%E6%9E%84%E5%88%B0%E7%89%A9%E7%90%86%E7%BB%93%E6%9E%84%E7%9A%84%E6%98%A0%E5%B0%84">逻辑结构到物理结构的映射</a>

<a href="#%E5%AF%B9%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%9A%84%E6%93%8D%E4%BD%9C">对表空间的操作</a>

<a href="#%E6%9F%A5%E7%9C%8B%E8%A1%A8%E7%A9%BA%E9%97%B4%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5">查看表空间使用情况</a>

<a href="#%E6%9F%A5%E7%9C%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8B%A5%E6%9C%89%E7%9A%84%E8%A1%A8%E7%A9%BA%E9%97%B4">查看数据库拥有的表空间</a>

<a href="#%E6%9F%A5%E7%9C%8B%E8%A1%A8%E7%A9%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6">查看表空间中的数据文件</a>

<a href="#%E6%9F%A5%E7%9C%8B%E7%94%A8%E6%88%B7%E6%8B%A5%E6%9C%89%E7%9A%84%E8%A1%A8%E7%A9%BA%E9%97%B4">查看用户拥有的表空间</a>

<a href="#%E5%88%9B%E5%BB%BA%E8%A1%A8%E7%A9%BA%E9%97%B4">创建表空间</a>

<a href="#%E4%BF%AE%E6%94%B9%E8%A1%A8%E7%A9%BA%E9%97%B4">修改表空间</a>

<a href="#%E4%BF%AE%E6%94%B9%E7%94%A8%E6%88%B7%E7%9A%84%E9%BB%98%E8%AE%A4%E5%92%8C%E4%B8%B4%E6%97%B6%E8%A1%A8%E7%A9%BA%E9%97%B4">修改用户的默认和临时表空间</a>

<a href="#%E4%BF%AE%E6%94%B9%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%9A%84%E7%8A%B6%E6%80%81">修改表空间的状态</a>

<a href="#%E4%BF%AE%E6%94%B9%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%9A%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6">修改表空间的数据文件</a>

<a href="#%E5%88%A0%E9%99%A4%E8%A1%A8%E7%A9%BA%E9%97%B4">删除表空间</a>

<a href="#%E7%94%A8%E6%88%B7%E8%A1%A8%E7%A9%BA%E9%97%B4%E9%99%90%E9%A2%9D">用户表空间限额</a>

Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle中信息存储的最大逻辑单元,其下还包含有段、区、数据块等逻辑数据类型。表空间是在数据库中开辟的一个空间,用于存放数据库的对象,一个数据库可以由多个表空间组成。可以通过表空间来实现对Oracle的调优。(Oracle数据库独特的高级应用)

永久表空间:存储数据库中需要永久化存储的对象,比如二维表、视图、存储过程、索引。

临时表空间:存储数据库的中间执行过程,如:保存order by数据库排序,分组时产生的临时数据。操作完成后存储的内容会被自动释放。临时表空间是通用的,所的用户都使用TEMP作为临时表空间。一般只有tmp一个临时表空间,如果还需要别的临时表空间时,可以自己创建。

UNDO表空间:保存数据修改前的副本。存储事务所修改的旧址,即被修改之前的数据。当我们对一张表中的数据进行修改的同时会对修改之前的信息进行保存,为了对数据执行回滚、恢复、撤销的操作。

查看system用户的默认表空间和临时表空间:

用户在登陆后创建数据库对象时,如果没有指定表空间,那么这些数据就会存储到默认表空间。

注意:如果创建用户时,不指定其永久表空间,则会使用默认的表空间。

系统管理员:

普通用户

注意:如果不指定表空间类型,就会默认使用<code>DEFAULT_TBS_TYPE</code>参数指定的表空间类型。

表空间与数据文件:表空间实际上是由若干个数据文件来构成的,数据文件的位置和大小可以由我们自己来决定。数据被存放在表空间中的数据文件中。

Oracle 表空间详解目录表空间概述对表空间的操作用户表空间限额

注意:表空间是一种逻辑数据结构,其下最小的数据块会映射到物理结构的磁盘块中,一个数据块由若干个磁盘块组成。

Oracle 表空间详解目录表空间概述对表空间的操作用户表空间限额

或者由下图来理解:表空间逻辑上有若干个段组成,物理上由多个数据文件组成。

Oracle 表空间详解目录表空间概述对表空间的操作用户表空间限额

表空间的操作方式:

字典管理:Oracle中的数据字典可以存储所有的表空间分配信息,但是如果数据库中所有的空间分配都放在数据字典中。容易引起字典争用,而导致性能问题,这是Oracle调优的方向之一。

本地管理:表空间分配不放在数据字典,而在每个数据文件头部的第3到第8个块的位图块,来管理空间分配。

计算表空间使用情况(考虑了数据文件自动增长情况):

可以通过下面几个系统视图来查看表空间的基本信息:

不同的用户会使用不同的表空间:

系统管理员用户使用<code>dba_tablespaces</code>数据字典来查看。

普通用户使用<code>user_tablespaces</code>数据字典来查看。

基本语法:

注意:如果没有指定数据文件存放的路径,默认会将数据文件存放到Oracle的安装目录下

Example:

查看表空间数据文件的存放路径:表空间数据文件都存放在永久性表空间中

为了方便以后数据的备份和恢复,仅仅将有价值的数据做备份可以提高效率和节省空间。

注意:普通用户没有修改默认表空间的权限,但是可以通过授权来实现普通用户也能够修改默认表空间。

设置表空间的联机或脱机状态:表空间的默认状态是联机状态,如果表空间是脱机状态,那么我们就不能够使用这个表空间了。

设置表空间的只读|可读写状态:表空间默认为可读写状态

注意:如果表空间状态中拥有可read,那么表空间就必须是联机状态的。

增加表空间中的数据文件

注意:如果发现某个表空间存储空间不足时,可以为表空间添加新的数据文件,扩展表空间大小

注意:在添加新的数据文件时,如果同名的操作系统已经存在,ALTER TABLESPACE语句将失败。如果要覆盖同名的操作系统文件时,则必须在后面显示的指定REUSE子句。

调整数据文件的大小

删除数据文件

注意:不能够删除表空间中的第一个数据文件,如果将第一个数据文件删除的话,相当于删除了整个表空间。

注意:如果你希望在删除表空间的同时将表空间中的数据文件一同删除时,需要加上[INCLUDING CONTENTS]

表空间存储限制是用户在某一个表空间中可以使用的存储空间总数。

在创建或修改用户时,可以由参数<code>quota</code>指出。若用户在向表空间存储数据时,超出了此限额,则会产生错误。

错误信息:ORA-01536:space quota exceeded for tablespace tablespacename..’。

可以通过查询字典<code>dba_ts_quotas</code>查看表空间限额信息。

查看用户的表空间配额

注意:若<code>MAX_BYTES=-1</code>表示没有配额限制