Thursday, June 4, 2009

INDEX SCRIPT'LERINI ÇIKARMA

database'de bulunana indexlerin yatarma scriplerini çikartabilirsiniz. bunun için aşağıdaki kod kullanılabilirinir.

select 'CREATE INDEX ' || b.owner || '.' || '"'|| a.index_name || '"' ||' on ' || b.owner || '.' || '"' || a.table_name || '"' || '(' ||COLUMN_name || ') tablespace ' || b.tablespace_name || ' PCTFREE ' || b.pct_free || ' ;'

from dba_ind_columns a, dba_indexes b

where a.index_name='CUSTOMERS_PK'
and tablespace_name='SYS'


bu kodu nerede kullanacağim ne işe yaracak derseniz. index'inizi silip yeniden yaratmanız gerektiğinde bu script ile yaratabilirsiniz yada index yaratmadan bellekte ne akdar yer kaplayacağini tahmin etmek için kullanabilirsiniz. Bellete index'in kaplayacaği yeri kestirmek için şu kod işinize yarayabilir.

declare
l_used_bytes number;
l_alloc_bytes number;
begin
dbms_space.create_index_cost (
ddl => 'CREATE INDEX CUSTOMERS_PK on CUSTOMERS'||'(CUSTOMER_ID) tablespace SYS',

--burada DDL şu şekilde olacak. create index index_name on table_name '||' (index hangi column'da) tablespace indexin_bulunduğu_tablespace_adi
used_bytes => l_used_bytes,
alloc_bytes => l_alloc_bytes
);
dbms_output.put_line ('Used Bytes = '||l_used_bytes);
dbms_output.put_line ('Allocated Bytes = '||l_alloc_bytes);
end;
/

No comments: