28 Temmuz 2012 Cumartesi

Tablonun Farklı Bir Tablespace'e taşınması

Oracle de oluşturduğumuz nesnelerimizi (tale,index...) farklı tablespace'e taşıma ihtiyacı duyduğumuzda aşağıdaki işlem adımlarını izleyebiliriz.

--TESPİT
select * from dba_segments where tablespace_name<>'ORNEK_TABLESPACE' 
and owner not in ('SYS','SYSTEM')

--TAŞIMA SQL OLUŞTURULMASI
SELECT 'ALTER TABLE ' || OBJECT_NAME || ' MOVE TABLESPACE ' ||'ORNEK_TABLESPACE;' FROM ALL_OBJECTS WHERE OWNER = 'ORNEK_USER' AND OBJECT_TYPE ='TABLE';


--INDEX REBUILD SQLLERININ OLUŞTURULMASI
SELECT 'ALTER INDEX '||INDEX_NAME||' ORNEK_TABLESPACE;' FROM ALL_INDEXES WHERE OWNER = 
'ORNEK_USER';


   Bu tarz durumlara tekrar düşmemek için kullandığımız systemlerde var olan userların default tablespace lerini kontrol etmemiz gerekiyor. Çünkü default tablespace’imiz ne ise oluşturacağımız tüm nesnelerde o tablespace üzerinde oluşacaktır. 

-- Kullanıcıların default tablespace lerini kontrol etmek için ;
SELECT username, account_status, default_tablespace FROM dba_users WHERE account_status = 'OPEN' AND DEFAULT_TABLESPACE<>'ORNEK_TABLESPACE'


-- Kullanıcıların default tablespace’lerini değiştirmek için ;
ALTER USER ORNEK_USER DEFAULT TABLESPACE  ORNEK_TABLESPACE;

Hiç yorum yok:

Yorum Gönder