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 查询结果展示

oracle查询表空间, 临时表空间大小并调整_oracle


    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;