ANALYZE INDEX Oracleデータベース 断片化 リビルドインデックス メンテナンス
SET SERVEROUTPUT ON SIZE 50000 feedback off pagesize 0 trims on lines 1000 timing on time on col analyze_index new_value analyze_index format a100 select 'analyze_index' || to_char(sysdate,'_YYYYMMDDHH24MISS') || '.csv' analyze_index from dual; spool &analyze_index declare tname varchar2(100); act_sql varchar2(300); v_NAME varchar2(50); v_HEIGHT number; v_LF_ROWS number; v_LF_BLKS number; v_DEL_LF_ROWS number; v_DEL_LF_ROWS_per_LF_ROWS number; v_BLOCKS number; begin DBMS_OUTPUT.ENABLE(NULL); --ORA-20000: ORU-10027: buffer overflow, limit of 20000 bytes 回避対応 dbms_output.put_line('インデックス名'||','||'HEIGHT'||','||'リーフ行の数'||','||'リーフブロック数'||','||'削除リーフ行の数'||','||'削除リーフ割合'||','||'BLOCKS'); for tab_rec in (select INDEX_NAME from USER_INDEXES where table_name = 'emp' order by table_name,INDEX_NAME) loop begin tname := tab_rec.INDEX_NAME; act_sql := 'analyze index ' || tname || ' validate structure'; execute immediate act_sql; SELECT NAME,HEIGHT,LF_ROWS ,LF_BLKS ,DEL_LF_ROWS ,TO_CHAR(((DEL_LF_ROWS/DECODE(LF_ROWS,0,1,LF_ROWS))*100),'999.9'),BLOCKS INTO v_NAME,v_HEIGHT,v_LF_ROWS,v_LF_BLKS,v_DEL_LF_ROWS,v_DEL_LF_ROWS_per_LF_ROWS,v_BLOCKS FROM INDEX_STATS; dbms_output.put_line(v_NAME||','||v_HEIGHT||','||v_LF_ROWS||','||v_LF_BLKS||','||v_DEL_LF_ROWS||','||v_DEL_LF_ROWS_per_LF_ROWS||','||v_BLOCKS); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('▼▼▼ 【 エラー!! '||tname||' ● '||SQLERRM||'】 ▼▼▼'); end; end loop; end; / SPOOL OFF
絵で見てわかるOracleの仕組み (DB Magazine SELECTION)
- 作者:小田 圭二
- 発売日: 2006/06/21
- メディア: 単行本
リレーショナルデータベース入門―データモデル・SQL・管理システム (Information&Computing)
- 作者:増永 良文
- 発売日: 2003/03/01
- メディア: 単行本
プロとしてのOracle運用管理入門 (Oracle現場主義)
- 作者:株式会社コーソル 渡部亮太
- 発売日: 2009/09/25
- メディア: 単行本
- 作者:吉村 隆
- 発売日: 2010/04/24
- メディア: 単行本(ソフトカバー)
- 作者:福田 武志
- 発売日: 2007/03/28
- メディア: 単行本