数据库oracle11G,如何通过plsql查询表空间大小,如何通过PLSQL把一个表空间的大小设置成自动扩展

数据库oracle11G,如何通过plsql查询表空间大小,如何通过PLSQL把一个表空间的大小设置成自动扩展,第1张

sql语句

1查询表空间大小

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

2设置数据文件为自动拓展

alter database datafile n autoextend on ;

不知道你说的两个东西有什么关联性。

下面是设置全部数据文件为自动拓展的plsql匿名块:

begin
  for 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;

//查看表空间剩余空间(m)
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数据库大小


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13217398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-22
下一篇 2023-06-22

发表评论

登录后才能评论

评论列表(0条)

保存