Oracle--查詢表空間、schema、表等存儲情況操作


一、對表空間的查詢

表空間是數據庫的邏輯划分,一個表空間只能屬於一個數據庫。所有的數據庫對象都存放在指定的表空間中。但主要存放的是表, 所以稱作表空間。

Oracle數據庫中至少存在一個表空間,即SYSTEM的表空間。

附:
1、oracle 用戶與表空間關系
2、oracle 表空間和schema
3、關於表空間、Schema和用戶
4、ORACLE 中SCHEMA的概念以及數據庫,表空間,數據文件等的區別

1、查詢所有表空間名

select tablespace_name from sys.dba_tablespaces;

2、查詢所有表空間大小

//單位M SELECT DD.TABLESPACE_NAME,    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) "表空間大小(M)" FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME

3、查詢所有表空間剩余空間大小

SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) "空閑空間(M)", ROUND(MAX(BYTES) / (1024 * 1024), 2) "最大塊(M)" FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME

4、表空間已使用大小

--方法一:總表空間 - 空閑表空間 select d.tablespace_name, d.totalSize - f.freeSize "已使用空間(M)" from ( SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) totalSize FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME ) d, ( SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) freeSize FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ) f where d.TABLESPACE_NAME = f.TABLESPACE_NAME --方法二: select TABLESPACE_NAME,round(sum(bytes)/(1024*1024),2) "已使用空間(M)" from sys.dba_segments GROUP BY TABLESPACE_NAME

注:建議采用第一種方法,第二種方法會忽略未使用的表空間,且第一種方法得到的結果普遍比第二種方法得到的結果大1M,第一種方法得到的結果應該更准確

5、增加表空間大小的方式

--第一種:格式化數據文件初始大小並設置自增長到最大值 create tablespace d_test1 datafile '/test1_data/datafile01.dbf' size 10m autoextend on next 5m maxsize 100m; --第二種:格式化數據文件初始大小不設置自增長,當然也就沒有最大值 alter tablespace d_test1 add datafile '/test1_data/datafile02.dbf' size 10m;

二、對schema的查詢

1、查詢所有schema

資料來源:
1、Oracle DB , 計算各個用戶/schema 的磁盤占用空間

//一個用戶(user)對應一個方案(schema) select username from sys.dba_users

2、查詢schema下的所有表

select table_name from sys.dba_tables where owner='schema名';

3、查詢所有的schema及所屬的所有表

select s.username "schema",t.table_name "table_name" from sys.dba_users s left join sys.dba_tables t on s.username=t.owner order by s.username asc

4、查詢所有的schema所占空間大小

//消耗的總磁盤空間(包括索引、表空間空閑空間),單位G
select owner, sum(bytes)/1024/1024/1024 schema_size_gig from sys.dba_segments group by owner;

5、查詢指定schema各segment_type占用空間大小

select sum(bytes)/1024/1024/1024 as size_in_gig, segment_type from dba_segments where owner='SCOTT' group by segment_type; Drop Table 之后,如果空間不能回收,需要執行下面語句 清除當前用戶的回收站:purge recyclebin; 清除所有用戶的回收站:purge dba_recyclebin;

三、查詢表

1、通過指定表空間查詢所屬的表名

Select Table_Name, Tablespace_Name From Dba_Tables Where Tablespace_Name = 'USERS';

2、通過指定表空間查詢所屬表的占用空間

select segment_name, bytes/1024||'KB' "占用空間" from user_segments where segment_type='TABLE' and tablespace_name='USERS' order by segment_name asc

資料來源:
1、Oracle DB , 計算各個用戶/schema 的磁盤占用空間
2、oracle表空間總大小 剩余大小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM