http://www.cnblogs.com/woody-wu/archive/2009/08/05/1539896.html
表空间是个逻辑概念。
表空间是ORACLE的最大逻辑结构。表空间是组织数据和分配空间的逻辑结构。
特性:
一个表空间有多个数据文件组成,但一个数据文件只属于一个表空间
一个数据库可以有多个表空间,可以在数据库中创建,删除表空间。
一个表空间只属于一个数据库,
一个表空间的大小等于所有数据文件的大小之和。
表空间可以联机,脱机(系统表空间和带有回滚段的表空间不能OFFLINE)
数据库对象、表、索引的数据被存储在表空间的数据文件中。
一个用户默认使用一个表空间
作用:
控制数据库所占的磁盘空间。
表是SEGMENT的一种。
表空间分类:
表空间
作用
系统表空间(SYSTEM和SYSAUX)
此表空间必须存在,一般用户存放数据字典表
临时表空间(TEMP)
用户排序,分组,索引等
撤消表空间(UNDO)
用户ROLLBACK,从逻辑中恢复(可以创建多个表空间,但只能激活一个表空间)
表空间的区,段管理方式
表空间是按区和段空间进行管理。
表空间的管理方式
1. 字典管理方式:使用数据字典来管理存储空间的分配,当表空间分配新的区、或者回收已分配的区时,ORACLE会对数据字典对应的表进行查询、更新。且使用单线程,速度慢,并且回产生回退和重做信息。
(注意:在字典管理方式下,如果对某个表进行更新,这是回产生存储操作,而该操作又回产生回滚和重做操作,导致对回滚段和重做日志文件进行读写,从而又产生存储管理操作,因此形成递归现象)
2. 本地管理方式:ORACLE 9i默认方式,表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中,而与数据字典无关。表空间为每个数据文件维护一个位图结构,用于记录表空间的区分配情况。当表空间分配新的区、或者回收已分配的区时,ORACLE会对文件中的位图进行更新,所以不会产生回滚和重做信息。
优点:
(1) 提高存储管理的速度和并发性。
(2) 产生磁盘碎片
(3) 不产生递归管理
(4) 没有系统回滚段
通过dba_tablespaces可以查看各个表空间的区、段管理方式;
select TABLESPACE_NAME,STATUS,EXTENT_MANAGEMENT,ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces
表空间的状态:
1. 读写状态
只读(READ-ONLY):任何人无法写入数据,无法修改数据。
读写(READ-WRITE):任何有权限的用户都可以读写。
修改为只读:
ALTER TABLESPACE WORKDATA01 READ ONLY(此TABLESPACE过程在下次启动时候依然为只读)
如果此时插入数据则出现如下错误:
1. 脱机状态
正常模式(NORMAL):进入脱机时,必须保证该表空间的数据文件处于联机,ORACLE会执行一个CHECKPOINT,以便SGA区中的脏数据都能写入数据文件中。然后在关闭表空间的所有文件。下一次启动时候就不用进行数据库恢复了。
临时模式(TEMPORARY):不须保证该表空间的数据文件处于联机,如果某个数据文件不可用,则回忽略错误,进入TEMPORARY 模式,ORACLE会执行一个CHECKPOINT,下一次启动时候可能需要进行数据库恢复
立即模式(IMMEDIATE):ORACLE会执行一个CHECKPOINT,直接将该表空间的所有数据文件都设置为脱机状态,恢复为联机时必须进行数据库恢复
用于恢复模式(FOR RECOVER):如果要对表空间进行基于时间的恢复,可以使用这模式,
然后DBA就可以进行备份的数据文件来覆盖原有的数据文件,而后根据这些数据文件上,利用归档日志,就可以将表空间恢复为某个时间点的状态。
演示将表空间脱机:
ALTER TABLESPACE USERS OFFLINE NORMAL(默认)
从图可以看出IMMEDIATE无须表空间处于联机状态,就能实现脱机
OFFLINE之后无法在该表空间做任何操作。
表空间的管理准则
表空间的管理主要是:确定其大小、创建、删除,修改表空间、设置状态等。
确定表空间的大小:
1. 确定表的大小。
PCTFREE—空闲百分比
表的大小=最大行数*行数*(1+PCTFREE/100)*预留的百分比
2. 确定表空间的大小:
表空间的大小=表的大小*表的数量
对于撤消表空间:
受UNDO_RETENTION(表示在UNDO表空间保留多长时间的撤消信息,如果表空间不足,则未完成的或撤消事务有可能被新的事务覆盖)参数的限制。
UNDO表空间大小=
(UNDO_PETENTION*每秒的撤消块*DB_BLOCK_SIZE)+DB_BLOCK_SIZE。
显示UNDO_RETENTION参数
显示DB_BLOCK_SIZE参数
表空间的创建
使用autoallocate分配方式:自动给存放对象分配相应大小的区的方式,可能造成磁盘空间的浪费。
create tablespace workdata01
datafile 'd:\oracle\oradata\work\workdata01_01.dbf' size 1M,
'd:\oracle\oradata\work\workdata01_02.dbf' size 1M autoallocate;
使用uniform方式:给所有对象分配相同的大小的区,最小1K。
create tablespace workdata02
datafile 'd:\oracle\oradata\work\workdata02_01.dbf' size 1M
uniform size 128K;
查看表空间的数据文件:
select file_name,tablespace_name from dba_data_files where tablespace_name='WORKDATA01'
指定数据文件的的扩展方式
使用此方式时候,一般需要指定数据文件的最大SIZE,以免数据文件无限制扩展。
CREATE TABLESPACE WORKDATA01
DATAFILE ' D:\ORACLE\ORADATA\WORK\WORKDATA01_01.DBF' SIZE 1M
AUTOEXTEND ON NEXT 2M MAXSIZE 10M;
创建临时表空间(区分配无法指定为AUTOALLOCATE)
如果数据库经常有大量排序操作,则为了提高性能就需要创建多个临时表空间。
CREATE TEMPORARY TABLESPACE TEMP_WORKDATA01
TEMPFILE ' D:\ORACLE\ORADATA\WORK\TEMP_WORKDATA01_01.DBF ' SIZE 1M
UNIFORM SIZE 64K;
创建撤消表空间(只能使用本地管理方式而不是数据字典管理方式,无法指定统一区的大小的选项):
正在使用的UNDO表空间无法删除。当UNDO表空间没有未提交的事务时候才能删除。
通过select * from v$transaction来查询:
指定UNIFORM时出现的错误。
修改表空间
为表空间增加数据文件:
ALTER TABLESPACE WORKDATA01
ADD DATAFILE 'D:\ORACLE\ORADATA\WORK\WORKDATA01_02.DBF' SIZE 1m
修改数据文件:
ALTER DATABASE
'D:\ORACLE\ORADATA\WORK\WORKDATA01_02.DBF'
RESIZE 4M
删除表空间:
DROP TABLESPACE WORKDATA02 INCLUDING CONTENTS AND DATAFILES;
此语句删除非空的表空间以及对应的数据文件。
查询表空间信息:
数据字典
作用
V$TABLESPACE
表空间的标号和信息
DBA_TABLESPACE
表空间的标号和信息
USER_TABLESPACE
表空间的标号和信息
DBA_TABLESPACE_GROUPS
DBA_SEGMENT
表空间段的信息
USER_SEGMENT
表空间段的信息
DBA_EXTENTS
表空间的数据盘区的信息
USER_EXTENTS
表空间的数据盘区的信息
DBA_FREE_SPACE
表空间的空闲信息
USER_FREE_SPACE
表空间的空闲信息
V$DATAFILE
数据文件以及所属表空间的信息
V$TEMPFILE
临时文件以及临时表空间的信息
DBA_DATA_FILES
数据文件以及所属表空间的信息
DBA_TEMP_FILES
临时文件以及临时表空间的信息
V$TEMP_SPACE_HEADER
临时文件的空闲信息
V$SORT_SEGMENT
每个排序段的信息
V$SORT_USER
用户使用的临时排序信息
查询表空间的空闲信息:
SELECT TABLESPACE_NAME ,SUM(BYTES/1024/1024) FREESPACE FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME=’WORKDATA01’
GROUP BY TABLESPACE_NAME
实际中可能有如下错误:
ORA-01653:此错误表明表空间数据文件设置小了。
使用上面的为表空间增加数据文件的命令即可。
分享到:
相关推荐
以上内容摘自《ORACLE DBA学习笔记》,通过这些知识点的学习,我们可以更好地理解和掌握Oracle数据库管理的关键技术,如限制用户连接数、监控数据库性能等。这对于DBA来说是非常宝贵的资源。希望通过对这些知识点的...
表空间管理是数据库管理员的日常任务,`SELECT tablespace_name FROM dba_data_files ORDER BY tablespace_name;`展示所有表空间,而`SELECT tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size FROM dba_...
这篇学习笔记主要涵盖了Oracle的基本命令,包括查看系统信息、管理表空间以及操作数据文件等核心知识点。 首先,了解Oracle的一些基本监控命令是非常重要的。例如,`SHOW SGA`命令用于查看系统全局区(System ...
### Oracle DBA 学习笔记知识点总结 #### 一、限制用户访问进程数量 在Oracle数据库管理中,可能会遇到因为连接池的问题导致某些用户的连接数超出预期,甚至达到数据库进程的最大值的情况。为了应对这种情况,可以...
- 创建和管理表空间(tablespace),表空间是数据库中数据存储的逻辑单位。 - 创建用户(user),为用户指定默认表空间(default tablespace),并授予连接数据库和资源使用权限(connect, resource)。 2. 用户和权限...
总结来说,Oracle9i的学习笔记涵盖了数据库的基本创建与维护,数据字典的管理和查询,以及数据库状态控制和参数调整,这些都是数据库管理员必备的基础知识。虽然Oracle9i版本较为陈旧,但其核心概念和操作在新的...
### Oracle个人学习笔记知识点梳理 #### 一、Oracle 用户与权限管理 **1. 创建用户** - 使用管理员账户(如 `sys` 或 `system`)登录后,可以通过以下命令创建新用户: ```sql SQL> create user zhangsan ...
以上内容总结了Oracle学习笔记中的关键知识点,包括如何查询表名、Oracle安装与卸载步骤、用户管理、表空间管理以及如何创建表空间等内容。希望这些信息能够帮助初学者更好地理解和掌握Oracle数据库的基础知识。
### Oracle 学习笔记知识点概览 #### 一、Oracle 数据库系统参数查询与管理 在 Oracle 数据库的学习过程中,了解如何查看和管理数据库的系统参数是非常重要的。这些参数直接影响着数据库的性能和稳定性。 ##### ...
### Oracle SQL 入门知识点详解 ...通过以上内容的学习,您可以了解 Oracle 中基本的用户管理、表空间管理和查询操作。这对于初学者来说是非常重要的基础,有助于理解 Oracle 数据库的核心概念和技术。
这篇学习笔记主要涉及了两个关键部分:新建用户和建表。Oracle数据库是全球最早支持SQL语言的商业数据库之一,它广泛应用于高端工作站和小型服务器,提供数据库服务器、企业应用套件和各种开发工具。 首先,我们来...
### Oracle 学习笔记知识点详解 #### 一、Oracle 数据库简介 Oracle 是一款由美国甲骨文公司开发的关系型数据库管理系统。它以其强大的数据处理能力、高度的安全性及稳定性而闻名于世,在金融、电信、政府等领域...
- **表空间**: 表空间是Oracle对物理数据库文件的逻辑分组。每个数据库至少包含一个表空间(System表空间)。表空间由一个或多个数据文件组成。 - **数据库实例**: 每个运行中的Oracle数据库都有一个对应的实例。启动...
根据提供的文件信息,我们可以整理出一系列关于Oracle数据库的关键知识点,主要涵盖了从基本操作到更高级功能的应用。下面将对这些知识点进行详细...希望这些知识点能够帮助你在学习和使用Oracle的过程中更加得心应手。
Oracle 11g 学习笔记涵盖了数据库管理的多个核心概念。以下是这些知识点的详细解释: 1. **Check 规则**:在创建或修改表结构时,Check 约束用于限制列中的数据,确保它们满足特定条件。例如,`Check (Age between ...