1.AMAÇ VE KAPSAM
Bu yazımda external table özelliğini kullanarak işletim sisteminin disk üzerindeki mevcut kapasite ve bos alan miktarını veritabanı üstünden nasıl kontrol edebileceğimizi anlatacağım. Ps: Aşağıdaki çalışma HP-UX ve Linux üstünde test edilmiştir.
2.UYGULAMA
2.1. Öncelikle df komutunun çıktısıyla biraz oynamamız gerekiyor.Oynamalarımızın sonucunda boşluk ve tab olan yerlerin yerine virgül kullanacağız, çıktının bilgilendirme kısmı olan ilk satırını almayacağımız ve bunun yanında Capacity kısmında bulunan % işaretini kaldıracağız böylece bu kolonu number olarak kaydedip üzerinde fonksyion veya metrikleri belirtip kendimiz için alert scriptleri oluşturabileceğiz.Aşağıda normal df -Pk çıktısı ve değiştirdiğimiz çıktıyı sunacağım.Bundan sonraki adımlarımda kullanmak üzere değiştirdiğim çıktıyı df.log dosyasına kaydedeceğim.
[oracle@orcl ~]$ df -Pk Filesystem 1024-blocks Used Available Capacity Mounted on /dev/mapper/VolGroup00-LogVol00 16473460 14497148 1125984 93% / /dev/sda1 101086 27737 68130 29% /boot tmpfs 831028 396756 434272 48% /dev/shm [oracle@orcl ~] df -Pk | tr -s " " | sed 's/ /, /g' | sed '1 s/, / /g' | tr -d '%' | sed -n '1!p' > /home/oracle/df.log [oracle@orcl ~]$ cat /home/oracle/df.log /dev/mapper/VolGroup00-LogVol00, 16473460, 14497140, 1125992, 93, / /dev/sda1, 101086, 27737, 68130, 29, /boot tmpfs, 831028, 396756, 434272, 48, /dev/shm
2.2. Dosyayı /home/oracle dizinine kaydetmiştim bu dosyayı veritabanı üstünden okuyabilmek için veritabanı üstünde directory oluşturmam gerekiyor ve external table hangi schema kullanıcaksa o schemaya directory read write hakkı vermeniz gerekiyor.
SQL> CREATE DIRECTORY home AS '/home/oracle'; Directory created. SQL> GRANT READ ON DIRECTORY home to bcanbakal; Grant succeeded. GRANT WRITE ON DIRECTORY home to bcanbakal; Grant succeeded.
2.3. Artık external table ımızı oluşturabiliriz.
SQL> show user USER is "BCANBAKAL" SQL> CREATE TABLE OS_TS ( FILESYSTEM VARCHAR2(50 BYTE), BLOCKS NUMBER, USED NUMBER, AVALIABLE NUMBER, CAPACITY NUMBER, MOUNTED VARCHAR2(50 BYTE) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY home ACCESS PARAMETERS ( FIELDS TERMINATED BY ',' (FILESYSTEM, BLOCKS, USED, AVALIABLE, CAPACITY, MOUNTED) ) LOCATION ('df.log') ) REJECT LIMIT UNLIMITED; Table created.
2.4. Tablomuz sıkıntısız oluşmuşa benziyor kontrol edelim.
SQL> show user USER is "BCANBAKAL" SQL> select * from os_ts; FILESYSTEM BLOCKS USED AVALIABLE CAPACITY MOUNTED -------------------------------------------------- ---------- ---------- ---------- ---------- --------------- /dev/mapper/VolGroup00-LogVol00 16473460 14497140 1125992 93 / /dev/sda1 101086 27737 68130 29 /boot tmpfs 831028 396756 434272 48 /dev/shm
2.5. Df komutunu çıktı alacak şekilde belli aralıklarla crontabınıza set ederseniz güncel bir şekilde işletim sistemi disk durumunu kontrol edebilirsiniz.
Dinçer Kurnaz says
Güzel bir blog yazısı olmuş saol
Bugra Canbakal says
Merhaba begendiginize sevindim