oracle查询表空间, 临时表空间大小并调整
一. 表空间
1.1 查询表空间名, 和表空间大小:
SELECT a.tablespace_name "表空间名",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
1.2 查询结果展示
1.3 可以按照自己的需求, 扩大或者缩小表空间: (如果要缩小的话, 需要确保使用率比较低)
--修改oracle数据库的相关表空间, 扩大, 使其提高效率--ORA-30036
alter database datafile '/home/data/oracle/oradata/oracle/undotbs01.dbf' resize 31744M;
alter database datafile '/home/data/oracle/oradata/oracle/sysaux01.dbf' resize 2760M;
--alter database datafile '/home/data/oracle/oradata/oracle/system01.dbf' resize 2760M;
二. 临时表空间
2.1 查询临时表空间的使用率
select c.tablespace_name,to_char(c.bytes/1024/1024/1024,'99,999.999') total_gb,
to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99,999.999') free_gb,
to_char(d.bytes_used/1024/1024/1024,'99,999.999') use_gb,
to_char(d.bytes_used*100/c.bytes,'99.99') || '%'use
from (select tablespace_name,sum(bytes) bytes
from dba_temp_files GROUP by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool GROUP by tablespace_name) d
where c.tablespace_name = d.tablespace_name;
2.2 修改临时表空间大小:
--加大临时表空间,增加数据处理数量和效率 ALTER DATABASE TEMPFILE '/home/data/oracle/oradata/oracle/temp01.dbf' RESIZE 20480M;
ALTER DATABASE TEMPFILE '/home/data/oracle/oradata/oracle/sunway_1_temp.dbf' RESIZE 20480M;
查询那些用户在使用
select a.username,a.sql_id,a.SEGTYPE,
b.BYTES_USED/1024/1024/1024||'G',
b.BYTES_FREE/1024/1024/1024 from V$TEMPSEG_USAGE a join V$TEMP_SPACE_HEADER b on a.TABLESPACE=b.tablespace_name;
解释username 正在执行sql的用户名
sql_id 正在执行的sql的的sql_id
segtype 正在执行的SQL语句做的是什么操作
BYTES_USED 正在执行sql语句使用的临时表空间的大小
BYTES_FREE 剩余多少临时表空间
2.4 查询实例中时候是否有大字段在使用临时表空间:
select * from V$TEMPORARY_LOBS;