Whoever Resembles a People is One of Them. He is not one of us who resembles other than us,
nor who resembles the Jews nor the Christians.(jami-at-tirmidhi-vol-5-ahadith-2695)
O you who believe (who wish to reach ALLAH C.C. before death)! Do not take my and
your enemies for friends!
And although they have denied what has come to you
from the Truth, you still love them (treating them as your friends).
If you go forth to struggle hard in My Way, seeking My Pleasure, (then why) you manifest
love to them and share with them your secrets.
And I know what you conceal and what you manifest. And whoever of you does that, then he
indeed has gone astray from the right Way. 60/Al-Mumtahanah-1
They are driving out the Messenger and yourselves from your land because you
believe in ALLAH C.C., your Lord.
Recite (read and explain to others) that which has been revealed to you of the Book
and keep up the Prayer.
Surely the Prayer keeps away from Al-Fahsh (to do what ALLAH C.C. prohibits) and Al-Munkar
(to deny what ALLAH C.C. commands).
Whoever obeys me, obeys ALLAH C.C., and whoever disobeys me, disobeys ALLAH C.C.
Whoever obeys the ruler, obeys me, and whoever disobeys the ruler, disobeys me. " (Sahih)

Analiz İşlemleri

Tablo veya indexlerin ne zaman analiz edilmiş olduğunu görmek için;

{code class=”brush: xml;”}
SQL> select LAST_ANALYZED, t.* from user_tables t;
SQL> select LAST_ANALYZED, i.* from user_indexes i;
{/code}

Tabloların ve Indexlerin Tamamının Analizini Yaptırmak İçin

Herhangi bir tablonun istatistik bilgilerinin toplanması için;

{code class=”brush: xml;”}
SQL> exec dbms_stats.gather_table_stats(ownname=>user, tabname=>’XXX’, method_opt =>’for all columns size auto’,cascade=> true, granularity => ‘ALL’);

Örnek

EXEC DBMS_STATS.gather_schema_stats(‘SCOTT’);
EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’);
EXEC DBMS_STATS.gather_table_stats(‘SCOTT’, ‘EMPLOYEES’, estimate_percent => 15);

EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’);
EXEC DBMS_STATS.gather_index_stats(‘SCOTT’, ‘EMPLOYEES_PK’, estimate_percent => 15);
{/code}
XXX tablosunun tüm partition ve subpartitionları (granularity = ‘ALL’ olduğu için) ve tüm indexleri ile ilgili (cascade = true olduğu için) istatistik toplanmış oluyor.

XXX indexinin tüm partition ve subpartitionları (granularity = ‘ALL’ olduğu için) ile ilgili istatistik toplanmış oluyor.
{code class=”brush: xml;”}
SQL> exec dbms_stats.gather_index_stats(ownname=>user, indname=>’XXX’, granularity => ‘ALL’);
{/code}

Tüm VT’nin istatistiğini almak için
{code}
dbms_stats.gather_database_stats(options=> ‘GATHER AUTO’);
{/code}

Schema içindeki tüm tablolarla ilgili indexler ve partitionlar düzeyinde istatistik toplanmış oluyor.
{code class=”brush: xml;”}
SQL> exec dbms_stats.gather_schema_stats(ownname=>user, method_opt =>’for all columns size auto’,cascade=> true, granularity => ‘ALL’);
{/code}

Tablo veya schema ile ilgili tüm istatistikler siliniyor.
{code class=”brush: xml;”}
SQL>exec dbms_stats.delete_table_stats(ownname=>user, ‘XXX’)
SQL>exec dbms_stats.delete_schema_stats(ownname=>user)
{/code}

Zamanlamak için (schedule)
{code class=”brush: xml;”}DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => ‘BEGIN DBMS_STATS.gather_schema_stats(”HR”); END;’
,next_date => to_date(‘25.09.2007 02:00:00′,’dd/mm/yyyy hh24:mi:ss’)
,interval => ‘SYSDATE + 1’
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE(‘Job Number is: ‘ || to_char(x));
COMMIT;
END;
/{/code}

Zamanlamış görevi silmek için (jobs)
{code class=”brush: xml;”}EXEC DBMS_JOB.remove(X);
COMMIT;
/{/code}

Tabloda az sayıda row olduğunu düşünelim. Ancak Oracle’ın – örneğin CBO’nun – çok sayıda row olduğunda nasıl davranacağını görmek istiyoruz. Bu durumda istatistik değerlerini kendimiz belirleyebiliyoruz. Bunun için,
{code class=”brush: xml;”}
SQL> execute DBMS_STATS.SET_TABLE_STATS ( ownname => user, tabname => ‘XXX’, numrows => 1000000, numblks => 1000000);
{/code}

Bu durumda artık optimizer çok sayıda row olması durumunda ne yapacak bunu görebiliyoruz.

İstatik ve Histogram

{code class=”brush: xml;”}begin
dbms_stats.gather_dictionary_stats(options=> ‘GATHER AUTO’);
end;

veya

begin
dbms_stats.gather_schema_stats (ownname=> ‘SYS’ ,options=> ‘GATHER AUTO’);
end;{/code}

Yöntem -A

Adım_1 Procedure oluşturulur.
{code class=”brush: xml;”}
create or replace procedure prc_tablo_istatistikleri_topla is
cursor c_tablo is
select table_name
from user_tables;
begin
for r_tablo in c_tablo
loop
execute immediate ‘analyze table ‘ || r_tablo.table_name || ‘ compute statistics’;
dbms_output.put_line(r_tablo.table_name || ‘ analize edildi.’);
end loop;
end;
{/code}

{code class=”brush: xml;”}
exec tablo_istatistikleri_topla — şeklinde de çalıştırılabilir.
{/code}

Adım_2 Zamanlanır (schedule)
{code class=”brush: xml;”}
DECLARE
jobno NUMBER;
BEGIN
DBMS_JOB.submit
(job => jobno,
what => ‘HR.prc_tablo_istatistikleri_topla;’,
next_date => trunc(sysdate)+23/24,
interval => ‘SYSDATE + 1’,
no_parse => TRUE );
DBMS_OUTPUT.put_line (‘Created Job – the job number is:’ || TO_CHAR (jobno));
COMMIT;
END;
/
{/code}

Yöntem -B

HR kullanıcısının tablo ve indekslerini hergün saat 23:00’da analize eder istatitiklerini toplar. Hangi şema ile yapılırsa onun için yapar.
{code class=”brush: xml;”}
Set SERVEROUT ON
Set pagesize 200
DECLARE
jobno NUMBER;
BEGIN
DBMS_JOB.submit
(job => jobno,
what => ‘DBMS_STATS.gather_schema_stats(ownname => ”HR”, cascade => TRUE, estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE);’,
next_date => trunc(sysdate)+23/24,
interval => ‘SYSDATE + 1’,
no_parse => TRUE );
DBMS_OUTPUT.put_line (‘Created Job – the job number is:’ || TO_CHAR (jobno));
COMMIT;
END;
/
{/code}

Dakika belirtmek için;
{code class=”brush: xml;”}
BEGIN
SYS.DBMS_JOB.REMOVE(51);
COMMIT;
END;
/
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => ‘HR.TABLO_ISTATISTIKLERI_TOPLA;’
,next_date => to_date(‘01.09.2010 16:25:00′,’dd/mm/yyyy hh24:mi:ss’)
,interval => ‘TRUNC(SYSDATE+1)’
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE(‘Job Number is: ‘ || to_char(x));
COMMIT;
END;
/
{/code}

{jcomments on}

Copyright © 2015 Sysdba All Rights Reserved Web Designer