select 'select sum(bytes) from dba_segments where owner ='|| '"testbar"'||' and segment_type ='|| '"table"'||' and segment_name = "'|| table_name||'" ;' from user_tables;
錯誤的,對於oracle而言,雙引號
要用單引號,可用
可以用ascii碼處理,其它特殊字元如&也一樣,如
insert into t values('i'||chr(39)||'m'); -- chr(39)代表字元'
或者用兩個單引號表示乙個
or insert into t values('i''m'); -- 兩個''可以表示乙個'
select 'select segment_name,sum(bytes) from dba_segments where owner ='|| chr(39)||'testbar'||chr(39)||' and segment_type ='||chr(39)||'table'||chr(39)||' and segment_name = '|| chr(39)||table_name||chr(39)||';' from user_tables;
注意,對於分割槽表要採用"table partition"方式
sql> set linesize 300
sql> set head off
sql> spool 1.sql
exec statement
sql>spool off
處理空行問題:
採用excel的自動篩選進行空行過濾!以及計算空間總和。
實用考慮:
0 產生行一例
select 'select sum(bytes)/1024/1024 mbytes from user_segments where segment_type = '||chr(39)||'table'||chr(39)||' and segment_name = '||chr(39)||segment_name||chr(39)||';' from user_segments where segment_type='table';
0、檢視使用者表、索引、分割槽表占用空間
select segment_name, sum(bytes)/1024/1024 mbytese from user_segments group by segment_name;
1、表占用空間
select segment_name, sum(bytes)/1024/1024 mbytese from user_segments where segment_type='table' group by segment_name;
2、索引占用空間select segment_name ,sum(bytes)/1024/1024 from user_segments where segment_type ='index' group by segment_name;
3、分割槽表table partition占用空間
select segment_name,sum(bytes)/1024/1024 mbytes from user_segments where segment_type='table partition' group by segment_name;
**
oracle查詢每個表所佔的空間
檢視當前使用者的每個表所佔的空間大小 select segment name,sum bytes 1024 1024 size m from user extents group by segment name order by size m desc 查詢使用者下面的所有表 select from...
mysql和oracle查詢表占用空間
mysql 需要先進入information schema select table schema as 資料庫 table name as 表名 table rows as 記錄數 truncate data length 1024 1024,2 as 資料容量 mb truncate index...
oracle查詢表空間大小以及每個表所佔空間的大小
最近維護的專案遇到了oracle的效能的問題,需要查詢一下oracle資料庫表空間的大小以及每個表所佔空間的大小,在網上搜尋了一些查詢語句,在此記錄一下 1 查詢資料庫中所有的表空間以及表空間所佔空間的大小,直接執行語句就可以了 select tablespace name,sum bytes 10...