Sepetiniz

Drop tablespace işlemindeki ORA-02429: cannot drop index used for enforcement of unique/primary key hatası

Oracle veritabanlarında bir tablo alanında daha önceden oluşturulan bir tabloya ait constrain’ler olduğunda tablo alanın silinmesine izin verilmemektedir. Tablo alanı boş olduğunda bile Constrains’ler etkin olduğunda tablo alanı drop işleminde ORA-02429 hatası alınacaktır. Sorunun çözümü için ilgili Constrain’leri pasif duruma getirmek gerekmektdir.

Alınan hata aşağıdaki gibi olacaktır.

SQL> DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key

 

Hatanıın çözümü için drop işlemi yapılan tablo alanlarında oluşturulmuş constrain’leri DISABLE duruma getirmek gerekmektedir. Aşağıdaki sorgu ile gerekli komutları oluşturabilir, sonrasında oluşan komutları çalıştırıp , ilgili constrain’leri disable yapabilirsiniz.

SQL> set lines 1000
SQL> select 'ALTER TABLE '||owner||'.'||table_name||' DISABLE CONSTRAINT '|| constraint_name||';' from dba_constraints where (index_owner,index_name) in (select owner,index_name from dba_indexes where tablespace_name='DATA_TS')

'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DISABLECONSTRAINT'||CONSTRAINT_NAME||';'
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ALTER TABLE ADURUOZ.TABLE1 DISABLE CONSTRAINT KOD_UNQ;
ALTER TABLE ADURUOZ.TABLE2 DISABLE CONSTRAINT PK_ID;

 

Constrain’ler disable duruma geldikten sonra ilgili tablo alanı sorunsuz şekilde drop edilebilecektir.

 

SQL> DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES;
Tablespace dropped.

 

 

Oracle Exadata infiniband switch portları AutomaticHighErrorRate sebebiyle down olduğunda nasıl up yapılır ?

Oracle Exadata infiniband switch portlarındaki hata sayısı belirtilen eşik değerlere ulaştığında otomatik olarak AutomaticHighErrorRate olacak şekilde down duruma getirilmektedir. Sorun giderildikten sonra aşağıdaki şekilde up duruma getirilebilir.

Öncelikle sorun olan infiniband switch’e ssh ile bağlanılmalıdır.

Down durumdaki portun tespiti :

[root@exasw-iba01 ~]# listlinkup
Connector  0A Not present
Connector  1A Not present
Connector  2A Present <-> Switch Port 24 is up (Enabled)
Connector  3A Not present
Connector  4A Not present
Connector  5A Present <-> Switch Port 30 is up (Enabled)
Connector  6A Not present
Connector  7A Not present
Connector  8A Present <-> Switch Port 31 is up (Enabled)
Connector  9A Present <-> Switch Port 14 is up (Enabled)
Connector 10A Present <-> Switch Port 16 is up (Enabled)
Connector 11A Present <-> Switch Port 18 is up (Enabled)
Connector 12A Not present
Connector 13A Not present
Connector 14A Not present
Connector 15A Not present
Connector 16A Not present
Connector 17A Not present
Connector  0B Not present
Connector  1B Present <-> Switch Port 21 is up (Enabled)
Connector  2B Not present
Connector  3B Not present
Connector  4B Present <-> Switch Port 27 is up (Enabled)
Connector  5B Present <-> Switch Port 29 is up (Enabled)
Connector  6B Present <-> Switch Port 36 is down (AutomaticHighErrorRate)
Connector  7B Not present
Connector  8B Not present
Connector  9B Present <-> Switch Port 13 is up (Enabled)
Connector 10B Present <-> Switch Port 15 is up (Enabled)
Connector 11B Present <-> Switch Port 17 is up (Enabled)
Connector 12B Not present
Connector 13B Not present
Connector 14B Not present
Connector 15B Not present
Connector 16B Not present
Connector 17B Not present

 

Yukardaki çıktıdan görüldüğü üzere 36 numaralı port down durumdadır. Bu portu aşağıdaki şekilde up duruma getirebilirsiniz.

 

[root@exasw-iba01 ~]# enableswitchport --automatic Switch 36
Enable connector 6B Switch port 36
Adminstate:......................Enabled
LinkWidthEnabled:................1X or 4X
LinkWidthSupported:..............1X or 4X
LinkWidthActive:.................4X
LinkSpeedSupported:..............2.5 Gbps or 5.0 Gbps or 10.0 Gbps
LinkState:.......................Down
PhysLinkState:...................Polling
LinkSpeedActive:.................2.5 Gbps
LinkSpeedEnabled:................2.5 Gbps or 5.0 Gbps or 10.0 Gbps
NeighborMTU:.....................2048
OperVLs:.........................VL0-7

Bir müddet bekledikten sonra listlinkup komutu ile kontrol ettiğinizde ilgili port Up ve Enabled durumda olacaktır. 

 

[root@exasw-iba01 ~]# listlinkup
Connector  0A Not present
Connector  1A Not present
Connector  2A Present <-> Switch Port 24 is up (Enabled)
Connector  3A Not present
Connector  4A Not present
Connector  5A Present <-> Switch Port 30 is up (Enabled)
Connector  6A Not present
Connector  7A Not present
Connector  8A Present <-> Switch Port 31 is up (Enabled)
Connector  9A Present <-> Switch Port 14 is up (Enabled)
Connector 10A Present <-> Switch Port 16 is up (Enabled)
Connector 11A Present <-> Switch Port 18 is up (Enabled)
Connector 12A Not present
Connector 13A Not present
Connector 14A Not present
Connector 15A Not present
Connector 16A Not present
Connector 17A Not present
Connector  0B Not present
Connector  1B Present <-> Switch Port 21 is up (Enabled)
Connector  2B Not present
Connector  3B Not present
Connector  4B Present <-> Switch Port 27 is up (Enabled)
Connector  5B Present <-> Switch Port 29 is up (Enabled)
Connector  6B Present <-> Switch Port 36 is up (Enabled)
Connector  7B Not present
Connector  8B Not present
Connector  9B Present <-> Switch Port 13 is up (Enabled)
Connector 10B Present <-> Switch Port 15 is up (Enabled)
Connector 11B Present <-> Switch Port 17 is up (Enabled)

 

ORA-00600: internal error code, arguments: [qesmaGetTblSeg_INT_3] hatası

29871098 numaralı bug sebebiyle partitioned tablolardaki DML işlemlerinde “ORA-00600: internal error code, arguments: [qesmaGetTblSeg_INT_3] ” şeklinde hata görülmektedir. Hatanın çözümü için veritabanınız ile uyumlu 29871098 numaralı yamayı uygulamanız gerekmektedir.

Sorun 12c ve üzeri sürümdeki veritabanların görülebilmektedir. Aşağıdaki versiyonlarda sorun giderilmiştir.

  • 20.1.0
  • 19.6.0.0.200114 (Jan 2020) Database Release Update (DB RU)

 

29871098 numaralı yama sadece database home için uygulanmalıdır.

 

CRS-6706: Oracle Clusterware Release patch level (‘xxx’) does not match Software patch level (‘yyy’)

Oracle Grid 12.1 yada 12.2 versiyonlarında crs açılırken yama seviyelerinin farklı olmasına bağlı olarak  “CRS-6706: Oracle Clusterware Release patch level (‘xxx’) does not match Software patch level (‘yyy’)” şeklinde hata verip açılmamaktadır. Sorun genellikle yama uygulama sonrasında oluşmaktadır.

Alınan hata aşağıdakine benzer şekilde olacaktır.

[root@exadbadm01 ~]# /u01/app/12.2.0.1/grid/bin/crsctl start crs
CRS-6706: Oracle Clusterware Release patch level ('1299911088') does not match Software patch level ('1860257038'). Oracle Clusterware cannot be started.
CRS-4000: Command Start failed, or completed with errors.

Mevcut patch level bilgilerini aşağıdaki gibi sorgulayabilirsiniz.

/u01/app/12.2.0.1/grid/bin/kfod op=patches

ve 

/u01/app/12.2.0.1/grid/bin/kfod op=patchlvl

RAC ortamlardaki tüm node’larda yama seviyesi aynı olmalıdır. Problem olan node’da aşağıdaki işlemler ile sorun giderilebilir.

 

12.1 için (root ile):

<GI_HOME>/crs/install/rootcrs.sh -patch

12.2 için (root ile)

Önce

<GI_HOME>/perl/bin/perl <GI_HOME>/crs/install/rootcrs.pl -prepatch

Sonra

<GI_HOME>/perl/bin/perl <GI_HOME>/crs/install/rootcrs.pl -postpatch

 

Standalone server şeklindeki Oracle Grid Infrastructure için :
root ile

<GI_HOME>/crs/install/roothas.sh -unlock
<GI_HOME>/crs/install/roothas.sh -patch

 

 

 

Supplemental Logging (tamamlayıcı günlük kaydı) nedir ?

Redo log dosyaları genellikle instance recovery ve media recovery için kullanılır. Bu tür işlemler için gereken veriler otomatik olarak redo log dosyalarına kaydedilir. Ancak, redo  tabanlı bir uygulama, redo log dosyalarında ek sütunların kaydedilmesini gerektirebilir. Bu ek sütunları log dosyalrına kaydetme işlemine tamamlayıcı günlük kaydı (supplemental logging) adı verilir.

Oracle veritabanı varsayılan olarak herhangi bir ek günlük kaydı (supplemental logging) sağlamaz, bu da LogMiner’ın varsayılan olarak kullanılamayacağı anlamına gelir. Bu nedenle, LogMiner tarafından analiz edilecek günlük dosyalarını oluşturmadan önce en azından minimum düzeyde supplemental logging işlemini etkinleştirmelisiniz.

Aşağıda, ek sütunların gerekli olabileceği durumlara örnekler verilmiştir:

  • Yeniden yapılandırılmış SQL ifadelerini farklı bir veritabanına uygulayan bir uygulama (örneğin Goldengate), güncelleme ifadesini V$LOGMNR_CONTENTS görünümü tarafından döndürülen yeniden yapılandırılmış SQL’de gösterilen ROWID ile değil, satırı benzersiz şekilde tanımlayan bir dizi sütunla (örneğin, bir birincil anahtar) tanımlamalıdır, çünkü bir veritabanının ROWID değeri farklı olacaktır ve bu nedenle başka bir veritabanında anlamsız olacaktır.
  • Bir uygulama, yalnızca değiştirilen sütunların değil tüm satırın önceki görüntüsünün günlüğe kaydedilmesini gerektirebilir, böylece satır değişikliklerinin takibi daha verimli olur.

Supplemental logging grubu, supplemental logging  etkinleştirildiğinde redo log dosyalarına kaydedilecek ek sütunlar kümesidir. Günlük grubundaki sütunların ne zaman günlüğe kaydedileceğini belirleyen iki tür tamamlayıcı günlük grubu vardır:

  • Koşulsuz tamamlayıcı günlük (Unconditional supplemental log) grupları : Belirtilen sütunların önceki görüntüleri, güncellemenin belirtilen sütunlardan herhangi birini etkileyip etkilemediğine bakılmaksızın, bir satır her güncellendiğinde günlüğe kaydedilir.
  • Koşullu tamamlayıcı günlük (Conditional supplemental log) grupları: Belirtilen tüm sütunların önceki görüntüleri yalnızca günlük grubundaki sütunlardan en az biri güncellenirse günlüğe kaydedilir.

Ek günlük grupları, sistem tarafından oluşturulmuş veya kullanıcı tanımlı olabilir.

İki tür tamamlayıcı günlük kaydına ek olarak, iki ek günlük kaydı düzeyi vardır:

  1. Veritabanı seviyesinde Supplemental Logging
  2. Tablo seviyesinde Supplemental Logging