Showing posts with label UNIX. Show all posts
Showing posts with label UNIX. Show all posts

Wednesday, August 12, 2009

ZIPLI DOSYA IÇERISINDEKI SATIR SAYISINI HESAPLAMA

zipli olan dosyalarımızın içerisinde kaç satır olduğunu hesaplamak için aşağıdaki scriptler ile bulabiliriz.
ilk scriptimizde manuel olarak önce zipli dosyaları açıyoruz sonra bu açılmış dosyaların count'unu alıp tekrar zipliyoruz.

for i in `ls -lt /home/aliates/source_data | awk '{print $9}'`;
do
gunzip $i
isim=`ls *.DAT`
deger=`wc -l $isim`
echo $i";"$deger >> /home/aliates/data/source_data_zip.csv
gzip $i
done

ikinci yöntemde ise bu zipli olan dosyaları açmadan countunu almak için

for i in `ls -lt /d104/intercon/source_data/ |awk '{print $9}'`;
do
deger=`zcat {$i} | wc -l`
echo $i";"$deger >> /d101/data/intercon_sms.csv
done

Sqlldr ile atılan toplan kayıt miktarını görmek için aşağıdaki yöntem kullanılabilinir.
eğer zipli olan dosyalarınızı sqlldr ile yüklüyor iseni o zaman sqlldr'nin log sosyalarından yararlanabilirsiniz.
Orada kaç kayıt okuduğunu size gösterecektir.

for i in `ls *.log`;
do
sayi=`awk '/Total logical records read:/ {if (NR!=1) print $5}' ./$i`
echo $i"-------->"$sayi
done

bütün bunları excelde açabilmek için ";" ayracını kullanıp ".csv" uzantılı kaydederseniz excell'de görebilirsiniz.

Friday, July 31, 2009

ORACLE'DA INACTIVE SESSIONLARI KILL ETMEK

--bu işlemleri yapabilmeniz için ALTER SYSTEM yetkisine sahip olmanız gerekiyor.
DECLARE

  v_dyn_sql  VARCHAR2(500);

BEGIN

  v_dyn_sql := 'SELECT ''kill session ''|| s.SID || '','' || s.serial# || '' '' || '' immediate ;'' '

               ||' FROM v$session s, v$process p'

               ||' WHERE s.paddr = p.addr '

               ||' AND s.username IS NOT NULL '

               ||' AND s.username = ''bilgisayarimin makina adi'' '

               ||' AND s.osuser = ''isletim sistemimin adi'' '

               ||' AND s.last_call_et / 3600 > 1 '

               ||' AND s.status = ''INACTIVE'' '

               ||'ORDER BY logon_time';

  

  dbms_output.Put_line(v_dyn_sql);

  

  EXECUTE IMMEDIATE (v_dyn_sql);

END;



--UNIX üzerinden ORACLE'nin inactive session'larını kill etmek için aşağıdaki yönetemi uygulayabiliriz.
--UNIX'te çalışan bir işi kill etmek için gerekli olan script
--kill -9 "çalışan işin id'si"
--bu script'i üretmek için aşağıdaki select cümleciğini hazırlayalım.

set echo off
head off
veri off
pages 50000 lines 120
spool on oracle_kill_session.sh


SELECT   'kill -9 '

         ||p.spid

         ||' # '

         ||s.username

         ||' '

         ||s.program

FROM     v$session s,

         v$process p

WHERE    s.paddr = p.addr

         AND s.username IS NOT NULL

         AND s.username = 'bilgisayarimin makina adi'

         AND s.osuser = 'isletim sistemimin adi'

         AND s.last_call_et / 3600 > 1          --son bir saattir sistemde olanlar

         AND s.status = 'INACTIVE'                     --inactive duruma düsenler.

ORDER BY logon_time;

/

spool off


--şimdi kill scriptimizi hazırladık. Sıra bunu çalıştırmaya geldi.

--önce çalıştırabilir hale getiriyoruz oracle_kill_session.sh dosyasına execute edilebilme yetkisi verelim.
chmod 700 oracle_kill_session.sh
--burada 777 diyerek herez'e yetki vermek doğru olmayabilir. Buna dikkat edelim.
./oracle_kill_session.sh
--diyerek inactive sessionları kill ediyoruz.


--çok daha farklı kıstaslara göre kırılım yapabilirsiniz.
--bu kıstaslar aşaıdakililer olabilir.

--SID
--SERIAL#
--USER#
--USERNAME
--STATUS
--SERVER
--SCHEMA#
-- SCHEMANAME
-- OSUSER
-- PROCESS
-- MACHINE
-- TERMINAL
-- PROGRAM
-- TYPE
--PLSQL_OBJECT_ID
--MODULE
--LOGON_TIME
--LAST_CALL_ET

Thursday, July 23, 2009

UNIX'TE DOSYA PARÇALAMA

/home/aliates$ split -l 65000 bolunecek.csv bolunen_

Oracle'den spool ile aldığımız yada şöyle diyelim bir şekilde tabloyu text (csv) dosyaya aktardık. Bunu excell ile açmak istiyoruz. excell 2003'de 65000 (int kadar) satır destekliyor. ee napacaz bizim dosyada var 230.000 satır. İşte yukarıdaki komut bize verilen dosyayı istenilen satır sayısında parçalıyor.

Friday, July 17, 2009

crontab da logların mail olarak gelmesini engelleme

crontab'da çalışan sorguların sonuçlarını loglamak için bazen bir dizin girmemiz gerekir, bazende hiçbirşey girilmediğinde bunları mail olarak alırız. Bazen program sürekli log üretir ve yer sıkıntısı yapar ise logların gelmesini istemeyebilriiz. Bunun için log yerine sunu diyebiliriz.

log_ureten_script.sh >/dev/null

bunu yazarsak log üretmeyecektir.

UNIX'TE BACKUP ALMA

UNIX üzerinde backup alma ile ilgili küçük bir shell script yazdım. yaptığı sadece diskler üzerinde gezdirme yapıyor. en son silme işlemini yapıyor. Linux cu arkadaşlar cok beğenmebilir ama basit ve sade bir shell script oldu.


#!/usr/bin/bash
datetime=`date '+%y%m%d'`
source_location_1=/d101/data/original_files
source_location_2=/d102/backup/original_files
target_location_1=/d102/backup/original_files/folder_$datetime
target_location_2=/d103/backup/original_files/folder_yedek
old_file_move=`ls -rt /d102/backup/original_files/ |grep "folder"| head -1`
old_file_delete=`ls -rt /d103/backup/original_files/folder_yedek/ |grep "folder"| head -1`
size1=75
size2=63
#gelen LOG dosyalarını koyacağı klasor yok ise yaratılıyor.
if [ -d ${target_location_1} ]
then
echo "Hedef Dizin Mevcut ${target_location_1} "
else
mkdir ${target_location_1}
echo "Hedef Dizin Olusturuldu ${target_location_1} "
fi
#////////////////////////////////////////////////////////////////////////
#sıkıştırma işlemi yapılarak yer kazancı sağlanıyor
#burada zipleme işlemi yapılıyor.
echo "dosyalar zipleniyor."
for zipfile in ` ls ${source_location_1} | grep ".LOG$"`
do
gzip $zipfile
echo $zipfile
done
#////////////////////////////////////////////////////////////////////////
#zipli dosyaları bul ve aktar.
#zipli dosyaları oluşturdak sonra bunları ilgili gün için yaratılmış olan dizine taşır.
echo "d102 dizininde ilgili yere taşınıyor"
for tarih in `ls ${source_location_1} |grep ".LOG.gz$"| awk '{print substr($1,4,6)}'`
do
file_pattern="???$tarih*.LOG"
mv ${source_location_1}/${file_pattern}.gz ${source_location_2}/folder_${tarih}/
echo ${source_location_1}/${file_pattern}.gz ${source_location_2}/folder_${tarih}/
done
#////////////////////////////////////////////////////////////////////////
#d102 nin %60 i doldugunda d103 e aktar.
#en eski dosyayı taşıyor.
echo "d102 dizininden d103 dizinine taşınıyor"
while [ $size1 -lt `df | grep /d102 | cut -c 38,39` ];
do
mv ${source_location_2}/${old_file_move} ${target_location_2}
echo ${source_location_2}/${old_file_move} ${target_location_2}
done
#////////////////////////////////////////////////////////////////////////
#d103 %70 doldugunda en eski olanı siliyor.
echo "d103 dizininden siliniyor."
while [ $size2 -lt `df | grep /d103 | cut -c 38,39` ];
do
rm -R ${target_location_2}/${old_file_delete}
echo ${target_location_2}/${old_file_delete}
done
echo "işlemler bitti"

Monday, June 8, 2009

PUTTY İLE ADSL MODEME BAĞLANMAK

Adsl Modemin içerisinde kıstılanmış (birçok özelliği olmayan) linux işletim sistemi yüklüdür. Bu işletim sistemine putty kullaranak bağlanabilirsiniz. Bu işlemi yapmanzı için gerekli olan tek şey bir putty programidir. bunu nereden bulurum denemye gerek yok hemen linkini sizin ile paylaşayim.

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Bu programı bilgisayarınıza yükledikten sonra artik windows ve Linux işletim sistemi arasında bir bağlantı sağlayabilirsiniz. Bir sonraki aşamada ise putty programının çaliştirilmasi ile erkana gelen pencereden modemin ip adresini girmeniz Genelde 192.168.2.1 şeklindedir. İnternet Explorerden Modeme bağlanırken kullandığınız ip adresini gireceksiniz. Sonra hemen alt tarafında Connection Type var oradanda TELNET i seçmeniz gerekiyor. Burada varsayalın olarak SSH gelmiştir.

open dedikten sonra artik modeme bağlanmanıza bir adim kaldi. user name olarak root yazıyoruz sonra modemin parolasını yazıyoruz. ve işte modemin içerisineyiz

ilk komut benden ls –l . dikkat ROOT olarak bağlandızın birşey değiştirmeyin Moden yalan olmasın. her ne akdar yazma yetkiniz olmasana root oldugunuz için bu yetkileri kendinize verebilirsiniz. Terkar söyluyorum içinden bişey silmeyin rm dan uzak durunuz.

UNIX başlangıç

Şimdiye kadar hep oracle yazdım aslında sadece oracle ile ilgilenmiyorum Oracle nin yanında UNIX ve Java da bakmak gerekiyor.

Artik Unix ve Java ile ilgili yaptığım çalışmaları bana göre herkezin bilmesi gereken şeyleri burada paylaşmak istiyorum. İlk başta birçok şey temel olacaktır. bu konulara hakim olanlar bunlarda yazılmaz ki diyebilir ama benim blog tutmamdaki temel amaç yeni başlayanlar ve yaa şöyle birşey vardi ama hatirlamıyorum diyenler için elinin altında olması gerekenleri içeriyor. Daha öncede belirttiğim gibi bu benim kendi not defterim. Birçok şey alıntı oalbilir. Alıntı olanalrı belirtiyorum zaten.
UNIX kullanmaya yeni başlayanlar yada başlamaya niyeti olanlar buradan takip ederek ilk başta nelere bakmaları gerektiğini bulabilirler.


O zaman başlayalım linkleri vermeye. İlk linkim Unix kullanmaya niyeti olanların kesinlikle okuması gereken bol örnekli ve küçük ödevleri olan bir site

http://freeos.com/guides/lsst/index.html
burayı bence sık kulllanılanlara ekleyin !!!

Unix de neleri bilmek gerekir derseniz
1- Temel komutları bilin dosya kopyalama, listeleme, haklar verme vs ...
2- Vi ediyorunu windows' daki notepad bunu iyi öğrenmenizi tavsiye ederim http://www.belgeler.org/lis/archive-tlkg-lis-7.2.html
3- shell script (.sh) konusuna hakim olun çok ama çok işinize yarayacak . Oracle kullanırken sizin işinizi o kadar kolaylaştıracak ki anlatamam. burada hazır sorguları kaydediyorsunuz. sonra sadece dosyayı çaliştir dediğinizde o veritabanına bağlanıyor işlemleri yapıyor.