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;
2.3 查询那些用户在使用
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;