oracle的temporary tablespace和temporary tablesoace groups

今天在做测试中学到了一个新的知识点,就来写博客,虽然我知道没人看,留着当自己的笔记,以供以后复习。

临时表空间的概念

临时表空间主要是用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。

为了释放临时表空间的空间我们可以通过重启数据库即可。但是如果我们没重启实例而一直保持问题sql语句的执行,临时表空间会一直增长指导磁盘空间消耗完。

有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,也就是说上次使用的临时表空间假如大小为1G,那么等我们再次启动数据库的时候临时表空间就和上次的大小一致,即为1G。

临时表空间的作用

1、索引create或rebuild

2、order by 或group by

3、distinct操作

4、union或intersect或minus

5、sort-merge joins

6、analyze


当然,当我们做排序操作的时候并不是马上就用到临时表空间来分配临时段的,而是先存在pga(程序全局区)中的SORT_AREA_SIZE,但这个区域是有一定大小的,当空间用尽时就会使用临时表空间地空间来存。当然我们可以调整SORT_AREA_SIZE的大小,调整足够大的话是不是永久都用不到临时表空间了呢?答案是对的,但是理想是美好的,因为调大SORT_AREA_SIZE的大小就意味着要调大pga的大小,但是内存大小等多方面的限制,这个pga的大小往往是有限制的,可以说其他的应用程序占用的空间,所以调足够大的pga只是一种理想的想法,并不实际。但如果我们的数据库主要是用来查询或者排序分组或索引等操作时,是可以适当加大pga的大小从而来调整SORT_AREA_SIZE的大小的。相反,如果数据库是用来更新数据的那就乖乖用表空间吧。


建用户不指定临时表空间的影响

我们都知道新建一个新用户是不需要指定默认的临时表空间的,在oracle中指定默认临时表空间不是必选项。但是强烈建议新建用户一定要指定临时表空间。这是因为因为如果不指定临时表空间的话一旦pga中的排序区域写满的话,此时系统在没有指定临时表空间的话,它会自动将SYSTEM表空间当成临时表空间来存储临时数据,我们都知道SYSTEM表空间是不存数据的,且里面记载了一些系统运行的相关数据称之为数据字典,由于临时表空间的数据都是临时的,所以数据库系统需要频繁地去分配和释放临时段来存储和释放临时数据,这时候就会导致系统表空间会产生很多的存储碎片,影响系统读取硬盘的效率,且SYSTEM表空间大小是有限的,如果用了系统表空间会占用相当大的空间。

指定默认临时表空间用default temporary tablespace tablespace_name


完善方案

1、可以将临时表空间存放于一个独立的分区,这样可以防止临时表空间为了创建临时文件而空间不足的错误。也方便DBA对临时表空间产生的存储碎片进行整理。

2、临时表空间组(temporary tablespace groups)

今天做的主要测试就是临时表空间组,这个从oracle10g以后便有的特性,解决了有些临时表空间频繁被使用而有些临时表空间却很空闲的问题。

概念:一个临时表空间组可以由多个临时表空间组成(最少一个),最多不受限制,但组内的临时表空间名不能与组名相同。

临时表空间是创建临时表空间的时候指定group便会自己创建,我们可以把组内的临时表空间转移到其他的组也可以删除组内的临时表空间,当我们把一个组内的临时表空间都删除的话,那么这个组也就消失了,但我发现其实他还是存在的,只要你把另外组内临时表空间再移到那个消失的组名,消失的组就又回来了。

下面是简单的操作

创建2组临时表空间组并查询表空间组



把临时表空间t1更改组到group2查询结果后改回



删除表空间t1包括内容和数据文件,查询发现t1所在的组group1消失,但吧t2转移到消失的group1时,group1又出现


使用临时表空间组的优点

1、数据库层面可以同时指定多个临时表空间,避免当临时表空间不足时引起的磁盘排序问题;

2、当一个用户同时有多个会话时,可以使得他们使用不同的临时表空间;

3、并行操作中,不同的从属进程可以使用不同的临时表空间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值