Kullandığımız sistem içerisinde özelliklede kullanıcıların yoğun olduğu sistemlerde zaman zaman bazı tablo ve buna indexlerin yanlış tablespace’ lerde create edildiğini görürüz. System tablespace’ i buna iyi bir örnek olabilir aslında,
select * from dba_segments
where tablespace_name = ‘SYSTEM’
and owner not in (‘SYS’,’SYSTEM’)
yukarıdaki scriptle system tablespace’ inde nesnesi bulunan userları tespit edebilirsiniz. Aslında system tablespace’ inde sys ve system dışında hiçbir userın nesnesinin olmaması gerekiyor. Örneğin, transportable tablespace yöntemi ile bir taşıma yapmadan önce taşınacak tablespace’ in database deki diğer tablespace lerle olan ilişkilerini çıkartıyoruz. Burdaki iş kurallarından biri hiçbir tablespace’ in system tablespace’ i ile ilişkisinin olmaması gerekiyor. Eğer bu tarz bir durumla karşılaşırsanız öncelikle bu objeleri taşımanız gerekecektir.
Peki bunları nasıl taşıyacağız. Aslında bunun birkaç yolu var, ben en kolayı olanından bahsetmek istiyorum. Aşağıdaki ilk komut ile istediğiniz tabloların tablespace’ lerini değiştirebilirsiniz. Ancak bu işlemi yaptıkdan sonra tabloların üzerlerindeki indexler bozulacağından onlarında rebulid edilmesi gerekecektir. Onun içinde ikinci scripti kullanabilirsiniz.
— tabloları taşımak için ;
SELECT ‘ALTER TABLE ‘ || OBJECT_NAME ||’ MOVE TABLESPACE ‘||’ tasinacak_tablespace ;’
FROM ALL_OBJECTS
WHERE OWNER = ‘tasinacak_user’
AND OBJECT_TYPE = ‘TABLE’ ;
— indexleri rebuild etmek için
SELECT ‘ALTER INDEX ‘||INDEX_NAME||’ REBUILD TABLESPACE tasinacak_tablespace ;’ FROM ALL_INDEXES
WHERE OWNER = ‘tasinacak_user’ ;
Bu tarz durumları düşmemek için kullandığınız systemlerde var olan userların default tablespace’ lerini kontrol etmeniz sizin yararınıza olacaktır. Çünkü default tablespace’ iniz ne ise oluşturacağını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’
— Kullanıcıların default tablespace’ lerini değiştirmek için ;
ALTER USER test_user DEFAULT TABLESPACE USERS;