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;
Kamil TÜRKYILMAZ
Hiç yorum yok:
Yorum Gönder