{"id":150,"date":"2008-11-13T09:49:00","date_gmt":"2008-11-13T11:49:00","guid":{"rendered":"http:\/\/www.soudba.com.br\/?p=150"},"modified":"2008-11-13T09:49:00","modified_gmt":"2008-11-13T11:49:00","slug":"recriar-indices","status":"publish","type":"post","link":"https:\/\/www.soudba.com.br\/?p=150","title":{"rendered":"recriar indices"},"content":{"rendered":"<p>Eu ja tinha feito algumas linhas de codigo para o REBUILD do indice mas pesquisando encontrei um blog do Guilherme e achei interessante postar aqui a dica dele.<\/p>\n<p>Essa package criada por mim possibilita a anlise de \u00ednidices para saber se eles precisam sofrer o rebuild. Caso seja necess\u00e1rio, tem um procedimento que automatiza essa tarefa tamb\u00e9m.<\/p>\n<p>CREATE<br \/>PACKAGE <span style=\"font-weight:bold;\">manutencao_indice<\/span><br \/>IS<br \/>PROCEDURE cria_tabela;<\/p>\n<p>PROCEDURE analisa_indice(<br \/>    dono   IN VARCHAR2 DEFAULT USER,<br \/>    indice IN VARCHAR2);<\/p>\n<p>PROCEDURE analisa_schema<br \/>    (dono IN VARCHAR2 DEFAULT USER);<\/p>\n<p>PROCEDURE analisa_todos;<\/p>\n<p>END; &#8212; Package spec<br \/>\/<\/p>\n<p>CREATE<br \/>PACKAGE BODY <span style=\"font-weight:bold;\">manutencao_indice<\/span><\/p>\n<p>IS<\/p>\n<p> PROCEDURE cria_tabela<br \/>    IS<br \/> BEGIN<br \/>    EXECUTE IMMEDIATE &#8216;CREATE TABLE &#8216;||USER||&#8217;.DBA$INDEX_STATS<br \/>                       (DONO VARCHAR2(30),<br \/>                        NOME_INDICE VARCHAR2(30),<br \/>                        PCT_DEL NUMBER(5,2),<br \/>                        QUANDO DATE)&#8217;;<br \/> END;<\/p>\n<p> PROCEDURE analisa_indice(<br \/>    dono   IN VARCHAR2 DEFAULT USER,<br \/>    indice IN VARCHAR2)<br \/> IS<br \/>    sql_stmt    VARCHAR2(200);<br \/>    CURSOR cur_stats<br \/>    IS<br \/>    SELECT (b.del_lf_rows\/(DECODE(b.lf_rows,0,1)))*100 pct_delete<br \/>    FROM index_stats b<br \/>    WHERE b.name = indice;<\/p>\n<p> BEGIN<br \/>    EXECUTE IMMEDIATE &#8216;ANALYZE INDEX &#8216;||dono||&#8217;.&#8217;||indice||&#8217; VALIDATE STRUCTURE&#8217;;<br \/>    FOR rec_stats IN cur_stats LOOP<br \/>       sql_stmt :=&#8217;INSERT INTO &#8216;||USER||&#8217;.dba$index_stats VALUES (:1, :2, :3, :4)&#8217;;<br \/>       EXECUTE IMMEDIATE sql_stmt USING dono, indice, rec_stats.pct_delete, SYSDATE;<br \/>    END LOOP;<br \/>    COMMIT;<br \/> END;<\/p>\n<p> PROCEDURE analisa_schema<br \/>    (dono IN VARCHAR2 DEFAULT USER)<br \/>    IS<br \/> CURSOR cur_indices<br \/> IS<br \/> SELECT owner dono, index_name nome<br \/> FROM dba_indexes<br \/> WHERE owner = dono;<br \/> BEGIN<br \/>    FOR rec_indices IN cur_indices LOOP<br \/>       analisa_indice(rec_indices.dono, rec_indices.nome);<br \/>    END LOOP;<br \/> END;<\/p>\n<p> PROCEDURE analisa_todos<br \/>    IS<br \/> CURSOR cur_indices<br \/> IS<br \/> SELECT owner dono, index_name nome<br \/> FROM dba_indexes;<br \/> BEGIN<br \/>    FOR rec_indices IN cur_indices LOOP<br \/>       analisa_indice(rec_indices.dono, rec_indices.nome);<br \/>    END LOOP;<br \/> END;<\/p>\n<p> PROCEDURE rebuild_index(<br \/>    dono   IN VARCHAR2 DEFAULT USER,<br \/>    indice IN VARCHAR2)<br \/>    IS<br \/> BEGIN<br \/>EXECUTE IMMEDIATE &#8216;ALTER INDEX &#8216;||dono||&#8217;.&#8217;||indice||&#8217; REBUILD ONLINE&#8217;;<br \/> END;   <\/p>\n<p>END;<br \/>\/<\/p>\n<p>Fonte: http:\/\/oraclemais.blogspot.com\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eu ja tinha feito algumas linhas de codigo para o REBUILD do indice mas pesquisando encontrei um blog do Guilherme e achei interessante postar aqui a dica dele. Essa package criada por mim possibilita a anlise de \u00ednidices para saber &hellip; <a href=\"https:\/\/www.soudba.com.br\/?p=150\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[238,240],"tags":[],"class_list":["post-150","post","type-post","status-publish","format-standard","hentry","category-rebuild-indexes","category-recriar-indices-fragmentados"],"_links":{"self":[{"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=150"}],"version-history":[{"count":0,"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=\/wp\/v2\/posts\/150\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.soudba.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}