一、 oracle自带的表空间
SYSTEM
oracle运行最重要的表空间(维持数据库正常运行)
数据字典
大部分组件
运行状态:
online
offline
SYSAUX(系统辅助表空间)
10g以后增加的
给SYSTEM表空间分压
oem组件在里面
可以offlne
TEMP
临时表空间
sql创建临时段(大规模排序,索引)
存储的数据对原数据没有太大意义(所有他不属于datafile)
排序不改变表原有的数据
排序非常消耗性能(循环)
创建索引也要先排序
UNDOTBS1
oracle存储还原信息的还原表空间
update 未commit之前 其他select去读
update后数据会写入redo,update前数据会放到undo
select将去undo表空间找
不能offline
USERS
存储用户对象和数据
二、逻辑结构:
表空间 (table space)
表空间对应的是数据文件。
类型:
permanal
普通表空间
temp
一个数据库里面可以有多个临时表空间,并且可以被同时使用
undo
一个数据库里面可以有多少个undo表空间,同时只能有一个在被使用
段 (segment)
若干个区组成段:
段头:
管理方式:
auto(推荐使用)
manual
区 (extent)
若干个块组成区
区头:
由多个块组成(不存数据)
记录块的使用情况
管理方式:
本地管理(local)
区分配方式:
1、uniform 指定大小分配
2、不写uniform自动分配
先8个块8个分配(每个块8192B=8K)
然后根据真实数据进行动态分配
分的次数多耗cpu
字典管理(dict)
块 (block)
块的组成:
块头block_header
对下面记录信息的高度总结
找数据时通过块头去找信息
空闲空间 pct_free
使用区用完后,对列更改时(增加列)使用
尽量保证一行数据放在同一数据块(减少io)
#行链接空间用满,链接到其他的数据块
使用区(行数据)pct_used
以行为单位存到使用区
系统表初始区分配8个块 64K。
三、查看表空间的信息:
SQL> SELECT TABLESPACE_NAME,BLOCK_SIZE,INITIAL_EXTENT,NEXT_EXTENT,EXTENT_MANAGEMENT,ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES;
block_size 块大小(单位字节)
initial_nextent 初始化区的大小(其中65536则是8字节)
next_extent 下一次分配区的大小(不写则表示区的分配方式是自动的)
extent_man 区管理方式
allocatio 处于那个表空间的
segmen 段管理方式