概述
DATABASE–>TABLESPACES–>SEGMENTS–>EXENTS–>BLOCKS
学习oracle 的表空间系统表
什么是表空间
oarcle数据库真正存放数据的是数据文件(data files);
Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间;
在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构;
从物理结构上看是放在数据文件中。一个表空间可由多个数据文件组成;
表空间属性
1、一个数据库可以包含多个表空间,一个表空间只能属于一个数据库
2、一个表空间包含多个数据文件,一个数据文件只能属于一个表空间
3、表这空间可以划分成更细的逻辑存储单元
基本的表空间
SYSTEM: 系统表表空间
SYSAUX: 索引表空间
USERS: 用户表空间
UNDOTBS1: 回滚表空间
EXAMPLE: 工具表空间
TEMP: 临时表空间
表空间的基本操作
建一个简单的表空间
SQL> create tablespace a datafile '/u01/app/oracle/oradata/stephen/stephen.dbf' size 10m;
Tablespace created.
//设置某一列的显示长度
col file_name format a50;
//查看数据文件和表空间的关系
SQL> select file_id,file_name,tablespace_name,AUTOEXTENSIBLE ,bytes/1024/1024 "size" from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME AUT size
---------- -------------------------------------------------- ------------------------------ --- ----------
4 /u01/app/oracle/oradata/stephen/users01.dbf USERS YES 5
3 /u01/app/oracle/oradata/stephen/undotbs01.dbf UNDOTBS1 YES 75
2 /u01/app/oracle/oradata/stephen/sysaux01.dbf SYSAUX YES 500
1 /u01/app/oracle/oradata/stephen/system01.dbf SYSTEM YES 680
5 /u01/app/oracle/oradata/stephen/stephen.dbf A NO 10
查看表空间的剩余大小
SQL> select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX 33.625
UNDOTBS1 60.9375
USERS 3.6875
SYSTEM 9.9375
A 9
增加表空间的几种方法
// 扩大表空间,第一种方法,手动改变已存在数据文件的大小
alter database datafile '/u01/app/oracle/oradata/stephen/stephen.dbf' resize 10m
// 扩大表空间,第二种方法,给表空间增加数据文件
alter tablespace a add datafile '/u01/app/oracle/oradata/stephen/stephen1.dbf' size 20m;
// 扩大表空间,第三种方法,允许已存在的数据文件自动增长
alter database datafile '/u01/app/oracle/oradata/stephen/stephen.dbf' autoextend on next 10m maxsize 500m
// 扩大表空间,第三种方法,增加数据文件并允许数据文件自动增长
alter tablespace a add datafile '/u01/app/oracle/oradata/stephen/stephen2.dbf' size 2m autoextend on next 10m maxsize 500m;
表空间相关的视图
–包含数据库中所有表空间的描述信息
SELECT * FROM DBA_TABLESPACES
–包含当前用户的表空间的描叙信息
SELECT * FROM USER_TABLESPACES
–包含从控制文件中获取的表空间名称和编号信息
SELECT * FROM V$TABLESPACE;
–包含数据文件以及所属的表空间的描述信息
SELECT * FROM DBA_DATA_FILES;
–包含临时数据文件以及所属的表空间的描述信息
SELECT * FROM DBA_TEMP_FILES;
–包含从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等
SELECT * FROM V$DATAFILE;
–包含所有临时数据文件的基本信息
SELECT * FROM V$TEMPFILE;
dba_tablespaces
数据字典,静态视图
SQL> desc dba_tablespaces;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLESPACE_NAME NOT NULL VARCHAR2(30) #表空间名
BLOCK_SIZE NOT NULL NUMBER #表空间块大小(以字节为单位)
INITIAL_EXTENT NUMBER #默认初始扩展区大小(以字节为单位)
NEXT_EXTENT NUMBER #默认增量扩展区大小(以字节为单位)
MIN_EXTENTS NOT NULL NUMBER #默认最小范围
MAX_EXTENTS NUMBER #默认最大范围数
MAX_SIZE NUMBER #区段的默认最大大小(以Oracle块为单位)
PCT_INCREASE NUMBER #范围大小的默认增加百分比
MIN_EXTLEN NUMBER # 该表空间的最小扩展区大小(以字节为单位)
STATUS VARCHAR2(9) # 表空间状态:ONLINE,OFFLINE,READ ONLY
CONTENTS VARCHAR2(9) # 表空间内容:UNDO,PERMANENT,TEMPORARY
LOGGING VARCHAR2(9) #默认日志记录属性:LOGGING,NOLOGGING
FORCE_LOGGING VARCHAR2(3) # 指示表空间是否处于强制日志记录模式(YES)或(NO)
EXTENT_MANAGEMENT VARCHAR2(10) #指示表空间中的扩展区是字典管理的(DICTIONARY)还是本地管理的(LOCAL)
ALLOCATION_TYPE VARCHAR2(9) #对表空间有效的扩展区分配类型:SYSTEM,UNIFORM,USER
PLUGGED_IN VARCHAR2(3) #指示表是否插好(YES)否(NO)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6) #指示是否使用空闲列表(MANUAL)或位图(AUTO)管理表空间中的可用段空间和已用段空间
DEF_TAB_COMPRESSION VARCHAR2(8) #表示默认表压缩是否启用(ENABLED)否(DISABLED)注意:启用默认表压缩表示除非另有指定,否则将在启用表压缩的情况下创建表空间中的所有表。
RETENTION VARCHAR2(11) #GUARANTEE-表空间是一个撤消表空间,RETENTION指定为GUARANTEE;一个RETENTION的值GUARANTEE表示在撤销表空间的所有还原段是未到期的撤销应予以保留,即使这意味着要向前操作需要生成撤销在这些细分市场失败。 NOGUARANTEE-表空间是一个撤消表空间,RETENTION指定为NOGUARANTEE; NOT APPLY -表空间不是撤消表空间
BIGFILE VARCHAR2(3) #指示表空间是大文件表空间(YES)还是小文件表空间(NO)
PREDICATE_EVALUATION VARCHAR2(7) #谓词是HOST由主机()还是由存储(STORAGE)评估
ENCRYPTED VARCHAR2(3) #表空间是否已加密(YES| NO)
COMPRESS_FOR VARCHAR2(12) #默认情况下要压缩的操作类型
v$tablespace
动态视图
SQL> desc v$tablespace
Name Null? Type
----------------------------------------- -------- ----------------------------
TS# NUMBER #表空间号
NAME VARCHAR2(30)#表空间名称
INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3)#指示是否使用BACKUP DATABASERMAN命令(YES)将表空间包含在完整数据库备份中NO;NO仅当CONFIGURE EXCLUDERMAN命令用于此表空间时
BIGFILE VARCHAR2(3)#指示表空间是大文件空间还是小文件空间
FLASHBACK_ON VARCHAR2(3)#指示表空间是否参与flashback database操作
ENCRYPT_IN_BACKUP VARCHAR2(3)#指示在表空间级别是打开还是关闭加密:ON -在表空间级别打开加密,OFF -在表空间级别关闭了加密,NULL-在表空间级别(默认值或清除时)均未明确打开或关闭加密