国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

oracle開發(fā) 表占用空間統(tǒng)計——腳本

2024-08-29 13:41:14
字體:
供稿:網(wǎng)友

  /****************1、建立臨時表********************/
  create table temp_table_size
  (
  table_name  varchar2(30) not null,       --表名
  main_size  number(12,3) default 0 not null,  --表主段空間(單位:MB)
  lob_size   number(12,3) default 0 not null,  --LOB大字段空間
  data_size  number(12,3) default 0 not null,  --數(shù)據(jù)空間(主空間 + LOB)
  index_size  number(12,3) default 0 not null,  --索引空間
  total_size  number(12,3) default 0 not null,  --總占用空間(加索引空間)
  record_count number(15)  default 0 not null   --記錄數(shù)
  );
  
  alter table temp_table_size add constraint pk_temp_table_size PRimary key (table_name);
  
  insert into temp_table_size (table_name) select table_name from user_tables;
  
  commit;
  
  /**************2、表各項統(tǒng)計*****************/
  declare
  v_size_1 number(12,3);
  v_size_2 number(12,3);
  v_size_3 number(12,3);
  v_count number(15);
  begin
  
  --數(shù)據(jù)初始化
  
  update temp_table_size
  set main_size = 0,
  lob_size  = 0,
  data_size = 0,
  index_size = 0,
  total_size = 0,
  record_count = 0;
  
  
  for v_rec in (select table_name from user_tables) loop
  
  --主數(shù)據(jù)段空間
  
  select sum(bytes) / 1024 / 1024
  into v_size_1
  from user_segments
  where segment_name = v_rec.table_name;
  
  --LOB空間
  
  select nvl(sum(bytes),0) / 1024 / 1024
  into v_size_2
  from user_segments
  where segment_name in
  (
  select segment_name
  from user_lobs
  where table_name= v_rec.table_name
  );
  
  --索引空間
  
  select nvl(sum(bytes),0) / 1024 / 1024
  into v_size_3
  from user_segments
  where segment_name in
  (
  select index_name
  from user_indexes
  where table_name= v_rec.table_name
  );
  
  --表記錄數(shù)統(tǒng)計
  
  execute immediate 'select count(*) from ' v_rec.table_name into v_count;
  
  --寫統(tǒng)計結(jié)果
  
  update temp_table_size
  set main_size  = v_size_1,
  lob_size   = v_size_2,
  index_size  = v_size_3,
  data_size  = v_size_1 + v_size_2,
  total_size  = v_size_1 + v_size_2 + v_size_3,
  record_count = v_count
  where table_name = v_rec.table_name;
  
  end loop;
  
  --保存結(jié)果
  
  commit;
  
  end;
  /
  
  /**************3、查看統(tǒng)計結(jié)果***************/
  select *
  from temp_table_size
  order by table_name;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜宾县| 拉孜县| 玉屏| 汶川县| 通辽市| 安国市| 陇南市| 台山市| 黄石市| 衡水市| 布尔津县| 镇坪县| 蒙城县| 鲜城| 炎陵县| 金华市| 普定县| 浦江县| 汝南县| 上杭县| 凤凰县| 丹巴县| 塔城市| 揭东县| 庆云县| 白城市| 侯马市| 都江堰市| 永川市| 德钦县| 郴州市| 杭州市| 兴和县| 东安县| 依兰县| 云浮市| 花垣县| 肇州县| 大同市| 昌图县| 承德县|