Oracle 中检查临时表空间的方法

 更新时间:2022年10月19日 16:15:41   作者:雪竹子  
这篇文章主要介绍了Oracle 中检查临时表空间的方法,这是一个非常重要的表空间,如果管理不当,可能会出现问题,让我们看看临时表空间管理的各种查询,本文给大家详细讲解,需要的朋友可以参考下

一、什么是临时表空间

临时表空间用于 Oracle 中的排序操作。它也用于连接操作。基本上,它是临时存储,临时对象是在这里创建的。全局临时表也在这个表空间中创建。这是一个非常重要的表空间,如果管理不当,可能会出现问题。让我们看看临时表空间管理的各种查询

二、oracle创建临时表空间的方法

这是创建临时表空间的 SQL

--单个临时文件
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/oracle/TEST/oradata/temp_1.dbf' SIZE 1000M; 
--多个临时文件
CREATE TABLESPACE TEMP TEMPFILE 
'/u01/oracle/TEST/oradata/temp_1.dbf' SIZE 1000M 
'/u01/oracle/TEST/oradata/temp_2.dbf' SIZE 1000M 
;
--使用 ASM 
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '+DATA' SIZE 1000M;

三、如何在 Oracle 中检查临时表空间

Oracle 数据库可以有多个临时表空间

select tablespace_name,status,contents from dba_tablespaces where contents='TEMPORARY';

我们可以使用以下查询选择每个表空间中的文件

select file_name, tablespace_name, bytes from dba_temp_files
或
select a.name,b.name, a.bytes from v$tempfile a, v$tablespace b where a.ts#=b.ts#

3.1 如何检查 Temp 表空间的大小

这是有关如何在 oracle 中检查以 GB 为单位的临时表空间大小的查询

select tablespace_name,sum(bytes)/1024/1024/1024 temp_gb
from dba_temp_files group by tablespace_name;
or
select b.name, sum(a.bytes)/1024/1024/1024 from v$tempfile a, v$tablespace b where a.ts#=b.ts# group by b.name;

3.2 oracle如何查看临时表空间的可用空间

select tsh.tablespace_name,
dtf.bytes/1024/1024/1024 total_GB,
sum(nvl(tsh.bytes_used,0))/1024/1024/1024 used_GB,
sum(nvl(tsh.bytes_free,0))/1024/1024/1024 free_GB,
(1-sum(nvl(tsh.bytes_free,0))/dtf.bytes)*100 pct,
from v$temp_space_header tsh,
(select tablespace_name, sum(bytes) bytes
from dba_temp_files
group by tablespace_name) dtf
where dtf.tablespace_name = tsh.tablespace_name(+)
group by tsh.tablespace_name, dtf.bytes/1024, dtf.bytes
order by 1
/

在 11g 中,引入了一个新视图 dba_temp_free_space,因此我们也可以将其用作

SELECT * FROM dba_temp_free_space;

3.3 如何在实例级别检查临时表空间使用情况

select inst_id, tablespace_name, segment_file, total_blocks,
used_blocks, free_blocks, max_used_blocks, max_sort_blocks
from gv$sort_segment;
​
select inst_id, tablespace_name, blocks_cached, blocks_used
from gv$temp_extent_pool;
​
select inst_id,tablespace_name, blocks_used, blocks_free
from gv$temp_space_header;
​
select inst_id,free_requests,freed_extents
from gv$sort_segment;

3.4 如何查看 Temp 表空间的使用百分比

select tablespace_name, ' %free='|| round(sum(free_blocks) / sum(total_blocks) * 100 ,0)
from gv$sort_segment group by tablespace_name;

3.5 如何找到正在使用临时表空间的会话

set pagesize 50000 echo off verify off feedback off lines 80 heading on
col username format a15 head 'Username'
col osuser format a15 head 'OS User'
col sid format 99999 head 'Sid'
col logon_time format a14 head 'Logon Time'
col tablespace format a15 head 'Tablespace Name'
select
tablespace
, a.osuser
, a.username
, a.sid
, to_char(logon_time,'MM/DD/YY HH24:MI') logon_time
from v$session a, v$sort_usage b
where a.saddr = b.session_addr;

3.5 如何通过会话检查临时使用情况

SELECT s.sid、s.username、s.status、u.tablespace、u.segfile#、u.contents、u.extents、u.blocks 
FROM v$session s、v$sort_usage u 
WHERE s.saddr=u。 session_addr 
ORDER BY u.tablespace, u.segfile#, u.segblk#, u.blocks;

3.6 如果我们还想看到正在运行的 sql

SELECT a.username, a.sid, a.serial#, a.osuser, b.tablespace, b.blocks, c.sql_text 
FROM v$session a, v$tempseg_usage b, v$sqlarea c 
WHERE a.saddr = b .session_addr 
AND c.address= a.sql_address 
AND c.hash_value = a.sql_hash_value 
ORDER BY b.tablespace, b.blocks;

3.7 如何使用大量 TEMP 查找会话

col inst_id format 999
col sid format 99999
col status format a11
col program format a20 trunc
col machine format a17 trunc
col action format a39
col module format a39
col blocks heading "TEMP BLOCKS"
SELECT b.blocks, s.inst_id, s.sid, s.status,
s.action,
s.program,
s.machine,
s.module
FROM gv$session s,
gv$sort_usage b
WHERE s.saddr = b.session_addr
and s.inst_id = b.inst_id
and b.blocks > 100000
order by b.blocks desc;

四、oracle如何增加临时表空间

我们可以通过扩展现有文件或添加新的临时文件来增加临时表空间。

alter database tempfile '+DATA/test/tempfile01.dbf' resize 10000m ;
or
alter tablespace TEMP add tempfile '+DATA/test/tempfile02.dbf' resize 10000m ;

4.1 如何调整临时文件的大小

alter database tempfile '+DATA/test/tempfile01.dbf' resize 10000m ;

4.2 如何删除临时文件

无法从普通表空间中删除数据文件,但可以从临时表空间中删除临时文件。这是sql

ALTER DATABASE TEMPFILE '<temp file>' DROP INCLUDING DATAFILES;

到此这篇关于Oracle 中检查临时表空间的方法的文章就介绍到这了,更多相关Oracle 临时表空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ORACLE错误一览表 方便查询

    ORACLE错误一览表 方便查询

    这篇文章主要介绍了ORACLE错误一览表 方便查询,需要的朋友可以参考下
    2015-12-12
  • oracle数据排序后获取前几行数据的写法(rownum、fetch方式)

    oracle数据排序后获取前几行数据的写法(rownum、fetch方式)

    项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计,下面这篇文章主要给大家介绍了关于oracle数据排序后获取前几行数据的写法(rownum、fetch方式),需要的朋友可以参考下
    2022-12-12
  • oracle11g密码复杂性校验开启关闭方式

    oracle11g密码复杂性校验开启关闭方式

    这篇文章主要介绍了oracle11g密码复杂性校验开启关闭方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Oracle中行列转换的实现方法汇总

    Oracle中行列转换的实现方法汇总

    行列转换是指将行数据转换为列数据,或将列数据转换为行数据的过程,本文主要介绍了Oracle中行列转换的实现方法汇总,用PIVOT和UNPIVOT函数来实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • delete archivelog all无法清除归档日志解决方法

    delete archivelog all无法清除归档日志解决方法

    最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,究竟是什么原因呢?本文将为您解答,需要的朋友可以参考下
    2012-12-12
  • oracle 11g RAC 常用命令整理分享

    oracle 11g RAC 常用命令整理分享

    很多朋友会经常用到oracle 11g RAC的命令,今天我也用到了,同时也整理了一些常用的命令,以备不时之需
    2012-11-11
  • Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    这篇文章主要介绍了Linux中Oracle启动侦听时报错TNS:permission denied的解决方法,文中给出了详细的解决方法,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-02-02
  • plsql developer修改sql窗口的大小实现

    plsql developer修改sql窗口的大小实现

    本文主要介绍了plsql developer修改sql窗口的大小实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Oracle中实现类似于Mysql中的Field()函数功能

    Oracle中实现类似于Mysql中的Field()函数功能

    这篇文章主要详细介绍了在Oracle中如何实现类似于Mysql中的Field()函数功能,本文主要通过代码示例介绍了Oracle中的Decode()函数和Oracle中的row_number,需要的朋友可以参考下
    2023-06-06
  • Oracle数据库ORA-28040:没有匹配的验证协议解决办法

    Oracle数据库ORA-28040:没有匹配的验证协议解决办法

    这篇文章主要给大家介绍了关于Oracle数据库ORA-28040:没有匹配的验证协议问题的解决办法,ORA-28040是Oracle数据库的错误代码,表示没有匹配的验证协议,这通常是由于客户端和服务器之间的身份验证协议不匹配导致的,需要的朋友可以参考下
    2024-03-03

最新评论