Tablespace:表空间是一个逻辑的概念,是数据文件(
datafile
)的容器,是数据文件在数据库中逻辑的组织形式。而数据文件真实的存在于操作系统之上
,
也可以是裸设备(
ASM
)。
常见的表空间有:
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
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback
string
LOW
rollback_segments
string
transactions_per_rollback_segment integer
5
默认一个回滚段可以维持5
个事务 不要放太多事务 会产生回滚段头争用
因为段头中记录段中的块的位置 找段里的数据就要访问段头
改成手动
SQL> alter system set undo_management=manual scope=spfile;
SQL> startup force
由于undo_management
是非自动管理,所以要重启才可以生效。
查看undo
段:
select SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;
手动创建回滚段 段会自动拓展大小 所以不需要指明
create rollback segment rbs1 tablespace undotbs1;
修改状态:alter rollback segment rbs1 online;
关于回滚段的知识我会在segment
中详细讲解。
五、表空间的状态
查看表空间的状态:
select tablespace_name,status from dba_tablespaces;
修改状态:
alter tablespace mytbs read write/read only/offline;
1、
Online(读写
)
状态
2、
Readonly(只读)状态
只读表空间 只能select
查询和
drop
删除对象 不能修改
(INTSERT update delete truncate)system undotbs temp
包含活动事务的表空间都不能只读,只读表空间不可以修改表数据 但可以删除表结构 因为表结果存储在数据字典中 数据字典在
system
表空间。
3、
offline(离线
)
状态
只可以删除对象(drop)
不可以
select dml truncate,
系统表空间
+default
临时
+
包含活动事务的表空间是不能离线的
,
离线状态
DBA
可以移动数据文件路径
,
离线就是冻结 将
SCN
号锁定在某一时刻
select name,checkpoint_change# open_scn,last_change# stop_scn from v$datafile;
结果:NAME
OPEN_SCN
STOP_SCN
-------------------------------------------------- ---------- ----------
/u01/oracle/oradata/ora10g/system01.dbf
475662
/u01/oracle/oradata/ora10g/undotbs01.dbf
475662
/u01/oracle/oradata/ora10g/sysaux01.dbf
475662
/u01/oracle/oradata/ora10g/users01.dbf
476689
476689
/u01/oracle/oradata/ora10g/mytbs01.dbf
476652
六、表空间扩容
查看表空间大小:
select tablespace_name,sum(bytes/1048576) curr_MB,sum(MAXBYTES/1048576) MAX_MB from dba_data_files group by TABLESPACE_NAME;
结果:
TABLESPACE_NAME CURR_MB MAX_MB
--------------- ---------- ----------
SYSAUX
240 32767.9844
UNDOTBS1
25 32767.9844
USERS
25 32767.9844
SYSTEM
480 32767.9844
MYTBS
10
10
如果最大大小为空 说明不能增长。
查询当前分配大小中的剩余尺寸:
SQL> select TABLESPACE_NAME,sum(bytes/1048576) free_mb from dba_free_space group by TABLESPACE_NAME;
结果:
TABLESPACE_NAME FREE_MB
--------------- ----------
UNDOTBS1
4.0625
SYSAUX
.875
USERS
24.5625
SYSTEM
6.875
MYTBS
10.875
扩容的方法:
1、使文件自动增长
alter database datafile '' autoextend on next 10M maxsize 4G;
alter database datafile '' autoextend off;
2、
增加新文件
alter tablespace uses add datafile '' size 5M;
alter tablespace uses drop datafile ''; /*10G才能删 有数据不能删 第一个文件不能删
*/
3、
修改现有文件的大小
alter database datafile '' resize 15M;
alter database datafile '' resize 10M;
删除表空间和数据文件
1、
删除表空间及其内容一起删除
drop tablespace mytbs INCLUDING CONTENTS;
2、
删除表空间及其文件一起删除
drop tablespace mytbs INCLUDING CONTENTS and datafiles;
注意:
创建索引或主键和唯一约束时将索引指定位置存放 生产库一定要把表和索引分开存放
创建索引和带索引的约束时,
指定索引的存储位置
SQL> create index t1_ind on t1(empno) tablespace mytbs;
SQL> ALTER TABLE T1 MODIFY(ENAME constraint T1_pk primary key using index tablespace mytbs);
分享到:
相关推荐
首先,Oracle数据库的逻辑结构包括了表空间和数据文件。表空间是数据库的逻辑划分,每个数据库至少有一个名为SYSTEM的表空间。表空间的主要目的是为了组织和管理数据,通过创建不同的表空间,可以将不同类型的数据...
在Oracle数据库中,表空间是存储空间的逻辑划分。每个表空间由一个或多个数据文件组成,并且可以包含一个或多个段(如表、索引等)。表空间用于管理数据文件的增长和收缩,并为数据库中的不同数据类型提供组织结构。...
Oracle 9i 逻辑结构是数据库管理系统的核心组成部分,它决定了数据如何在数据库中组织和管理。在Oracle 9i中,逻辑结构主要包括以下几个关键概念: 1. **数据库的逻辑结构**:Oracle数据库的逻辑结构是数据组织和...
接着,表空间是 Oracle 存储结构中的重要组成部分,它由一个或多个数据文件构成,用于存储用户的数据。表空间分为多种类型,包括系统表空间(如 `SYSTEM` 和 `SYSAUX`)、回滚表空间(UNDO)、临时表空间(TEMP)...
表空间是数据库中用于存储数据对象(如表、索引、视图等)的逻辑结构。它将物理磁盘上的一个或多个数据文件组织成一个逻辑单元,使得数据库可以高效地管理和使用存储资源。以下是对"Oracle 创建表空间命令"以及...
表空间是Oracle数据库中的一种逻辑存储单元,它是数据库中的一个概念性的分组,用于组织和管理物理存储空间。每个表空间由一个或多个数据文件组成。表空间可以进一步细分为多个段(Segment),段又可以细分为多个...
逻辑结构主要包括数据库、表空间、段、区段和Oracle数据块,而物理结构则主要指操作系统层面的数据文件和数据块。下面是这些结构之间的关系概述: - **数据库与表空间**:每个数据库至少包含一个表空间,并且可以...
在管理Oracle数据库时,有时需要删除不再使用的表空间,以释放磁盘空间或优化数据库结构。本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关...
在Oracle数据库中,表空间(Tablespace)是存储数据的主要单位,它由一个或多个数据文件组成,用于容纳数据库对象如表、索引等。在Oracle企业管理器(Oracle Enterprise Manager,简称Oracle EM)中创建表空间是...
1. **逻辑结构**:描述了数据库如何从逻辑上组织数据。 - **Schema**:代表用户,每个Schema可以创建各种数据库对象,如表、视图、序列、函数等。 - **Tablespace**:表空间是逻辑存储单元,包含一个或多个数据...
在Oracle数据库中,表空间是逻辑存储单元,它将物理文件映射到数据库中的逻辑结构上。表空间由一个或多个数据文件组成,每个数据文件对应于操作系统上的一个文件。通过管理表空间,可以有效地控制数据库的空间分配与...
在Oracle的逻辑结构中,表空间是最高级别的逻辑单位,它由一个或多个数据文件组成。表空间可以分为在线和离线状态,SYSTEM表空间是系统默认的,用于存储系统数据字典、程序单元等,也可用于用户数据。用户可以使用一...
表空间是Oracle数据库中逻辑存储结构的一部分,用于组织物理存储空间。下面是创建表空间的具体步骤: 1. **登录Oracle**:首先需要切换到Oracle用户并登录数据库。 ```bash su - oracle sqlplus "/as sysdba" ``...
Oracle 表空间的逻辑结构包括 Schema、逻辑结构和物理结构。Schema 是用户创建对象的组织方式,逻辑结构是 Oracle 内部管理数据库中对象的方式,物理结构是 OS block 到 datafile 的物理存储方式。逻辑结构包括 ...
Oracle 数据库实例用户表空间之间的关系 Oracle 数据库实例用户表空间之间的关系是 Oracle 数据库管理系统的核心概念。了解它们之间的关系对于数据库的设计、管理和优化至关重要。 数据库 Oracle 数据库是一个...
表空间是Oracle数据库中用于组织和管理数据存储的逻辑单元。每个表空间都与一个或多个数据文件关联,数据文件是数据库中实际存储数据的物理文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间...
Oracle 表空间是 Oracle 数据库中一个非常重要的概念,它是数据库中存储空间的逻辑概念。由于 Oracle 数据库可以存储大量的数据,但是数据文件大小受操作系统的限制,而过大的数据文件对数据的存取性能影响非常大。...
- **定义**:数据库是所有表空间的集合,是Oracle数据库系统的最高级别逻辑结构。 #### 二、Oracle的物理结构 Oracle数据库的物理结构是数据在磁盘上实际的存储方式,主要包括以下组成部分: 1. **数据文件...
oracle的逻辑结构包括表空间(tablespace),段(segment),区(extent),数据块(data block) oracle数据库在逻辑上是由多个表间组成的,表空间中存储的对象叫段,比如数据段,索引段,和回退段。段由区组成,区是磁盘...