怎么查看oracle表空间,剩余大小,表空间利用

怎么查看oracle表空间,剩余大小,表空间利用,第1张

1、因为oracle运行在Linux系统下,首先,要连接Linux系统。

2、连上后,进行oracle控制台。输入命令: sqlplus  / as sysdba;

3、在sql命令行,输入:

SELECT UPPER(FTABLESPACE_NAME) "表空间名",DTOT_GROOTTE_MB "表空间大小(M)",DTOT_GROOTTE_MB - FTOTAL_BYTES "已使用空间(M)",

TO_CHAR(ROUND((DTOT_GROOTTE_MB - FTOTAL_BYTES) / DTOT_GROOTTE_MB 100,2),'99099') || '%' "使用比",FTOTAL_BYTES "空闲空间(M)",FMAX_BYTES "最大块(M)"

FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 1024), 2) MAX_BYTES,

FROM SYSDBA_FREE_SPACE,GROUP BY TABLESPACE_NAME) F,

(SELECT DDTABLESPACE_NAME,ROUND(SUM(DDBYTES) / (1024 1024), 2) TOT_GROOTTE_MB,

FROM SYSDBA_DATA_FILES DD,GROUP BY DDTABLESPACE_NAME) D,

WHERE DTABLESPACE_NAME = FTABLESPACE_NAME,ORDER BY 1;

4、这样就可以查看到相应结果。 完成效果图。

--1、查看表空间的名称及大小

select

ttablespace_name,

round(sum(bytes/(10241024)),0)

ts_size

from

dba_tablespaces

t,

dba_data_files

d

where

ttablespace_name

=

dtablespace_name

group

by

ttablespace_name;

--2、查看表空间物理文件的名称及大小

select

tablespace_name,

file_id,

file_name,

round(bytes/(10241024),0)

total_space

from

dba_data_files

order

by

tablespace_name;

3查看所有表空间使用情况

select

bfile_id

文件ID号,

btablespace_name

表空间名,

bbytes/1024/1024||'M'字节数,

(bbytes-sum(nvl(abytes,0)))/1024/1024||'M'

已使用,

sum(nvl(abytes,0))/1024/1024||'M'

剩余空间,

round(100

-

sum(nvl(abytes,0))/(bbytes)100,2)||

'%'

占用百分比

from

dba_free_space

a,dba_data_files

b

where

afile_id=bfile_id

group

by

btablespace_name,bfile_id,bbytes

order

by

bfile_id;

总有一款适合你!

1 查看数据库的索引空间大小

在MySQL Workbench中运行以下SQL语句:

— 以GB为单位

SELECT

CONCAT(ROUND(SUM(index_length)/(102410241024), 6), ‘ GB’) AS ‘Total Index Size’

FROM

information_schemaTABLES

WHERE

table_schema LIKE ‘database’;

— 以MB为单位

SELECT

CONCAT(ROUND(SUM(index_length)/(10241024), 6), ‘ MB’) AS ‘Total Index Size’

FROM

information_schemaTABLES

WHERE

table_schema LIKE ‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:

2 查看数据库的数据空间大小

在MySQL Workbench中运行以下SQL语句:

— 以GB为单位

SELECT

CONCAT(ROUND(SUM(data_length)/(102410241024), 6), ‘ GB’) AS ‘Total Data Size’

FROM

information_schemaTABLES

WHERE

table_schema LIKE ‘database’;

— 以MB为单位

SELECT

CONCAT(ROUND(SUM(data_length)/(10241024), 6), ‘ MB’) AS ‘Total Data Size’

FROM

information_schemaTABLES

WHERE

table_schema LIKE ‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:

3 查看数据库中所有表的信息

在MySQL Workbench中运行以下SQL语句,查看数据库中所有表的表名、表行数、数据空间大小、索引空间大小和总大小:

SELECT

CONCAT(table_schema,’’,table_name) AS ‘Table Name’,

table_rows AS ‘Number of Rows’,

CONCAT(ROUND(data_length/(10241024),6),’ MB’) AS ‘Data Size’,

CONCAT(ROUND(index_length/(10241024),6),’ MB’) AS ‘Index Size’,

CONCAT(ROUND((data_length+index_length)/(10241024),6),’ MB’) AS’Total Size’

FROM

information_schemaTABLES

WHERE

table_schema LIKE ‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。

打开oracle控制台,在oracle命令行中,输入命令。

一、首先,要连接Linux系统。

二、连上后,进行oracle控制台。输入命令: sqlplus  / as sysdba;

三、在oracle命令行中,输入: select t1name,t2name  from v$tablespace t1,v$datafile t2 where t1ts# = t2ts#;

四、这样就可以查看oracle数据库的表空间数据文件位置了。

一 查询某个表所在表空间的简单方法

PostgreSQL 提供类似" \ "命令很方便得到相关信息,命令如下:

skytf=> \d test_2

Table "skytftest_2"

Column | Type | Modifiers

--------+-----------------------+-----------

id | integer |

obj_id | integer | not null

name | character varying(64) |

Indexes:

"idx_hash_name" hash (name)

"idx_test_2" btree (id, obj_id)

Tablespace: "tbs_skytf_idx"

备注:如果这个表的表空间为当前数据库的默认表空间,那么上面则不会显示 Tablespace 信息,

相反,则会显示这张有的表空间,例如上面的表 test_2 的表空间为 tbs_skytf_idx,而

表空间 "tbs_skytf_idx" 不是数据库 skytf 的默认表空间, 那么如何查询数据库的默认

表空间呢,可以通过以下命令查询。

--11 查询数据库的默认表空间

skytf=> select datname,dattablespace from pg_database where datname='skytf';

datname | dattablespace

---------+---------------

skytf | 14203070

(1 row)

skytf=> select oid,spcname from pg_tablespace where oid=14203070;

oid | spcname

----------+-----------

14203070 | tbs_skytf

(1 row)

备注:通过以上查出数据库 skytf 的默认表空间为 tbs_skytf。

二 批量查询数据库表和索引的表空间

--21 查询表和索引所在的表空间

select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)), tbspcname

from pg_class a, pg_tablespace tb

where areltablespace = tboid

and arelkind in ('r', 'i')

order by arelpages desc;

备注:上面只取了部分结果,这个查询能够查询表和索引所处的表空间,但是有一点需要注意,这个查询

仅显示表空间不是数据库默认表空间的数据库对像,而我们通常需要查出位于数据库默认表空间的

对像,显然上面的查询不是我们想要的,接下来看另一个查询。

--22 查询位于默认数据库表空间的对像

select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner

from pg_class a

where arelkind in ('r', 'i')

and reltablespace='0'

order by arelpages desc;

备注:这个查询加入限制条件 reltablespace='0',即可查找出位于当前数据库默认表空间的

数据库表和索引。 通常这才是我们想要的结果,接下来可以把部分表转移到其它表空间上去,转移

的方法可以用 "ALTER TABLE move tablespace "或者重建索引移表空间等方法,这里不详细介绍。

--23 查询在某个表空间上的对像

select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner

from pg_class a, pg_tablespace tb

where arelkind in ('r', 'i')

and areltablespace=tboid

and tbspcname='tablespace_name'

order by arelpages desc;

--24 手册上对于 pgclass 视图的 reltablespace 字段解释

The tablespace in which this relation is stored If zero, the database is default tablespace is

implied (Not meaningful if the relation has no on-disk file)

oracle 数据库里查看表空间使用状况;

oracle表空间的事情状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下SQL:

方法一:

select dbftablespace_name,

dbftotalspace "总量(M)",

dbftotalblocks as 总块数,

dfsfreespace "剩余总量(M)",

dfsfreeblocks "剩余块数",

(dfsfreespace / dbftotalspace) 100 "空闲比例"

from (select ttablespace_name,

sum(tbytes) / 1024 / 1024 totalspace,

sum(tblocks) totalblocks

from dba_data_files t

group by ttablespace_name) dbf,

(select tttablespace_name,

sum(ttbytes) / 1024 / 1024 freespace,

sum(ttblocks) freeblocks

from dba_free_space tt

group by tttablespace_name) dfs

where trim(dbftablespace_name) = trim(dfstablespace_name)

方法二:

SELECT Totalname "Tablespace Name",

Free_space, (total_space-Free_space) Used_space, total_space

FROM

(select tablespace_name, sum(bytes/1024/1024) Free_Space

from sysdba_free_space

group by tablespace_name

) Free,

(select bname, sum(bytes/1024/1024) TOTAL_SPACE

from sysv_$datafile a, sysv_$tablespace B

where ats# = bts#

group by bname

) Total

WHERE FreeTablespace_name = Totalname

当发现有的表空间不够的错误时,处理如下:

1:找出该表空间对应的数据文件及路径

select from dba_data_files t

where ttablespace_name = 'ARD'

2:增大数据文件

alter database datafile '全路径的数据文件名称' resize M

3:增加数据文件

alter tablespace 表空间名称

add datafile '全路径的数据文件名称' M

注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2G

可以通过PL/SQL查看。\x0d\1 查看所有表空间大小\x0d\ select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; \x0d\2 未使用的表空间大小 \x0d\select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; \x0d\\x0d\补充回答:\x0d\查看当前用户每个表占用空间的大小: \x0d\Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

以上就是关于怎么查看oracle表空间,剩余大小,表空间利用全部的内容,包括:怎么查看oracle表空间,剩余大小,表空间利用、如何使用SQL语句查询数据库及表的空间容量、怎么通过SQL语句查看MySQL数据库的表空间状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9866021.html

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

发表评论

登录后才能评论

评论列表(0条)

保存