Oracle database jvm componenti kaldırma


Oracle Versiyon: 11.2.0.4.8

OS : Oracle Linux 6 (Linux x86-64)


Oracle yayınladığı bundle patchlerde jvm patchlerini bundle a katmıyor, bu durum patch geçme işlemlerinde eksta iş yükü anlamına geliyor. Birçok veritabanında JVM kullanılmıyor olmasına rağmen bazen belki lazım olur diye bazen de bilgisizlikten kurulabiliyor.

JVM DBCA üzerinden kaldırılamadığından deinstall edilmesi  için birtakım manuel işlemler gerekiyor.

Öncelikle JVM in kullanılmadığından emin olmak gerekiyor. Spatial, Multimedia gibi özellikler kullanılıyorsa JVM ön gereksinim olarak kurulması gerekiyor. Yani Oracle veritabanının spatial ya da multimedia gibi özellikleri kullanıyorsanız JVM i kaldıramazsınız.

Öncelikle JVM in yüklü olup olmadığını tespit etmek için aşağıdaki scipti kullanabilirsiniz.

set line 1000;
set pagesize 1000;
col COMP_ID format a15;
col COMP_NAME format a40;
select COMP_ID,COMP_NAME,STATUS from dba_registry;

Ayrıca aşağıdaki sorgu ile veritabanında JVM option kullanan bir obje olup olmadığını kontrol etmek için de aşağıdaki sorguyu kullanabiliriz.

SELECT owner, object_type, status, COUNT(*)
 FROM dba_objects
 WHERE object_type LIKE '%JAVA%' and owner NOT IN ('EXFSYS','SYS')
 GROUP BY owner, object_type, status
 ORDER BY owner, object_type, status;

Bu sorguda JVM kurulu olduğunda default olarak gelen objeleri exclude etmek için EXFSYS ve SYS alıntaki objeleri exclude  ettik. Bizde informatica ve spatial kurulu sunucumuzda sorgu sonucu aşağıdaki gibi geliyor.

 

Kaldırma işlemine başlamadan önce aşağıdaki notu incelemekte fayda var. Burada kaldırma işlemi esnasında ya da sonrasında yaşayabileceğiniz problemleri önceden kontrol edebilirsiniz.

How to Reload the JVM in 11.2.0.x (Doc ID 1112983.1)

İşleme başlamadan önce bir tur utlrp çalıştırıp sonrasında mevcut invalid obje sayınızı bir yere not etmeniz faydalı olabilir.

Kaldırma işlemi için öncelikle vi ile full_rmjvm.sql isimli bir dosya oluşturuyoruz ve içeriğini aşağıdaki şekilde dolduruyoruz. ( sciprt 1112983.1 nolu dökümandan alınmıştır.)

-- Start of File full_rmjvm.sql
spool full_rmjvm.log
set echo on
connect / as sysdba
startup mount
alter system set "_system_trig_enabled" = false scope=memory;
alter system enable restricted session;
alter database open;
@?/rdbms/admin/catnoexf.sql
@?/rdbms/admin/catnojav.sql
@?/xdk/admin/rmxml.sql
@?/javavm/install/rmjvm.sql
truncate table java$jvm$status;
select * from obj$ where obj#=0 and type#=0;
delete from obj$ where obj#=0 and type#=0;
commit;
select owner, count(*) from all_objects
where object_type like '%JAVA%' group by owner;
select obj#, name from obj$
where type#=28 or type#=29 or type#=30 or namespace=32;
select o1.name from obj$ o1,obj$ o2
where o1.type#=5 and o1.owner#=1 and o1.name=o2.name and o2.type#=29;
shutdown immediate
set echo off
spool off
exit
-- End of File full_rmjvm.sql

Scripti çalıştırmadan önce veritabanını shutdown komutu ile kapatmanız gerekiyor. Sciprti oluşturduğumuz path e giderek. kapalı veritabanına sqlplus ile bağlandıktan sonra @full_rmjvm.sql yazarak enter a basıyoruz ve script çalışmaya başlıyor.

Ve aşağıdaki gibi yeniden veritabanını shutdown ederek sonlanıyor.

Sqlplus ile veritabanına tekrar bağlanarak veritabanını açıyoruz.

@?/rdbms/admin/utlrp.sql ile tekrardan objeleri derleyip invalid obje olup olmadığını kontrol ediyoruz.

select * from dba_objects where status='INVALID';

Sonrasında option kontrol scriptini tekrar çalıştırıyoruz.

set line 1000;
set pagesize 1000;
col COMP_ID format a15;
col COMP_NAME format a40;
select COMP_ID,COMP_NAME,STATUS from dba_registry;

işlem sonrası çıktı aşağıdaki gibi olmalıdır. JVM ile birlikte yüklenen diğer komponentlerin de kaldırıldığını görebiliriz. JAVAVM XML ve CATJAVA componentleri kaldırılıyor. Buradaki XML’i XML DB ile karıştırmamak lazım. ORACLE XDK isimli XML paketi kaldırılıyor sadece.  Kaldırılan componentlerin statüleri removed olarak görünüyor.

Aşağıdaki sorguyu tekrar çektiğimizde de hiçbir sonuç dönmemesi lazım.

SELECT owner, object_type, status, COUNT(*)
 FROM dba_objects
 WHERE object_type LIKE '%JAVA%' and owner NOT IN ('EXFSYS','SYS')
 GROUP BY owner, object_type, status
 ORDER BY owner, object_type, status;

İşlem tamamlandıktan sonra işlemin yapıldığı path te oluşan full_rmjvm.log dosyası incelenebilir.

 

Leave a Reply

Your email address will not be published. Required fields are marked *