文章概述:临时表空间和UNDO表空间是用于存储临时数据和还原数据的特殊表空间。在发生实例化故障时,UNDO段用来对数据进行恢复。
文章要点:
临时表空间的管理
进行自动还原管理
创建和配置UNDO段
从数据字典获取UNDO段信息
临时表空间的管理
临时表空间
当用户执行create index,select distinct 和select group by等命令时,Oracle服务器就会在内存中(排序区中,大小由初始化参数SORT_AREA_SIZE决定)执行排序,如果排序所需要的空间大于内存中的可用空间,则将中间结果(临时数据)写入磁盘中。临时段就是用来存储这些中间结果。通过专门用于排序段的临时表空间,可以使SQl语句获得更高的执行效率。
临时表空间只能存储临时数据,不能存放永久数据库对象。可供多用户使用。在实例化操作中,oracle会在临时表空间中分配临时段,这些排序段通过分配更多的区来扩展,直到段大小等于或大于等于该实例上运行的所有活动排序的存储要求总和。
创建本地管理的临时表空间
在创建数据库时,会自动创建一个名为TEMP的本地管理方式临时表空间。要创建本地管理方式的临时表空间,必须使用craete temporay tablespace 命令,且区的分配方式只能是UNIFORM,不能使用AUTOALLOCAL,这样可以保证不会在临时段中产生过多的存储碎片。
实例①:创建临时表空间temp01
# 管理员身份登录
conn / as sysdba;
# 创建临时表空间
create temporary tablespace temp01 tempfile '/opt/oracle/oradata/db01/temp01a.dbf' size 4M;
对于本地管理的临时表空间,ALTER TABLESPACE 命令的作用是为临时表空间增加新的临时数据文件,不能对临时表空间有任何修改。
# 增加新的临时数据文件
alter tablespace temp01 add tempfile '/opt/oracle/oradata/db01/temp01b.dbf' size 4M reuse;
REUSE选项代表如果磁盘上存在‘/opt/oracle/oradata/db01/temp01b.dbf’ 临时文件,则删除并重建该临时数据文件。
默认临时表空间
在创建数据库期间创建临时表空间,可以防止将SYSTEM表空间用作临时表空间。
实例③:设置临时表空间temp01为默认临时表空间。
# 设置默认临时表
alter database defalut temporary tablespace temp01;
# 查看以确认是否设置成功
select property_value from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';