Bir şemaya ait tüm nesnelerin farklı bir tablo alanına taşınması

13 Eki by Ahmet Duruöz

Bir şemaya ait tüm nesnelerin farklı bir tablo alanına taşınması

Bir şemadaki tüm nesneler farklı bir şemaya taşınma ihtiyacı durumunda aşağıdaki adımlar izlenmelidir. Sonrasında tüm nesneler farklı tablo alanında yer alacaktır.

Aşağıdaki sorgular , taşıma için gerekli sorguları hazırlamaktadır. Sorgulardaki DATA_STAGE taşınacak tablo alanı , ADURUOZ ise tüm nesnelerini taşıyacağımı kullanıcıdır.

Şemadaki tablolarun taşınması için ;

select 'alter table '||owner||'.'||table_name||' move tablespace DATA_STAGE nologging parallel 8;' from dba_tables where owner='ADURUOZ' and tablespace_name <>'DATA_STAGE';

 

Şemadaki tablo partition’larının taşınması için ;

select 'ALTER TABLE '||table_owner||'.'||table_name||' MOVE PARTITION '||partition_name||' TABLESPACE DATA_STAGE NOLOGGING parallel 8;' from dba_tab_partitions where table_owner='ADURUOZ';

 

Şemadaki lob alanlarının taşınması için ;

select 'alter table '||owner||'.'||table_name||' move lob ('||column_name||') store as (tablespace DATA_STAGE);' from dba_lobs where tablespace_name<>'DATA_STAGE' and owner='ADURUOZ';

 

Şemadaki indeklerin taşınması için ;

select 'alter index '||owner||'.'||index_name||' rebuild nologging parallel 8 tablespace DATA_STAGE;' from dba_indexes where tablespace_name<>'DATA_STAGE' and owner='ADURUOZ';

 

Şemadaki indeks partition’larının taşınması için ;

select 'alter index '||index_owner||'.'||index_name||' rebuild partition '||partition_name||' nologging parallel 8;' from dba_ind_partitions where tablespace_name<>'DATA_STAGE' and index_owner='ADURUOZ'

Taşıma sonrasında unusable indeksler varsa , aşağıdaki gibi yeniden derleme komutları oluşturulabilir. 

select 'alter index '||owner||'.'||index_name||' rebuild nologging parallel 8 tablespace DATA_STAGE;' from dba_indexes where status='UNUSABLE';

 

Yukarıdaki indeks taşıma sorgularında işlemlerin hızlı bitmesi için parallel 8 şeklinde işlemler yapılmıştır. Bu durumda indekslerin degree değeri 8 olacaktır. Bu da ilgili tablolardaki tüm işlemlerde parallel olarak çalışacak ve bazı bekleme olaylarına sebep olabilmektedir. Bu yüzden indesklerin degree değeri 1 , yani index noparallel olmalıdır.

İndekslerin noparallel yapılması için gerekli sorguları aşağıdaki sorgu ile oluşturabilirsiniz. 

select 'alter index '||owner||'.'||index_name||' noparallel;' from dba_indexes where degree>1;

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir