1.
查看所有表空间大小
SQL>
select
tablespace_name,sum(bytes)/1024/1024。
from
dba_data_files
group
by
tablespace_name;。
2.
已经使用的表空间大小
SQL>
select
tablespace_name,sum(bytes)/1024/1024。
from
dba_free_space
group
by
tablespace_name;。
3.
所以使用空间可以这样计算
select
a.tablespace_name,total,free,total-free。
used
from
select
tablespace_name,sum(bytes)/1024/1024。
total
from
dba_data_files
group
by
tablespace_name)。
a,
select
tablespace_name,sum(bytes)/1024/1024。
free
from
dba_free_space
group
by
tablespace_name)。
where
a.tablespace_name=b.tablespace_name;。
4.
下面这条语句查看所有segment的大小。
Select
Segment_Name,Sum(bytes)/1024/1024。
From
User_Extents
Group
By
Segment_Name
5.
还有在命令行情况下如何将结果放到一个文件里。
SQL>
spool
out.txt
SQL>
select
from
v$database;
SQL>
spool
off
oracle
数据库里查看表空间使用状况;
oracle表空间的事情状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下sql:。
方法一:
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
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。
where
a.ts#
b.ts#
group
by
b.name
total
where
free.tablespace_name。
total.name
当发现有的表空间不够的错误时,处理如下:
1:找出该表空间对应的数据文件及路径。
select
from
dba_data_files
where
t.tablespace_name。
'ard'
2:增大数据文件
alter
database
datafile
'全路径的数据文件名称'
resize
***m
3:增加数据文件
alter
tablespace
表空间名称
add
datafile
'全路径的数据文件名称'
***m
注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2g。
sql系统存储过程:sp_spaceused '表名',可以查看表使用空间的情况。
如图 data,即已使用的空间。
oracle表空间使用率需要调整到多少,具体解决方案如下:
解决方案1:
不宜超过80%,除非你表空间内的表数据都是完全连续存储的。
解决方案2:
设成可自动拓展的,就不用管这些了。
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;
--查询表空间的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;。
2、查询表空间的总容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB。
from dba_data_files。
group by tablespace_name;。
3、查询表空间使用率
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;。
可用如下语句:
select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes / 1024 / 1024 大小M,(b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 已使用M,。
substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率 。
from dba_free_space a,dba_data_files b 。
where a.file_id = b.file_id。
group by b.tablespace_name,b.file_name, b.bytes 。
order by b.tablespace_name;。
查询结果:
解读:
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。