`
cocoeye
  • 浏览: 14512 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ORACLE DBA学习笔记--表空间的管理(tablespace)

阅读更多
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:此错误表明表空间数据文件设置小了。
使用上面的为表空间增加数据文件的命令即可。

分享到:
评论

相关推荐

    英文原版-PeopleSoft for the Oracle DBA 2nd Edition

    PeopleSoft for the Oracle DBA, Second Edition stands on the boundary between the PeopleSoft application and the Oracle database. This new edition of David Kurtz‘s book is freshly revised, showing ...

    oracle表空间管理

    oracleDBA表空间管理 表空间管理 表空间管理

    创建Oracle表空间

    /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; ...

    Oracle用户(user)和表空间(tablespace).pdf

    本文详细介绍和阐述了 Oracle 用户(user)和表空间(tablespace)的概念和使用方法等内容,并对用户和表空间使用过程中的注意事项、关键知识点等进行了重点标注和详尽解析,以便于读者进行深入学习和理解。...

    如何正确的删除Oracle表空间数据文件

    详细介绍如何正常删除Oracle 数据库表空间数据文件,OFFLINE和OFFLINE DROP的区别,OS级别删除了数据文件后的恢复,删除数据库表空间数据文件演示示例

    Oracle自学(学习)材料 (共18章 偏理论一点)

    8 管理表空间和数据文件 目标 8-2 概述 8-3 数据库的储存层次 8-5 SYSTEM 和非 SYSTEM 表空间 8-7 创建表空间 8-8 表空间的空间管理 8-9 本地管理表空间 8-10 字典管理表空间 8-11 改变存储设置 8-12 回滚表空间 8-...

    Oracle常用的命令如何查看表的结构

    9 default tablespace 表空间名 --默认表空间名 10 temporary tablespace temp --临时表空间为temp 11 profile default --受profile文件的限制 12 quota unlimited on 表空间名; --在表空间下面建表不受限制 4....

    Oracle数据库创建和授权

    - 删除临时表空间及文件 DROP TABLESPACE ELWY_TEMP INCLUDING CONTENTS AND DATAFILES; -- 创建临时表空间 CREATE TEMPORARY TABLESPACE ELWY_TEMP TEMPFILE 'E:\DataBase\Oracle\ELWY_TEMP.DBF' SIZE 100m ...

    Oracle最常用的语句

     default tablespace 表空间名 --默认表空间名  temporary tablespace temp --临时表空间为temp  profile default --受profile文件的限制  quota unlimited on 表空间名; --在表空间下面建表不受限制 4.创建角色...

    Oracle1Z0-062Exam.345校验版.PDF

    ORACLE 12C OCP 认证科目062 345q 校验过的,标记为红色的为特别重要的,答案已修正过

    oracle 数据库表空间巡检步骤

    描述了oracle数据库表空间巡检的步骤: 1:查看表空间 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_...

    oracle空间使用率

    Oracle查询表空间使用情况  --查询表空间使用情况  SELECT UPPER(F.TABLESPACE_NAME) "表空间名",  D.TOT_GROOTTE_MB "表空间大小(M)",  D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",  TO_CHAR(ROUND((D...

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    1. 为有意从事oracle dba工作人员提供学习指导。 2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; ...

    oracle中查看表空间与对应物理文件,用户,表,使用情况

    select b.tablespace_name 表空间, c.owner 用户, c.segment_name 表名, b.file_name 物理文件名, sum(nvl(b.bytes, 0)) / 1024 / 1024 总共大小M, round((sum(nvl(b.bytes, 0)) - sum(nvl(a.bytes, 0))) ...

    Oracle 数据库中改善的表空间管理

    在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间。...Oracle9i 允许 DBA 为所有未用显式的临时表空间子句创建的用户指定一个默认的临时表空间,从而减少了这个问题。

    oracle扩展表空间

    oracle扩展表空间sql语句 oracle表空间查询、硬性扩展和自动扩展

    Oracle DBA 参考手册

    Temporary Tablespace Performance Tuning(临时表空间的调整) 56 10.4. 并发事件处理 56 10.4.1. 并发事件的产生 56 10.4.2. 锁 56 10.4.2.1. 锁的功能 56 10.4.2.2. 锁的类型 57 10.4.2.3. 锁的模式 58 10.4.2.4...

    Oracle表空间查看sql使用情况

    DBA在日常工作中,最重要的一点就是查看表空间的使用情况,去了解是否有表空间满了的情况出现。 具体方法和步骤如下所示: 第一步:打开PLSQL 第二步:新建一个SQL窗口 第三步:输入代码: select a.tablespace_...

    Oracle表空间设置和管理浅析

    表空间管理是 Oracle dba的一项重要日常工作。 今天小编就从永久表空间管理和临时表空间管理两个维度,详细介绍 Oracle表空间管理的具体操作。 永久表空间管理 1.1 创建表空间 参数说明: EXTENT MANAGEMENT ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

Global site tag (gtag.js) - Google Analytics