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

8 Mar by Ahmet Duruöz

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.

http://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