如何使用SQL语句查询数据库及表的空间容量

发布网友

我来回答

3个回答

懂视网

1.先explain plan for 目标sql:

explain plan for WITH sales_countries AS
 (SELECT /*+ gather_plan_statistics */
   cu.cust_id, co.country_name
    FROM sh.countries co, sh.customers cu
   WHERE cu.country_id = co.country_id),
top_sales AS
 (SELECT p.prod_name,
         sc.country_name,
         s.channel_id,
         t.calendar_quarter_desc,
         s.amount_sold,
         s.quantity_sold
    FROM sh.sales s
    JOIN sh.times t
      ON t.time_id = s.time_id
    JOIN sh.customers c
      ON c.cust_id = s.cust_id
    JOIN sales_countries sc
      ON sc.cust_id = c.cust_id
    JOIN sh.products p
      ON p.prod_id = s.prod_id),
sales_rpt AS
 (SELECT prod_name product,
         country_name country,
         channel_id channel,
         substr(calendar_quarter_desc, 6, 2) quarter,
         SUM(amount_sold) amount_sold,
         SUM(quantity_sold) quantity_sold
    FROM top_sales
   GROUP BY prod_name,
            country_name,
            channel_id,
            substr(calendar_quarter_desc, 6, 2))
SELECT *
  FROM (SELECT product, channel, quarter, country, quantity_sold
          FROM sales_rpt) pivot(SUM(quantity_sold) FOR(channel, quarter) IN((5, ‘02‘) AS
                                                                            catalog_q2,
                                                                            (4, ‘01‘) AS
                                                                            internet_q1,
                                                                            (4, ‘04‘) AS
                                                                            internet_q4,
                                                                            (2, ‘02‘) AS
                                                                            partners_q2,
                                                                            (9, ‘03‘) AS
                                                                            tele_q3))
 46   ORDER BY product, country
 47  /
Explained.
Elapsed: 00:00:00.37

SQL>

2.用以下sql可以查询出相关表的大小:

 

SQL> col segment_name for a20
select owner, segment_name,segment_type, sum(bytes / 1024 / 1024) "Size(Mb)"
  from dba_segments
 where owner in (select /*+ no_unnest */ object_owner from plan_table)
   and segment_name in (select /*+ no_unnest */   object_name from plan_table)
 group by owner,segment_type, segment_name
UNION
----table in the index
select owner, ‘*‘||segment_name ,segment_type, sum(bytes / 1024 / 1024) "Size(Mb)"
  from dba_segments
 where owner in (select  table_owner
          from dba_indexes
         where owner in (select /*+ no_unnest */  object_owner from plan_table)
           and index_name in (select /*+ no_unnest */  object_name from plan_table))
   and segment_name in (select /*+ no_unnest */  table_name
          from dba_indexes
         where owner in (select /*+ no_unnest */  object_owner from plan_table)
           and index_name in (select /*+ no_unnest */  object_name from plan_table))
 group by owner,segment_type, segment_name
   order by 3,4;

OWNER          SEGMENT_NAME     SEGMENT_TYPE  Size(Mb)
------------------------------ -------------------- ------------------ ----------
SH          COUNTRIES     TABLE      .0625
SH          PRODUCTS      TABLE      .0625
SH          TIMES      TABLE         .5
SH          CUSTOMERS     TABLE         12
SH          SALES      TABLE PARTITION       128

Elapsed: 00:00:05.35

 

查询复杂sql的表的大小

标签:oracle 性能优化

热心网友

--1、查看表空间的名称及大小
select
t.tablespace_name,
round(sum(bytes/(1024*1024)),0)
ts_size
from
dba_tablespaces
t,
dba_data_files
d
where
t.tablespace_name
=
d.tablespace_name
group
by
t.tablespace_name;
--2、查看表空间物理文件的名称及大小
select
tablespace_name,
file_id,
file_name,
round(bytes/(1024*1024),0)
total_space
from
dba_data_files
order
by
tablespace_name;
3.查看所有表空间使用情况
select
b.file_id
文件ID号,
b.tablespace_name
表空间名,
b.bytes/1024/1024||'M'字节数,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M'
已使用,
sum(nvl(a.bytes,0))/1024/1024||'M'
剩余空间,
round(100
-
sum(nvl(a.bytes,0))/(b.bytes)*100,2)||
'%'
占用百分比
from
dba_free_space
a,dba_data_files
b
where
a.file_id=b.file_id
group
by
b.tablespace_name,b.file_id,b.bytes
order
by
b.file_id;
总有一款适合你!

热心网友

sybase公司是世界著名的数据库厂家,其关系数据库产品sybase
sql
server在中国大中型企事业单位中拥有大量的用户。针对获取数据库相关信息也提供了对应的api,以便管理进行维护。
一.sp_spaceused
可看到数据库空间包括日志(对应数据库)
打开sql
advantage
对话框——输入sp_spaceused(上边数据库选择要查的数据库)或直接
use
your_db_name
go
sp_spaceused
go
运行!出现如下信息
database
name:数据库名称
datebase
size:数据库空间总大小
reserved:已分配空间
data数据:已分配空间中数据占用空间大小
index_size索引:已分配空间中index_size索引占用空间大小
unused:为已分配空间中未使用空间大小
计算关系:
reserved(已分配空间)=data+index_size+unused
剩余空间=
datebase
size(总空间)—已分配空间(resrved)
二.sp_helpdb
db_name
可看到数据库占用的数据库设备device的空间信息(对应数据库设备和数据库)
打开sql
advantage
对话框——输入sp_s
helpdb
db
local(local为要看的数据库名字如不输入则显示所有数据库)
运行!显示如下信息:
(一).数据库方面
1.
name:数据库名字
2.
db_size:数据库空间大小
3.
owner:数据库所有者
4.
created:数据库创建时间
5.
status:状态
(二).数据库设备方面
1.
device_fragments:数据库设备名称
2.
size:数据库占用数据库设备的空间大小
单位mb
3.
usage:用法
用途
4.
created:数据库占用的数据库设备的空间的创建时间
5.
free
kbytes
:数据库占用的数据库设备的剩余空间
单位kb
6.
log
only
free
kbytes:数据库日志设备中日志剩余空间
单位kb
注意:由于数据库创建后不一定全部占用数据库设备的所有空间,可以在以后通过增加的方法占用设备空间,因此每增加一次就会有一条数据库设备信息
计算关系:
剩余空间=所有free
kbytes(剩余kb)相加+log
only
free
kbytes
数据库占用数据库设备总空间(size)=size1+size2+……..(所有相加)=数据库总空间(db_size)=
reserved(已分配空间)+剩余空间
free
kbytes(剩余kb)相加+log
only
free
kbytes=
datebase
size(总空间)—已分配空间(resrved)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com