方法一:
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/