oracle 統計當前用戶下所有表的數據量


統計當前登陸用戶下的所有表的數據量(oracle)

下午快下班要我統計所有表的數據量,我尼瑪全庫2000+的表呢,還好我厲害,要不然這一宿就干下去了
我真是個小機靈鬼d=====( ̄▽ ̄*)b,果然科學技術是第一生產力

我就記下這個小功能,備我以后使用,編寫存儲過程統計表的數據量

  • 首先是存儲過程

    create or replace procedure tongjishuju
    as
    v_culm   varchar(30);
    v_sql_str varchar(255);
    CURSOR c_name IS select distinct table_name from user_tab_columns;
    begin
      OPEN c_name;
    loop
      FETCH c_name INTO v_culm;
      exit when c_name%notfound;
    v_sql_str :='insert into shujuliang select '''||v_culm||''' as table_name ,count(*) as shujul from '||v_culm;
    execute immediate v_sql_str;
    end loop;
    close c_name;
    commit;
    end;
    
  • 在運行存儲過程之前,先要有個表來存統計出來的數據量,表結構如下:(如果字段長度不夠,自己再擴一下)

    create table SHUJULIANG
    (
      table_name VARCHAR2(30),
      shujul     INTEGER
    )
    
  • 你如果還想統計表的字段數和表的comments,可以(前面這個單詞應該沒寫錯,我不管,寫錯我也不管了ε=ε=ε=(~ ̄▽ ̄)~)。

    create table table_tmp_1 as select a.TABLE_NAME as 表名,count(*) as 字段數 from user_tab_columns a group by a.TABLE_NAME;
    create table table_tmp_2 as select a.表名,a.字段數,b.comments as 表說明 from table_tmp_1 a join user_tab_comments b on a.表名=b.table_name;
    create table table_tongji as select a.表名,a.表說明,a.字段數,b.shujul as 數據量 from table_tmp_2 a join SHUJULIANG b on a.表名=b.table_name;
    

最后再把table_tmp_1table_tmp_2這兩個中間臨時表drop掉,最后表名表說明此表字段數此表數據量就在table_tongji了。

頁腳長點我覺得好看

~\(≧▽≦)/~

空白行居然只算一行(╬▔皿▔)凸

垃圾markdown(╬▔皿▔)凸


免責聲明!

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



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