パスワードを忘れた? アカウント作成
690913 journal

coolguyの日記: 8i,9i 2

日記 by coolguy

analyze
...
dbms_stats.gather_*_stats()

OracleSQLチューニング Oracleの潜在能力を引き出す実践的チューニングガイド
凄くいい参考書なんだけどなぁ……

はい、マニュアル読みます。。。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ##########
    spool tbl_lst
    set serveroutput on size 100000
    DECLARE
            CURSOR csr_tblname IS
                    SELECT table_name FROM user_tables;
                    tblname varchar2(30);
                    sql_stmt varchar2(500);
                    tblcnt number;
                    rowcnt number;
    BEGIN
            SELECT COUNT(*) INTO tblcnt FROM user_tables;
            OPEN csr_tblname;
            FOR i IN 1..tblcnt LOOP
                    FETCH csr_tblname INTO tblname;

                    sql_stmt := 'select count(*) from ' || tblname;
                    EXECUTE IMMEDIATE sql_stmt INTO rowcnt ;

                    DBMS_OUTPUT.PUT_LINE('dbms_stats.gather_table_stats(''****'', ''' || tblname || ''', '''', dbms_stats.auto_sample_size, FALSE, ''FOR ALL COLUMNS SIZE 1'', '''', ''DEFAULT'', TRUE, '''', '''', '''', FALSE); --rowcnt=' || rowcnt);

    -- IF rowcnt 10000 THEN
    -- DBMS_OUTPUT.PUT_LINE('analyze table ' || tblname || ' calculate statistics;' || ' --rowcnt=' || rowcnt);
    -- ELSE
    -- DBMS_OUTPUT.PUT_LINE('analyze table ' || tblname || ' estimate statistics 10 PERSENT;' || ' --rowcnt=' || rowcnt);
    -- END IF;

            END LOOP;
            CLOSE csr_tblname;
    END;
    /
    spool off
    quit
    ##########

    dbms_stats.gather_schima_stats() でいいんじゃねーの?
    カウントする必要もなし

    serveroutput の size のデフォルトが SQL*Plus での実行時は
    2000 ってのに気付かずにバッファオーバーフローの原因を
    ロジックにあると思い込んで悩んだ<まぬけ
    # 常識ですか。。。

    --
    8iのマニュアル、よく見たら 8i から統計情報の収集は
    dbms_stats パッケージ使えって書いてあるやん(汗
    # analyze なんて、いつの時代の知識、前提に組んでんだよ、ボケ
    # 大馬鹿>おれ
typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...