oracel逻辑结构―表空间(一)

2014-11-24 11:29:21 · 作者: · 浏览: 0

oracel逻辑结构—表空间
Tablespace:表空间是一个逻辑的概念,是数据文件( datafile )的容器,是数据文件在 数据库中逻辑的组织形式。而数据文件真实的存在于操作系统之上 , 也可以是裸设备( ASM )。 www.2cto.com
常见的表空间有:
1、 system系统表空间
数据库创建时就创建,必须包含,存放数据库基本 组件信息 比如基表。主要存储的是基表和数据字典,其实大家在对表、索引等数据库对象修改结构时都是在操作system 表空间里的表。如 alter 语句;
2、 sysaux辅助表空间
10G引入 system 太大了 . 就将部分功能组件(如 sqlplus 的工具)取出放到 sysaux 里, 属于SYSTEM 表空间的辅助表空间,独立出来的好处, SYSTEM 表空间的负荷得以减轻 . ,反复创建一些相关对象及组件引起 SYSTEM 表空间的碎片问题得以避免。
查看sysaux 表空间内的组件信息和大小
Select OCCUPANT_NAME,SPACE_USAGE_KBYTES from V$SYSAUX_OCCUPANTS;
3、 undotbs回退表空间
用于事务回退, 保存改前镜像块
4、 temp临时表空间
存放临时数据 磁盘排序或临时表
5、 users和 example
oracle提供的样本数据表空间
6、 用户数据表空间
用户自建
一、 表空间的类型
查看表空间的类型
idle> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;
有:永久表空间
临时表空间
回退表空间
1、永久表空间管理
又分为:
小文件表空间( 一个表空间可以存放 1023 个文件 每个文件 4M*block_size)
基本应用都是这类 默认创建也是它
大文件表空间( 一个表空间可以存放 1 个文件 文件管理 4G*block_size)
很少使用, 不利于 IO 分散 , 容易产生争用 , 容易被 FS 限制
1)、查看:
select tablespace_name,file_id,file_name,ceil(bytes/1048567)||'M' MB from dba_data_files;
2)、创建小表空间
文件 系统:create tablespace mytbs datafile '/PATH/file.dbf' size 10m;
裸设备:create tablespace rawtbs datafile '/dev/raw/raw1' size 4095M
3)、创建大文件表空间
create bigfile tablespace bigtbs datafile '/u01/oracle/oradata/beijing/bigtbs01.dbf' size 5M;
select tablespace_name,bigfile from dba_tablespaces;
二、临时表空间
存放排序的中间结果或临时表
查看:
select tablespace_name,contents from dba_tablespaces where CONTENTS='TEMPORARY';
创建临时表空间:
create temporary tablespace NAME tempfile '' size 10M;
修改用户的临时表空间:
select temporary_tablespace from dba_users where username='SCOTT';
alter user scott temporary tablespace temp2;
修改数据库默认临时表空间:
alter database default temporary tablespace temp;
三、 回退表空间
UNDO表空间 存储的是 rollback segment 。
1、 system 回退段 系统创建 为 system 表空间的对象提供回退
2、非系统回退段 用户创建 为用户表空间的对象提供回退
3、延迟回退段 系统创建 表空间非正常离线时自动创建 我们不能管理
回退表空间的作用:
1.交易的回退 : 没有提交的交易可以 rollback
2.交易的恢复 : 数据库崩溃时 , 将磁盘的不正确数据恢复到交易前
3.读一致性 : 被查询的记录有事务占用 , 转向回滚段找改前镜像
4.闪回数据 : 从回滚段中构造历史数据
回滚段创建的时候是空闲的,只有事务产生时候才会产生数据。
创建UNDO 表空间:
create undo tablespace undo2 datafile '/u01/oracle/oradata/ora10g/undo02.dbf' size 10M;
管理风格:自动或手动
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_management=AUTO 回滚表空间段的段管理模式,
自动管理:
管理员只需要备足够的表空间容量,oracle 会自动管理扩展回滚段的数量。
只能使用一个UNDO 表空间
undo_tablespace:只有在自动管理模式下才可以使用。指明使用哪个 UNDO 表空间。
查看回顾段:select segment_name,tablespace_name,status from dba_rollback_segs;
回滚段的名字系统自动取
system是系统回退段 ,DBA 不能管理 .
切换回滚表空间的时候不会影响回滚数据:
SQL> alter system set undo_tablespace=undo2;
undo_retention= 900 :提交之后旧的镜像保持在回滚段中的时间。非强制的回退保持时间 .( 回滚空间不足老的镜像就会被覆盖 )
强制保持:但是对空间要求较大,要慎用。(10g 开始支持 )
alter tablespace UNDOTABS1 RETENTION GUARANTEE;
select tablespace_name,RETENTION from dba_tablespaces;
手工管理UNDO:
修改方法
SYS@beijing> show parameter rollback;
NAME TYPE VALUE
-------------------