oracle 数据库里查看表空间使用状况;

oracle表空间的事情状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下SQL:[@more@]

方法一:

select dbf.tablespace_name,
dbf.totalspace "总量(M)",
dbf.totalblocks as 总块数,
dfs.freespace "剩余总量(M)",
dfs.freeblocks "剩余块数",
(dfs.freespace / dbf.totalspace) * 100 "空闲比例"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name)

方法二:

SELECT Total.name "Tablespace Name",
Free_space, (total_space-Free_space) Used_space, total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name = Total.name

当发现有的表空间不够的错误时,处理如下:
1:找出该表空间对应的数据文件及路径

select * from dba_data_files t
where t.tablespace_name = 'ARD'

2:增大数据文件

alter database datafile '全路径的数据文件名称' resize ***M

3:增加数据文件

alter tablespace 表空间名称

add datafile '全路径的数据文件名称' size ***M

注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2G
如果表空间剩余足够,还是提示ORA-01653的错误,可以查看数据文件是否自动扩展,如下sql:
SELECT T.TABLESPACE_NAME,
       D.FILE_NAME,
       D.AUTOEXTENSIBLE,
       D.BYTES,
       D.MAXBYTES,
       D.STATUS
  FROM DBA_TABLESPACES T, DBA_DATA_FILES D
 WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
 ORDER BY TABLESPACE_NAME, FILE_NAME;
然后将数据文件改成自动扩展:如下sql
ALTER DATABASE
    DATAFILE '/u01/app/oracle/oradata/bieeprd/BI_DATA04' AUTOEXTEND
ON NEXT 50M MAXSIZE UNLIMITED 

4:检查tablespace的free空间能不能满足最大的next_extent,不能则扩展tablespace

select s.owner,s.segment_name,s.segment_type,s.tablespace_name, s.next_extent
from dba_segments s
where s.next_extent > (select MAX(f.bytes)
from dba_free_space f
where f.tablespace_name = s.tablespace_name)
order by s.tablespace_name

5:临时表空间不够得处理办法

查询临时表空间信息,如下两个视图里面可以:

select * from dba_temp_files;

select * from v$tempfile

空间不够可以通过如下三种方法增大空间:

方法一、增大临时文件大小:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;

方法二、将临时数据文件设为自动扩展:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
方法三、向临时表空间中添加数据文件:
SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;

一般不用方法2,不要将临时表空间无限扩展;


6:创建临时表空间

创建临时表空间:
SQL> create temporary tablespace temp1 tempfile '/u01/app/oracle/oradata/orcl/temp11.dbf' size 10M;
7:更改系统的临时表空间

更改系统的默认临时表空间:
SQL> alter database default temporary tablespace temp1;

8:更改某一用户的临时表空间:
SQL> alter user scott temporary tablespace temp;

有些表空间它虽然空闲百分比是90,但它只有不到9m的空闲空间,而CUG_INCIDNT_ATTR_VALS_B的nextextent是33554432
,33m,这种情况不是看百分比的,而是要比较free空间大小跟nextextent,也可以将表或者索引的next extent缩小,这个要看具体 决定了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8109090/viewspace-919368/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8109090/viewspace-919368/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值