国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 炉霍县| 合江县| 江西省| 库尔勒市| 荣昌县| 英吉沙县| 屏南县| 丽江市| 东宁县| 唐山市| 南汇区| 塔河县| 凌海市| 新竹市| 仪陇县| 石台县| 拉萨市| 高雄县| 广昌县| 登封市| 涞水县| 乌拉特前旗| 维西| 时尚| 昭平县| 建始县| 高淳县| 灵山县| 拜泉县| 神木县| 桐庐县| 石泉县| 长治市| 会昌县| 和林格尔县| 浑源县| 理塘县| 镇沅| 普兰店市| 固阳县| 岳阳市|