百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Oracle数据库的表有多大呢?(oracle表空间一般多大)

sinye56 2024-09-16 14:34 7 浏览 0 评论

一般来说,查表占据了多少的物理空间用的是dba_segments这个数据字典,这个数据字典展示了segment_type(段类型,如table,index,function,procedure 等等的段类型),bytes(段大小),blocks(段占用了多少个数据块)extents(分配了多少个区)等吧,信息很详细,可以直接select * from dba_segments;查看,用具有查看数据字典权限的用户查看。(给用户授予了SELECT_CATALOG_ROLE角色,普通用户就具有了查询数据字典的权限。)一般不要给普通用户dba角色,保持权限最小化原则。

1. 查看一般表的大小

select segment_name,segment_type,bytes/1024/1024 M from dba_segments where segment_name='SETTINGS#39; and segment_type='TABLE';

2. 查看带有LOB字段的表的大小

LOB字段是有额外的专门区域存放,查看带有LOB字段的表的大小比较复杂,分为了普通的字段大小,LOB字段大小,LOB索引字段大小,三个部分。

SELECT (SELECT SUM(S.BYTES/1024/1024/1024)

-- The Table Segment size

FROM DBA_SEGMENTS S WHERE S.OWNER = UPPER('表的owner') AND (S.SEGMENT_NAME = UPPER('表名'))) + (SELECT

SUM(S.BYTES/1024/1024/1024)

-- The Lob Segment Size

FROM DBA_SEGMENTS S, DBA_LOBS L WHERE S.OWNER = UPPER('表的owner') AND (L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('表名') AND L.OWNER =

UPPER('表的owner'))) + (SELECT SUM(S.BYTES/1024/1024/1024)

-- The Lob Index size

FROM DBA_SEGMENTS S, DBA_INDEXES I WHERE S.OWNER = UPPER('表的owner') AND

(I. INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('表名') AND INDEX_TYPE= 'LOB' AND I.OWNER = UPPER('表的owner'))) "TOTAL TABLE SIZE" FROM DUAL;

详细介绍内容可以查看Doc ID 118531.1

如果想查看这个库里有多少个带有LOB字段的表呢?通过dba_lobs可以查看。

例如:select distinct owner,table_name from dba_lobs where owner in ('***',’***’);

如果搜出几百个几千个LOB字段的表,一个个查大小,会很久…………

怎么把带有LOB字段的表一次性列出来呢?

先创建一个临时表:

SQL> create table candidates (owner varchar2(30),segment_name varchar2(81));

再把上面查出来的带有LOB字段的表插入进临时表里:

SQL> insert into candidates values ('owner','table_name');

然后利用游标:

SQL> set serveroutput on

SQL> declare

cursor cur_temp is select owner, segment_name from candidates;

v_owner varchar2(30);

v_segment_name varchar2(81);

v_total_table_size number;

begin

open cur_temp;

fetch cur_temp into v_owner,v_segment_name;

while cur_temp%FOUND

loop

SELECT

(

SELECT

nvl(SUM(S.BYTES/1024/1024/1024),0)

FROM

DBA_SEGMENTS S

WHERE

S.OWNER = UPPER(v_owner) AND

(S.SEGMENT_NAME = UPPER(v_segment_name)))

+

(SELECT

nvl(SUM(S.BYTES/1024/1024/1024),0)

FROM

DBA_SEGMENTS S,

DBA_LOBS L

WHERE

S.OWNER = UPPER(v_owner) AND

(L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER(v_segment_name) AND

L.OWNER = UPPER(v_owner))

)

+

(SELECT

nvl(SUM(S.BYTES/1024/1024/1024),0)

FROM

DBA_SEGMENTS S,

DBA_INDEXES I

WHERE

S.OWNER = UPPER(v_owner) AND

(I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER(v_segment_name) AND INDEX_TYPE= 'LOB' AND I.OWNER = UPPER(v_owner))

) "TOTAL TABLE SIZE" into v_total_table_size

FROM

DUAL;

DBMS_OUTPUT.PUT_LINE('Table '||v_segment_name||': '||v_total_table_size);

fetch cur_temp into v_owner,v_segment_name;

end loop;

end;

/

就会把带有LOB字段的表大小都列出来了。

一般查大小就只查dba_segments了,查LOB的时候好像不多。偶尔查一下就用步骤2的方法就行,也是官方提供的。

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: