关于临时表空间问题总结

关于临时表空间问题总结,第1张

oracle经常需要查数据库临时表空间大小,使用率,加表空间等,这里总结临时表空间相关的语句:

0、查看实例的临时表空间

1、查询临时表空间路径:

2、新增临时表空间:

3、查询临时表空间使用情况:

查看临时表空间的使用情况

4、删除临时表空间: 删除临时表空间的一个数据文件:

5、删除临时表空间(彻底删除):

6、更改系统的默认临时表空间:

7、查看用户的临时表空间所属

8、删除临时表空间

9、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)

解释: username 正在执行sql的用户名 sql_id 正在执行的sql的的sql_id segtype 正在执行的SQL语句做的是什么 *** 作 BYTES_USED 正在执行sql语句使用的临时表空间的大小 BYTES_FREE 剩余多少临时表空间

Oracle查看用户及对应的表空间与临时表空间

删除数据库数据 *** 作: 1、解锁当前用户连接状态:

2、删除指定用户:

3、删除表空间:

查看临时表空间的数据文件的状态

通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内。在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序 *** 作而产生的临时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个临时表空间了。在用户进行数据库 *** 作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。而如果这个临时表空间设置不当的话,则会给数据库性能带来很大的负面影响。为此管理员在维护这个临时表空间的时候,不能够掉以轻心。要避免因为临时表空间设置不当影响数据库的性能。

首先查看temp是不是某些用户的默认表空间\x0d\x0aSELECT USERNAME,TEMPORARY_TABLESPACE FROM DBA_USERS\x0d\x0a如果有用户的默认临时表空间是temp的话,建议进行更改\x0d\x0aalter user xxx temporary tablespace tempdefault\x0d\x0a设置tempdefault为默认临时表空间\x0d\x0aalter database default temporary tablespace tempdefault\x0d\x0a然后用你列出来的语句删除即可\x0d\x0adrop tablespace temp including contents and datafile\x0d\x0a\x0d\x0a即便丢失了所有的临时表空间,只要不是数据库当中用到了order by、子查询、group by、distinct等需要消耗临时表空间的语句(而且要比较大才行,小的话就直接用pga的SORT_AREA区了),那么也不会对业务造成错误导致中断,发现问题之后只需要新建一个临时表空间就可以了。你要是了解备份恢复的话,实际上在进行备份的时候临时表空间都不会进行备份,而只是有一个创建临时表空间的语句而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9245613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存