Bir paket içindeki fonksiyon yada prosedürlerin anlık olarak kullanım durumunun tespiti

Bir paket içindeki fonksiyon yada prosedürlerin anlık olarak kullanım durumunun tespiti

Bir paket içindeki fonksiyon yada prosedürlerin anlık olarak kullanım durumunun tespiti için who_is_using fonksiyonunu kullanabiliriz.

Bir paketi derlemek istediğimizde eğer o paket içindeki fonksiyon yada prosedürler kullanımda ise , maalesef paket derlenememektedir. Bu yüzden paket içerisindeki nesnelerin kullanım durumunu tespit edip , kullanılmamasını sağlayıp, sonrasında paketi derleyebiliriz.

who_is_using fonksiyonunun SYS şemasında oluşturulması gerekmektedir. Aşağıdaki linkten who_is_using.plb dosyasını indirip , SYS ile bağlanıp çalıştırın.

https://www.veritabani.gen.tr/who_is_using.plb

 

-bash-4.3$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Mar 8 13:36:21 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> @/home/oracle/who_is_using.plb

Procedure created.

SQL> 

Fonksiyonun oluşturulmasında sonra aşağıdaki gibi kullanabilirsiniz. Aşağıdaki örnekte içinde dbms geçenler sorgulanmıştır. select cümlesindeki like kullanımı ile aynı şekilde sorgulama yapılabilir.

SQL> exec who_is_using('%dbms%');
(1-1719) - SYS
(4-1719) - ADURUOZ

PL/SQL procedure successfully completed.

Çıktıdaki sayılar gv$session tablosundaki INSTANCE_ID ve SID kolonlarına denk gelmektedir. Yukarıdaki çıktıda 1 : INSTANCE_ID , 1719 : SID değeridir. Bu değerler ile gv$session sorgulanarak ilgili oturum hakkında detaylı bilgi elde edilebilir.

Loading

Bir yanıt yazın

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