Oracle Undo Tablespace Değişimi: Yeni Undo Tablespace Oluşturma ve DB Node’a Uygulama

YUNUS EMRE ATAY

undo

Undo Tablespace Nedir ve Neden Değiştirilmesi Gerekir?

Oracle veritabanlarında undo tablespace, veritabanı işlemleri sırasında yapılan değişikliklerin geri alınabilmesi için kritik bir bileşendir. Zamanla bu alanın büyümesi veya performans sorunlarına yol açması nedeniyle mevcut undo tablespace’ini değiştirmek gerekebilir. Bu yazıda, Oracle veritabanlarında yeni bir undo tablespace oluşturmanın ve bunu veritabanı node’una uygulamanın adımlarını inceleyeceğiz.

Bu yazıda, mevcut undo tablespace’inin yerine yeni bir undo tablespace oluşturma ve Oracle DB node‘una uygulama sürecini adım adım anlatacağız. Bu işlem, veritabanı yönetiminizi daha verimli hale getirebilir ve sistem performansını artırabilir.


Mevcut Undo Tablespace Kontrolü

Hangi UNDO tablespace‘in şu anda kullanıldığını öğrenmek için:

SQL> sho spparameter undo;

SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 temp_undo_enabled	       boolean
*	 undo_management	       string
*	 undo_retention 	       integer
orcl1	 undo_tablespace	       string	   UNDOTBS1
orcl2	 undo_tablespace	       string	   UNDOTBS2


Yeni Undo Tablespace İçin Disk Alanı Hazırlama

Yeni bir undo tablespace oluşturmak için öncelikle uygun bir disk alanına ihtiyacınız var. Bu alanın yeterli büyüklükte olması, veritabanı işlemlerinin sağlıklı bir şekilde devam etmesi için önemlidir.

SQL> CREATE BIGFILE UNDO TABLESPACE UNDO_NEW_01
DATAFILE '/path/to/undo_tablespace01.dbf' SIZE 5G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK ON;
  • CREATE BIGFILE UNDO TABLESPACE:
    • Yeni bir undo tablespace oluşturur.
    • BIGFILE, tablespace’in yalnızca tek bir büyük veri dosyasına sahip olacağını belirtir (çoklu veri dosyalarına izin verilmez). BIGFILE tablespace’ler genellikle ASM kullanıldığında tercih edilir çünkü ASM dosya yönetimini kolaylaştırır.
  • UNDO_NEW_01:
    • Oluşturulan undo tablespace’in adı. Bu adı veritabanındaki diğer tablespace adlarıyla karıştırılmamalıdır.
  • DATAFILE:
    • Tablespace’in fiziksel veri dosyasının adını ve konumunu belirtir.
    • Örneğin, ASM kullanıyorsanız, bu yol +DATA/UNDO/undo_tablespace01.dbf gibi olabilir.
  • SIZE 5G:
    • Veri dosyasının başlangıç boyutunu 5 GB olarak ayarlar.
  • AUTOEXTEND ON:
    • Veri dosyasının gerektiğinde otomatik olarak genişlemesine izin verir.
  • NEXT 1G:
    • Veri dosyasının genişleme adımını 1 GB olarak belirler. Yani, dosya dolduğunda 1 GB ekler.
  • MAXSIZE UNLIMITED:
    • Veri dosyasının büyüklüğüne bir üst sınır koymaz. Alternatif olarak, bir sınır koymak isterseniz MAXSIZE 50G gibi bir değer belirtebilirsiniz.
  • RETENTION NOGUARANTEE:
    • Undo tablespace içindeki undo bilgileri, gerekli olduğunda üzerine yazılabilir.
    • Eğer GUARANTEE olarak ayarlansaydı, undo bilgileri belirli bir süre boyunca korunur ve üzerine yazılamazdı, bu da özellikle Flashback işlemleri için kullanılır.
    • NOGUARANTEE, daha fazla undo segmentine ihtiyaç duyulursa, eski bilgiler üzerine yazılmasına izin verir.
  • BLOCKSIZE 8K:
    • Veri dosyasının blok boyutunu 8 KB olarak ayarlar. Varsayılan blok boyutu genellikle 8 KB’dir.
    • Blok boyutunu artırmak, büyük işlemlerde I/O performansını artırabilir, ancak küçük veriler için bu boyut gereksiz yere fazla olabilir.
    • Sadece veritabanı oluşturulurken desteklenen BLOCKSIZE değerleri kullanılabilir (örneğin, 2K, 4K, 8K, 16K).
  • FLASHBACK ON:
    • Undo tablespace’in Flashback özellikleri için kullanılabilir hale getirir.
    • Flashback, bir tabloyu veya veritabanını geçmiş bir duruma döndürmek için kullanılır.
    • FLASHBACK OFF olarak ayarlarsanız, bu tablespace Flashback özellikleri için kullanılamaz.


Yeni Undo Tablespace’ini Sistem Undo Tablespace Olarak Atama

Veritabanı, varsayılan olarak bir undo tablespace kullanır. Yeni oluşturduğumuz undo tablespace’ini veritabanı için varsayılan undo tablespace olarak ayarlamalıyız.

ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDO_NEW_01' scope=BOTH sid='orcl1';

Scope=BOTH ifadesi, yapılan değişikliği hem aktif bellek üzerinde uygular hem de spfile dosyasına kaydedilir.

sid=’node1′ ifadesi, yapılan değişikliğin yalnızca belirli bir Oracle Instance (örneğin, node1) üzerinde uygulanmasını sağlamak için kullanılır


Yeni Undo Tablespace’i Kontrol Etme

Yapılan değişikliği kontrol edelim:

SQL> sho spparameter undo;

SID	 NAME			       TYPE	   VALUE
-------- ----------------------------- ----------- ----------------------------
*	 temp_undo_enabled	       boolean
*	 undo_management	       string
*	 undo_retention 	       integer
orcl1	 undo_tablespace	       string	   UNDO_NEW_01
orcl2	 undo_tablespace	       string	   UNDOTBS2


Eski Undo Tablespace’ini Kullanım Dışı Bırakma

Mevcut undo tablespace’ini devre dışı bırakmadan önce, yeni undo tablespace’inin doğru şekilde çalıştığını ve tüm işlemleri düzgün bir şekilde kaydettiğini doğrulamanız gerekir.

ALTER DATABASE DATAFILE '/path/to/old_undo.dbf' OFFLINE;


Eski Undo Tablespace’ini Silme

Eski undo tablespace dosyasını tamamen silmek için aşağıdaki komutu kullanabilirsiniz:

DROP TABLESPACE old_undo INCLUDING CONTENTS AND DATAFILES;

Burada, INCLUDING CONTENTS AND DATAFILES ifadesi, hem tablespace’in hem de içindeki tüm veri dosyalarının silinmesini sağlar.

%s için bir yanıt yazın

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

Hey!

Merhaba! Ben EMRE, teknoloji, yazılım veri tabanı ve veri analitiği alanlarına tutkuluyum. Bu blogda, öğrendiklerimi ve tecrübelerimi paylaşarak faydalı içerikler sunmayı hedefliyorum. Boş zamanlarımda yeni teknolojiler keşfetmeyi, yazmayı ve kendimi geliştirmeyi seviyorum.

ıletısım adreslerım