欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle表空间满处理方式

程序员文章站 2022-10-08 21:06:04
一、查询表空间常规语句 1.查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", To_char(Roun ......

一、查询表空间常规语句

1.查询表空间使用情况

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)",

       f.max_bytes                      "最大块(m)"

from   (select tablespace_name,

               round(sum(bytes) / ( 1024 * 1024 ), 2) 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(dd.bytes) / ( 1024 * 1024 ), 2) tot_grootte_mb

        from   sys.dba_data_files dd

        group  by dd.tablespace_name) d

where  d.tablespace_name = f.tablespace_name

order  by 1

 

2、查询表空间的free space

select tablespace_name, count(*) as extends,round(sum(bytes) / 1024 / 1024, 2) as mb,sum(blocks) as blocks from dba_free_space group by tablespace_name;

 

3、查询表空间的总容量

select tablespace_name, sum(bytes) / 1024 / 1024 as mb from dba_data_files group by tablespace_name;

--查询表空间使用率

select total.tablespace_name,

       round(total.mb, 2)           as total_mb,

       round(total.mb - free.mb, 2) as used_mb,

       round(( 1 - free.mb / total.mb ) * 100, 2)

       || '%'                       as used_pct

from   (select tablespace_name,

               sum(bytes) / 1024 / 1024 as mb

        from   dba_free_space

        group  by tablespace_name) free,

       (select tablespace_name,

               sum(bytes) / 1024 / 1024 as mb

        from   dba_data_files

        group  by tablespace_name) total

where  free.tablespace_name = total.tablespace_name;

 二、解决表空间满实例

1、20160613处理ydjc表空间满,处理情况

1)查询表空间使用效率

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)",

       f.max_bytes "最大块(m)"

  from (select tablespace_name,

               round(sum(bytes) / (1024 * 1024), 2) 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(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb

          from sys.dba_data_files dd

         group by dd.tablespace_name) d

 where d.tablespace_name = f.tablespace_name

 order by 1

2)查询文件:

select * from dba_data_files d where d.tablespace_name='tbs_master'

3)执行增加数据文件

alter tablespace tbs_master add datafile '+data_asm/ipsd/tbs_master16.dbf' size 1g autoextend on next 10m maxsize unlimited

2、20160921处理临时表空间不足问题:

--新增临时表空间

select * from dba_temp_files d where d.tablespace_name='temp';

--新增临时表空间

alter tablespace temp add tempfile '/data/devgbk/devgbk/temp02.dbf' size 1g autoextend on next 10m maxsize unlimited;

select d.*,d.user_bytes/d.bytes from dba_temp_files d where d.tablespace_name='temp';

--修改已经临时表空间大小

alter database tempfile '+data_asm/ipsd/temp03.dbf' resize 20g;