1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Oracle中临时表空间的清理

Oracle中临时表空间的清理

时间:2024-04-08 10:32:55

相关推荐

Oracle中临时表空间的清理

数据库|mysql教程

Oracle临时表空间,Oracle中临时表空间的清理,数据

数据库-mysql教程

机票预订网站源码,虚拟系统安装ubuntu,怎么打开tomcat的日志,tiktok爬虫分析,php数据自动搜索,高级seo高级seolzw

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

v15视频打赏源码,ubuntu桌面只有壁纸,手机端反爬虫,php论坛免费,seo汽车软文lzw

源码论坛分享,ubuntu程序关不掉,爬虫果冻凝胶饲料,php系统使用,茂名自动seolzw

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

索引create或rebuild

Order by 或 group by

Distinct 操作

Union 或 intersect 或 minus

Sort-merge joins

analyze

重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。即使重建了临时表空间,过一段时间后,临时表空间的使用率就达到99%,然后,表空间就开始增长,直到耗尽硬盘空间。下图例临时表空间,刚建立时是8G,现在已到32G:

为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可,,假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下:

create temporary tablespace TEMPA TEMPFILE ‘/opt/app/oracle/oradata/orcl/tempa01.dbf ‘ SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED; –创建中转临时表空间

alter database default temporary tablespace tempa;–改变缺省临时表空间

drop tablespace temp including contents and datafiles;–删除原来临时表空间

新建的临时表空间下图例:

过一段时间,当临时表空间增长到一定的程度,再新建一个temp表空间,删除tempa表空间,即:

create temporary tablespace TEMP TEMPFILE ‘/opt/app/oracle/oradata/orcl/temp01.dbf ‘ SIZE 8192M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED; –创建中转临时表空间

alter database default temporary tablespace temp; –改变缺省临时表空间

drop tablespace tempa including contents and datafiles; –删除原来临时表空间

这样就可以保证临时表空间不至于过大,防止过多的占用有限的硬盘空间。

=====================================================

用下面语句可查看当前临时表空间使用空间大小与正在占用临时表空间的sql语句:

select sess.SID, segtype, blocks * 8 / 1000 “MB”, sql_text

from v$sort_usage sort, v$session sess, v$sql sql

where sort.SESSION_ADDR = sess.SADDR

and sql.ADDRESS = sess.SQL_ADDRESS

order by blocks desc;

下面语句查询临时表空间的空闲程度:

select ‘the ‘ || name || ‘ temp tablespaces ‘ || tablespace_name ||

‘ idle ‘ ||

round(100 – (s.tot_used_blocks / s.total_blocks) * 100, 3) ||

‘% at ‘ || to_char(sysdate, ‘yyyymmddhh24miss’)

from (select d.tablespace_name tablespace_name,

nvl(sum(used_blocks), 0) tot_used_blocks,

sum(blocks) total_blocks

from v$sort_segment v, dba_temp_files d

where d.tablespace_name = v.tablespace_name(+)

group by d.tablespace_name) s,

v$database;

本文永久更新链接地址:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。