oracle 数据库怎么查看temp表空间使用情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库怎么查看temp表空间使用情况相关的知识,希望对你有一定的参考价值。

查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)
GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小
dba_temp_files视图的bytes字段记录的是临时表空间的总大小:

SELECT temp_used.tablespace_name,
      total - used as "Free",
      total as "Total",
      round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
 FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
         FROM GV_$TEMP_SPACE_HEADER
        GROUP BY tablespace_name) temp_used,
      (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
         FROM dba_temp_files
        GROUP BY tablespace_name) temp_total
WHERE temp_used.tablespace_name = temp_total.tablespace_name
ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;

参考技术A ---查看表空间使用率大于80%的语句
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB-F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2),'990.99') "使用百分比",
F.TOTAL_BYTES "空闲空间(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)/1024/1024) TOTAL_BYTES,
ROUND(MAX(BYTES)/(1024*1024),2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(BYTES)/1024/1024) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME=F.TABLESPACE_NAME AND ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2)>80
ORDER BY 2 DESC;
----查看表空间所在的数据文件
select file_name from dba_data_files where tablespace_name='users';

具体情况可根据上述语句灵活改变

oracle数据库创建自动增长的表空间语句怎么写?

要创建个JYDB的表空间,最初大小为5G,空间满了每次自动增长1G,最好能设置剩余10%空间自动增长。

按磁盘剩余空间的10%自动增长,这个实现不了。 如果表空间设置为自动增长,在空间不足的情况下Oracle系统会自动增长表空间的,但是也不会超过磁盘的总空间大小。 创建表空间的语法如下:create tablespace jydbdatafile 'XXX\XXX\xx.dbf' --这里数据文件的路径你自己视情况定size 5120Mautoextend onnext 1024Mextent management local --这里设置表空间为本地管理 参考技术A

create tablespace news_tablespace datafile 'c:\\SmartDB01.ora' size 500M;

设置表空间自动增长

ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON;//打开自动增长
ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON NEXT 200M ;//每次自动增长200m
ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自动增长200m,数据表最大不超过1G

参考技术B CREATE SMALLFILE TABLESPACE "表空间名称" DATAFILE '表空间保存的路径' SIZE 20M AUTOEXTEND ON NEXT 20K MAXSIZE UNLIMITED NOLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS; 参考技术C create tablespace "JYDB" logging datafile 'd:\oracle\oradata\JYDB.dbf' size 5000M autoextend on next 1000M maxsize unlimited extent management local segment space management auto; 参考技术D create tablespace JYDB datafile 'path' SIZE 5000M AUTOEXTEND ON NEXT 1024M
MAXSIZE UNLIMITED MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

以上是关于oracle 数据库怎么查看temp表空间使用情况的主要内容,如果未能解决你的问题,请参考以下文章

如何处理Oracle中TEMP表空间满的问题

用户的默认或临时表空间不存在 怎么解决

怎么察看Oracle 数据库表空间的使用情况

oracle怎么删除表空间下所有的表

Oracle 表空间详解

oracle数据库还原段和TEMP表空间满了各对业务会有啥影响?