sql语句
select tablespace_name , sum(bytes/1024/1024) sizeM from dba_data_files group by tablespace_name ;
2设置数据文件为自动拓展
alter database datafile n autoextend on ;
不知道你说的两个东西有什么关联性。
下面是设置全部数据文件为自动拓展的plsql匿名块:
beginfor rec in (select file_id , autoextensible from dba_data_files where autoextensible='NO') loop
execute immediate 'alter database datafile '||recfile_id||' autoextend on ' ;
end loop ;
end ;select
bfile_name 物理文件名,
btablespace_name 表空间,
bbytes/1024/1024 大小M,
(bbytes-sum(nvl(abytes,0)))/1024/1024 已使用M,
substr((bbytes-sum(nvl(abytes,0)))/(bbytes)100,1,5) 利用率
from dba_free_space a,dba_data_files b
where afile_id=bfile_id
group by btablespace_name,bfile_name,bbytes
order by btablespace_name
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。
Oracle中查询所有表及其所使用的表空间可以使用SQL语句:
select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name;
在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施。
扩展资料
oracle一些其他表空间查询方法介绍:
1、查询oracle系统用户的默认表空间和临时表空间
select default_tablespace,temporary_tablespace from dba_users;
2、查询单张表的使用情况
select segment_name,bytes from dba_segments where segment_name = 'tablename' and owner = USER;
3、查询所有用户表使用大小的前三十名
select from (select segment_name,bytes from dba_segments where owner = USER order by bytes desc ) where rownum <= 30;
4、查看表空间物理文件的名称及大小
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 1024), 0) total_space
FROM dba_data_files ORDER BY tablespace_name;
select
tablespace_name,sum(bytes)/1024/1024
free_space
from
dba_free_space
group
by
tablespace_name;
//详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间
select
t
from
(select
dtablespace_name,
space
"sum_space(m)",
blocks
sum_blocks,
space
-
nvl(free_space,
0)
"used_space(m)",
round((1
-
nvl(free_space,
0)
/
space)
100,
2)
"used_rate(%)",
free_space
"free_space(m)"
from
(select
tablespace_name,
round(sum(bytes)
/
(1024
1024),
2)
space,
sum(blocks)
blocks
from
dba_data_files
group
by
tablespace_name)
d,
(select
tablespace_name,
round(sum(bytes)
/
(1024
1024),
2)
free_space
from
dba_free_space
group
by
tablespace_name)
f
where
dtablespace_name
=
ftablespace_name(+)
union
all
--if
have
tempfile
select
dtablespace_name,
space
"sum_space(m)",
blocks
sum_blocks,
used_space
"used_space(m)",
round(nvl(used_space,
0)
/
space
100,
2)
"used_rate(%)",
space
-
used_space
"free_space(m)"
from
(select
tablespace_name,
round(sum(bytes)
/
(1024
1024),
2)
space,
sum(blocks)
blocks
from
dba_temp_files
group
by
tablespace_name)
d,
(select
tablespace,
round(sum(blocks
8192)
/
(1024
1024),
2)
used_space
from
v$sort_usage
group
by
tablespace)
f
where
dtablespace_name
=
ftablespace(+))
t
order
by
"used_rate(%)"
desc;
select
tablespace_name,
sum
(
blocks
)
as
free_blk
,
trunc
(
sum
(
bytes
)
/
(10241024)
)
as
free_m,
max
(
bytes
)
/
(1024)
as
big_chunk_k,
count
()
as
num_chunks
from
dba_free_space
group
by
tablespace_name;
查看方法:
1、查看所有表空间及表空间大小:
select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
2、查看所有表空间对应的数据文件:
select tablespace_name,file_name from dba_data_files;
3、修改数据文件大小:
alter database datafile 'H:\ORACLE\PRODUCT\1010\ORADATA\ORACLE\USERS01DBF' RESIZE 10240M;
扩展资料
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
参考资料
csdn:怎么查看oracle数据库大小
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)