9 Aralık 2009 Çarşamba

Application Express (Oracle)


APEX; Oracle veritabanı bağlantısı kullanarak hızlı ve az programlama bilgisi gerektiren web uygulaması geliştirmeye yardımcı olan bir tool.

http://apex.oracle.com/i/index.html adresinden workspace'nizi oluşturup hemen uygulama geliştirmeye başlayabilirsiniz.

Daha detaylı bilgi için;

Aradan 5 sene geçmesine rağmen girdiğim içeriği detaylandırmak istedim. (Tonguç Abi'te verdiğim söze istinaden :) ) . Tabi 5 sene geçince Oracle boş durmamış APEX 'i çok zenginleştirmiş.



Bu sayfada adım adım Apex Web uygulama Tool'u ücretsiz 25 Mb workspace alanı için anlatımı var. 
Hesap oluşturmak için, resimdede görüldüğü gibi "Request Free Workspace" butonu ile devam edilebilir.


Oracle Application Express 4.2 ile benim ilk gözüme çarpan yenilik, Packaged App. Sample olarak install edilmiş uygulma dışında birsürü farklı tema da uygulamayı install ederek, üzerinde kendi ihtiyaçlarınıza uygun değişiklikler  kolaylıkla yaparak çalışabilirsiniz.


Sample uyguluma üzerin de yaptığım küçük bir değişikliği paylaşacağım : 

Aşağıdaki resim developer'ın gördüğü admin paneli,  Buradan yeni bir uygulama create edilebilir, veya mevcut uygulamalarınızda değişiklikler yapabilirsiniz.



Ben mevcut sample uygulama üzerinde bir değişiklik yapacağım: Resimde görülen uygulamalarda Edit butonu ile değişiklikler yapılabilmekte. 




Uygulama ile ilgili componentlerin tamamı sayfa bazlı listeleiyor. View seçeneği sanırım 4.2 versiyonu ile gelmiş , tree based bir yapıdada componentlerin görülmesi söz konusu.


12 Kasım 2009 Perşembe

Socket Programlama (Java - UDP)

Socket Nedir?

Bir socket iletişim hattının iki ucunda daki hostlar üzerinde çalışan programın networke açılan kapıları gibi düşünebiliriz. Java da socket sınıfları kullanılmakta, client ve server programlarının birbirleri ile iletişimini temsil etmek için. java.net package içindeki iki sınıf Socket ve ServerSocket
client ve server taraflı geliştirmelerde kullanılmaktadır.

UDP ? -> UDP protokolü networkte uygulamaların gönderdiği paketlerin ki bunlara datagrams diyoruz, iletiminde diğer bir uygulamaya iletim yönteminin (örneğin pakedin iletim garantisi vermiyor) bağlantı güvencesi olmaksızın gerçekleştirilmesi.

Datagram nedir? -> Bağımsız , nerden nereye gideceğini varış zamanını kendisi içerir ; içeriğinin iletilme garantisi yoktur.

Daha ayrıntılı bilgi için ; http://en.wikipedia.org/wiki/Packet_%28information_technology%29

Datagram Client ve Server


6 Ağustos 2009 Perşembe

Cache Bellek nedir? ile ilgili alıntı

Kaynak http://www.ceviz.net/cache-bellek-nedir_a314.html

Siz bir uygulamayı ikinci çağırışınızda ilk çağırışınızdan hızlı açılıyorsa cache bellek ile tanıştınız demektir. Peki bu olayın perde arkası nedir?

Cache Bellek en son yaptığınız işlemleri değerlendirerek bir sonraki yapacağınız işlemi %90 tahmin edip bu bilgileri tutan L1 ve L1 in %10 tutturamaması durumunda bu %10 un da %90'ı oranında (siz hesaplayın artık) tahmin edip bu bilgileri tutan L2 adında işlemci çekirdeğine gömülü iki adet statik Ram den oluşur.

Cpu L2'de de bu bilgileri bulamamsı durumunda RAM'e gider. Orada da yoksa HDD'e gider.

Cache Belleği ilk icat edildiği yıllarda board üzerine koymuşlar ve sadece L1'den oluşuyormuş. O zamanlar da bu tahmin mekanizması bayağı işe yarasa da board üzerinde olduğu için Cpu L1 ile iletişime geçeceği zaman board'un veri yolu hızına düştüğü için pek şimdikisi kadar kullanışlı değildi. Abiler bu Cache'i Cpu içine koymak istiyorlardı. Fakat bu o kadar kolay değildi. Milyonlarca transistörü Cpu içine koyan adamlar, bir türlü Cache'i çekirdeğe gömemiyorlardı ki çekirdek hızında erişebilsinler. Bir ara akıllarına bir fikir geldi. Madem biz bunu çekirdeğe koyamıyoruz çekirdeğe en yakın yere koyalım dediler ve bu fikrin ürünü olan SLOT işlemciler piyasaya çıktı. Bu tip işlemcilerde çekirdeğin etrafında Cache'ler görülebilir. Fakat bu yöntemle hem istedikleri performans'ı alamadılar hem de işlemci board üzerinde dikine durduğu için sabitlemek zor oluyordu. Bir süre sonra Cachle'i çekirdeğe gömmeyi başardılar. Hatta L2 ile birlikte. Cache li işlemciler normallerinden daha pahalıydı. Çünkü cache'i çekirdeğe gömmek zor bir işlemdi. Öyle ki ürettikleri 100 işlemciden 98'ini çöpe atmak zorunda kalıyorlardı.

İşte bir işlemci alırken dikkatimizi çeken 512 cache olayının hikayesi kısaca böyle.

Nasıl Çalışır?

Her zaman şu örnek verilir. Bir lokantaya ilk defa gidip bir kase çorba istediğinizde Çorbanın yapılıp gelmesi uzun sürebilir. Eğer yemeğin yapıldığı yerin(HDD) hemen ön tarafında belirli bir miktar yemeği sıcak tutabilecek bir hazne varsa (RAM) ve siz oradaki çeşitlerden birini yiyecekseniz çorbanın pişmesini beklemezsiniz. Siz eğer aynı yere daha sık gelmeye başlarsanız garson sizi tanır ve sizin geleceğiniz saatlerde yemek arabasına(L2) sizin çeşitlerinizi de koyar. Sürekli müşterisi olursanız ve %90 aynı siparişleri veriyorsanız geleceğiniz saatte çorbanızı masanızda(L1) hazır bulursunuz.

Ne işe yarar?

İşte siz örn: Excel'i ilk açtığınızda normal hızda açılır. 2. Açtığınızda nasıl açıldığını bile fark edemezsiniz.

Cache farkını Setup'tan L1 ve L2 seçeneklerini DİSABLE yapıp test edebilirsiniz.

Statik ram den bahsettik onu da açıklayalım;

Çalışma prensibi olarak temelde 2 tip RAM vardır. Dynamic ve Static.

Static RAM makine açık olduğu sürece üzerine yazılan veriyi tutabilir. Transistörlerden imal edilmiştir.

Dynamic RAMler üzerindeki veriyi tutabilmek için belirli aralıklarla kondansatörlerle tetiklenmeleri gerekir. Aksi takdirde üzerindeki veri kaybolur. Bunun için ana kart üzerinde bu tetiklemeyi yapacak ayrı bir devre dizayn edilmiştir ve bu yüzden dynamic ramler cache bellek olarak çekirdekte kullanılamazlar. Bildiğimiz ramler Dynamic ramdir. Static ramler yapılarında transistör kullanıldığı için daha pahalıdır.

10 Temmuz 2009 Cuma

Volantis Mobility Server

Volantis Mobility Server™ java temmelli devolopment ve çalışma ortamı sağlayan bir platformdur. Web devolopmentler için kendi mobil Internet uygulamalarının 6,300 device tarafından kullanılabilecek şekilde build edilmesinden sorumludur.


Volantis Mobility Server mobil içeriklerin yönetiminin karmasısını azaltmak için tasarlanmıştır. Bu nedenle developerlar ve içerik sahipleri , kullanıcıların daha kolay servis alabilecekleri uygulamalar oluşturabilmektedir.


VMS bir çok connector içermektedir ki dinamik içerik kaynağı ve Web 2.0 Internet servislerini entegre olmasını sağlamaktadır.

Developerlar connectorleri özelleştirirler kendi mobil tarafları içinde , basit XML tagleri kullanarak, Java programlama azaltılır, otomatik olarak transformasyon işlemleri gerçekleştirilir ve optimizasyon sağlanır device karşılık gelen içerik için.

9 Temmuz 2009 Perşembe

Apache Ant

Ant Nedir?

Java tabanlı olarak geliştirilmiş olan bir tool dur.

Make olarak bilinen başka bir tool gibi build ve deploy gibi işlemleri büyük projeler de kolaylaştırmak için yaratılmıştır.

"Another Neat Tool" tanımının baş harflerinin kısaltılmasından türetilerek isimlendirilmiştir.

Daha sonraları Ant için "Karıncalar inşaat faaliyetlerinde çok küçük ve çok çalışkan varlıklardır.","Karıncalar ufak vücutlarına rağmen kendi ağırlıklarının düzinelerce katı ağırlıkları taşıyabilirler." sözleri atfedilerek övülmüş ve tanıtılmıştır.

Neden Ant?

Büyük bir java projesiyle uğraştığınızı düşünün.Elinizde bir sürü ".java" dosyası var ve üstüne üstlük farklı-farklı klasörlerin altındalar.Projeyi geliştirirken hep aynı rutin işlemleri yapıyorsundur.Kodları derle,manifest dosyası hazırla, jar'la, war dosyaları hazırla,sonrada tüm yaptıklarını alıp server'e deploy et.Ufak projeler için önemsenmeyebilir fakat büyük projeler için bütün bu işlemleri her değişiklik yapıldığında tekrar-tekrar yapmak bezginlik verebilir.

İşte Ant burada ortaya çıkıyor ve sizi rutin,sıkıcı işlemlerden ve hamallıktan kurtarıyor.

Ant ile başka bir bilgisayarda çalışarak remote bir servere ftp ile dosyalarınızı atabilir ve deploy edebilirsiniz.Hatta birbaşkasına mail ile gönderebilirsiniz.


Kaynak :

26 Haziran 2009 Cuma

Free Marker Template Language

FTL(FreeMarker Template Language) uzantılı dosya örnekleri ile karşılanca, ftl nedir? diyip araştırınca

Java temelli olup, MVC mimarisi üzerine kurulu bir engine tarafından , html web taslakları üretiyor.

Template Engine (web) çalışma mantığını net bir şekilde tasvir eden bir foto;





Template Engine ile ilgili daha detaylı bilgi için;

http://en.wikipedia.org/wiki/Template_engine_(web)



FreeMarker ile ilgili bir örnek ;



böle bir taslak var;


< html>
< body>
< p>Hello ${name}! You have the following messages:
< #list messages as m>

${m.from}: ${m.body}


< /#list>
< /body>
< /html>






ve bazı süreçler sonrası aşağıdaki hali alıyor...

< html>
< body>
< p>Selam Pinar! Mesajın var:
< p>< b>Annen: Anneciğim yavaş git tamam mı!!!


< p>< >Raiba: Abla eve gelirken güzel bir film al ..


< /body>
< /html>



gibi

25 Haziran 2009 Perşembe

Subclipse nedir? Eclipse ile iliştirlmesi nasıl?

Subclipse, takım halinde (ya da tek başınıza)kodlama yaparken, yazdığımız programların versiyonlanmasını sağlıyor. Kimlerin hangi değişiklikleri yaptığı ,herhangi bir sorun olması durumunda kodların önceki hallerine dönülmesini sağlayan açık kaynak versiyon kontrol sistemi Subversion programının, başta Java olmak üzere birçok programlama dilinde kod geliştirmeye yarayan Eclipse platformu üzerinden kullanılmasını sağlayan bir eklentidir.


İster bir ekibin parçası olunan durumlarda ; yanlız çalışırkende kullanılması projenin geliştirilme süreci açısından oldukça faydalı olacağı kaneatindeyim...

Kurulumu;

1) Help->Sofware Update->Find and Install menüsüne girin,
2) “Search for new features to install” seçeneğini işaretleyerek ileri tuşuna basın,
3) Sağdaki menüden “New Remote Site” butonuna basın,
4) Açılan pencerede “Name:” kısmına Subclipse, “URL:” kısmına http://subclipse.tigris.org/update_1.2.x yazarak kaydedin
5) “Finish” butonuna basarak Eclipse’in sizin için var olan yüklemeleri yapmasını bekleyin.

şeklindedir.

22 Haziran 2009 Pazartesi

Spring

Spring J2EE projelerinin kolayca geliştirilmesine yarayan , IoC ve AOP gibi modellemeleri içinde barındıran bir framework tur.

Basit bir uygulama geliştirmek istersek;


Öncelikle ortamımızı oluşturuyoruz; bunun için ;

Eclipse Europe, Eclipse Spring IDE Plugin ve Spring Framework leri edinmemiz gerekiyor.


http://www.eclipse.org/downloads/moreinfo/jee.php --> Eclipse IDE for Java EE Developers (Package Contents - Package FAQ)


http://www.springsource.org/download --> Spring Framework için


http://springide.org/updatesite/spring-ide_updatesite_2.0.2_v200712142013.zip --> Spring Ide (eclipste daha rahat spring kullanarak uygulama geliştirmek için)


Spring IDE nin kurulumu için ;

(Daha derli toplu çalışabilmek için )

C:// nin altında "araçlar" adında bir klasör oluşturuyoruz.
Buraya Eclipse exceyi çıkartııp çalıştıyoruz .




Daha sonra;
Spring Ide nin kurulumu için ;





resimde görüldüğü üzre seçeneğini seçiyoruz.

Çıkan pencereden "Search for new features to install" seçeneğini seçip
nextliyoruz , burda "new local site" butonu ile kurmak istediğimiz idenin klasörünü gösteriyoruz.

Burda wizarda aslında akıyor zaten , herhangi bir hata ile karşılaşılırsa burda bazı dependicy ler isteyebilir, onları seçenekten çıkartırsak , kurulumu rahatça tamamlayabiliriz.

bir dahakinede kurulum sonrası giriş örneği gireceğim (üşemmessem tabi :))

18 Haziran 2009 Perşembe

IoC(Inversion of Control)

IoC ; bir çok framework ün modellenmesinde kullanılan, başlıca nesneye yönelik programlamaya ait kavramlardan biridir. Basitçe ne olduğunu anlatmaya çalışırsak;
genel olarak prosedürel programlama dillerinde , üst seviyeli modüllere bağlı alt seviyedeki bir modülün değiştirilmesi için üst seviyedeki modülünde tekrar bir elden geçmesi gerekir. Buda tekrar kullanılabilirliği öldürmektedir. Tersine bir bağımlılıktan bahsedilmesi ve bunun kontrolünün sağlanması IoC kavramını ortaya atmıştır gibi bir şeyler diyebiliriz sanırım. Nesneye yönelik programlama dillerinden birini kullandığımız zamanlarda da aynı hataya düşülebiliyor,
fakat bir çok open source framework IoC konseptine uygun bir ortam sağlıyor yazılım geliştiriciler için.

Avantajlarından kısaca bahsedersek;

Tekrar kullanılabilirlik artıyor, Kod tekrarı önleniyor, daha kolay test edilebiliyor yazılım vs.

Şimdi bir fremawork kullanmadan IoC modeline uygun örnek vermek gerekirse;


A ve B isminda iki classımız var ;


public class A{
private B b;

public A(){
b=new B();
}




a objesi doğrudan bir b objesi oluşturuyor.


Şimdi bu örneği ;




IoC modeline uygun hale getirirsek;



public class A{
private B b;

public A(){
}

public setB(B b){
this.b=b;
}

}


17 Haziran 2009 Çarşamba

Hibernate Nedir?

ORM(object relation modelling) yapılmasında java da kullanılan opensource bir uygulamadır. ORM nedir? dersek; onuda veritabanından çekilen sorguların bir obje aracılığıyla kullanılması gibi en basit şekilde tanımlayabiliriz.

Hibernate benzeri , java persistance gibi bir apide bulunmaktadır ayrıca.

2 Nisan 2009 Perşembe

ORACLE APEX Giriş Sayfasını Değiştirme

Apex in kendi login sayfalarında, çalışan kendine ait olan process . Authentication ı sağlayıp, yönlendirme işlemini yapıyor.

wwv_flow_custom_auth_std.login(
P_UNAME => :P2_USERNAME,
P_PASSWORD => :P2_PASSWORD,
P_SESSION_ID => v('APP_SESSION'),
P_FLOW_PAGE => :APP_ID||':1'
);

Bazen giriş sayfasını bazı şartlara göre değiştirilmesi gerekebilmekte. Örneğin kullanıcının yetkisine bağlı olarak farklı giriş saygalarının karşılaması gerekebilir. Böyle bir durumda ;

Login sayfasındaki processi mizi aşağıdaki gibi düzenleyebiliriz.


DECLARE
v_start_page number(10);
BEGIN
BEGIN
SELECT start_page
INTO v_start_page
FROM apex_users
WHERE upper(name) = upper(:P2_USERNAME);
EXCEPTION
WHEN no_data_found THEN
v_start_page := 1;
END;
wwv_flow_custom_auth_std.login(
P_UNAME => :P2_USERNAME,
P_PASSWORD => :P2_PASSWORD,
P_SESSION_ID => v('APP_SESSION'),
P_FLOW_PAGE => :APP_ID||':'||nvl(v_start_page,1)
);
END;

23 Mart 2009 Pazartesi

Connection Pool Data Source

Önce database connection nedir? Çoooooook basitleştirirsek ; bir client yazılımının , bir database server ile konuşturmak için arada komutları ve cevapları (resultset gibi düşünülebilir) taşıyan ara birim gibi bir şey.

Connection Pool ise bu database connection ların tutulduğu, gerektiğinde daha önce kullanılan connection tekrar açmak yerine yeniden kullanılmasını sağlayan, bağlantı sayısını kontrol altında tutan (bir anda bir sürü bağlantı açılıp kasılmayı önlemek için) , bağlantı isteklerini sıraya koyan bir yapı. Gerçi çok emin olmamakla bir likte bir çok database server da bu yapının özellikleri ; seçilen mimariye göre değişebilir.

XA Data Source ile ilgili kabaca birden fazla veritabanı transaction söz konusu ise kullanımı tercih edilir. Konuyla ilgili ayrıntılı bilgi için; -->

http://mustafatan.blogspot.com/2007/01/xa-needed-more-often-than-you-think.html

19 Mart 2009 Perşembe

RAD (Rational Application Developer) IBM

IBM Sun satın alma ihtimalinin söz konusu olduğu haberlerin yayılmaya başlamasıyla, şu sıralar projesini yetiştirmeye çalıştığım( IBM'in üniversite öğrencileri için düzenlemiş olduğu Yazılım Akademisi yarışmasındaki "GSM tabanlı faturalandırma ve sorgulama" adlı proje) için yaptırım gücü oldu bu haberle ile birlikte. Ödüller açıklandığında bile bu kadar heveslenmemiştim :D

Projemizde kullanılacak teknolojiler ve araçlar konusunda kendi ürünlerini yada open source teknolojiler kullanımı ile ilgili kısıtlamalar var.

IBM ürünlerinden olan RAD ide si projemizi geliştireceğiz. J2EE standartlarına uygun olması gerekmekte. Bu nedenle Struts Framework ü ile çalışmaya karar verdi. Struts ile uygulama geliştirenler için RAD struts desteği ile gelmekte buda Strutsun installion ı ile vakit kaybetmememizi sağladı. RAD 7.5 kullanarak giriş seviyesinde struts örneği bahsedicem en kısa zamanda . Bu arada WebSphere 7.0 üzerinde uygulamayı run edicez :D

26 Şubat 2009 Perşembe

Struts - Jakarta Struts

Struts Java/JSP ile hazırlanan web uygulama temelli bir fremawork tür. J2EE platformunda uygulama geliştirmek için oldukça kullanışlıdır.Open Source olduğundan herhanbir ücret söz konusu değildir.

Struts Neden Kullanmalıyız?

Open source olduğundan bir çok kişi tarafından kullanıldığı için, bug ları çabuk bulunup düzeltilmektedir. Uygulamaların geliştirilmesini hızlandırır.

Struts - > Framework

Framework bir tanım getirirsek "Bir şeylerin yapımına başlanmasında , yapının oluşmasına yardımcı olan iskelettir." gibi basitleştirebiliriz.

Sturts Nasıl Çalışıyor?
Strust Model-View-Controller (MVC) dizayn temeline dayanmaktadır.

Model : Model yapısı ilişkili datalar, iş mantığı için kullanılabilir modeller sunmaktadır. Model yapıları programla database arasında ilişkileri sağlıyor. Örneğin HR için çalışanların bilgilerine eriştikleri bir arayüz desteği gibi bişi, bende hakim değilim. Hakim oldukça daha detaylı bilgi girerim artık ;)

Google sayesinde edindiğim bir bilgi de Model Kavramı için ;

"Model components are generally standard Java classes. There is no specifically required format for a Model component, so it may be possible to reuse Java code written for other projects."

View : Model yapısı tarafından sağlanan bilgilerin ekranda gösterilmesi kısmıyla ilgilenen yap. Genelde JSP sayfaları tarafından sağlanmaktadır.

Controller : Gelen datalara göre ne yapılacağına karar veren yapı gibi düşünülebilir.

Çok sığ oldu biliyorum :( Yazıyı yazarken faydalandığım kaynak -> http://www.developer.com/java/ent/article.php/10933_1495931_1 burdan daha faydalı bilgilere erişilebilir.

16 Şubat 2009 Pazartesi

Red Hat 4 Telnet servisi

Linux dağıtımlarından Redhat ta kurulu bir makinaya uzaktan erişim problemi, telnet servisi sistemin boot edilmesi ile başlamamakta imiş. Bu nedenle sistem çalıştıktan sonra telnet servisini en azından bir kereye mahsus manuel elle başlatılması gerekebilir.

12 Şubat 2009 Perşembe

Oracle Servisleri Başlatma

Veri tabanını kapatıp açtığımızda yada yeni kurulum yapıldıktan sonra servislerin ve veritabanının başlatılması gerekebiliyor.

su - oracle
sqlplus / as sysdba

sqlplus bağlandıktan sonra ;
"Connected to an idle instance" diye bir yazı ile karşılaşırsak database ayakta olmadığını ve çalıştırmamız gerektiğini anlıyoruz.

11g modsql de çalıştığı için emctl ile , 10g için opmnctl ile servisleri ayağa kaldırıyoruz.

11g için;


lsnrct start
emctl start dbconsole
sqlplus / as sysdba
startup (in sqlplus session)

Localhosta çalışanlar için makineyi sık sık kapatmak söz konusu olduğunda bu işlemlerin sistem yeni başlatıldığında çağrılan bir script tarafından yapılması oldukça faydalı olacaktır.

11 Şubat 2009 Çarşamba

Linux işletim sistemi üzerine Oracle kurulumu

Linux üzerine program kurmak çoğu zaman Windowstaki gibi kolay olmuyor. Oracle kurulumu için de aynı şey söz konusu. Kurulum öncesinde bir çok hazırlık yapılması gerekiyor. Sonrasında da bazı scriptlerin çalıştırılması gerekiyor.

Faydalı olması açısından bu yazıyı Red Hat Enterprise Linux 4 üzerine Oracle 11g kurulumu diye adlandırmak daha doğru olacaktır.
Fakat linuxun diğer dağıtımları veya Oracle'ın diğer sürümleri için de çoğu zaman aynı adımlar uygulanıyor.

Kurulum Öncesi Hazılık

Önce Linux üzerinde tüm haklara sahip olan root kullanıcısı ile sisteme girilmesi gerekiyor ki rahat rahat yeni paketler kuralım, istediğimiz dosyanın içine girip çıkalım, kısaca ortamda tüm yetkilere sahip olmanın özgürlüğünü kullanabilmemiz için
(çok uzattım, blog yazma konusunda çok yeniyim toparlamakta çoğu zaman güçlük çekebilirim :) Herneyse )

--> root kullanıcısı gibi login oluyoruz.

Ve gerekli donanımsal ortam ihtiyaçlarını şöyle bir gözden geçiyoruz.

--> 1 GB ram database instance kontrolü için
--> 1.5 GB disk alanı swap space için
--> 400 MB disk alanı /tmp klasörü için
--> 1.5 - 3 GB disk alanı Oracle yazılımı için
--> 1.2 GB database kurulum öncesi gerekli yazılımları için (tabi daha öncesinde kurulu olması söz konusu olduğu için gerekli olmayadabilir.)
--> 2.4 GB Flash Recorvery Area
(Burda biraz Flash Recorvery Area'dan Bahsetmek gerekirse; Oracle 10g ile gelen yeni bir özellik. Çok fazla datanın kullanıldığı veritabanlarında düzenli olarak gerçekleştirilen recorvery işlemlerin data kaybını önleyen güçlü bir tool.)

Yazılımsal İhtiyaçlar

Gerekli paketlerin kurulu olup olmadığını öğrenmek için rpm(Red Hat Package Manager) komutunu kullanacağız.

rpm -q binutils compat-db control-center gcc gcc-c++ \
glibc glibc-common gnome-libs libstdc++ libstdc++-devel \
make pdksh sysstat xscreensaver

aynı anda bir çok pakedin kontrolünü yapıyoruz bu komutla , sistemde yüklü değilse paket uyarı veriyor. Olmayan paketlerin yüklenmesinden sonra kuruluma devam ediyoruz.

Oracle Kullanıcı gruplarının ve kullanıcısının oluşturulması

root kullanıcısı olarak sisteme giriş yaptığımız için yeni bir grup yada kullanıcı oluşturmada sıkıntı yaşamayız.

-->/usr/sbin/groupadd oinstall
-->/usr/sbin/groupadd dba
-->/usr/sbin/useradd -m -g oinstall -G dba oracle

useradd komutunun -g ve -G parametreleri için
-g (primary group assigned to the users)
-G (Other groups the user belongs to)

oracle kullanıcısı için şifre oluşturuyoruz

-->passw oracle

Kurulumun yapılacağı dosya ve dosya yolunu oluşturup , sahiplendirme ve yetkilendirme işlemini yapıyoruz

-->mkdir -p /u01/app/oracle
-->chown -R oracle:oinstall /u01/app/oracle
-->chmod -R 775 /u01/app/oracle

Kernel parametrelerinin Yapılandırılması

Kernel parametrelerinin yeniden yapılandırılması; Oracle'dan en iyi şekilde performans sağlamak için yapılıyor. 60 ' tan fazla farklı OS 'de koşan Oracle'ın tümüyle örtüşmesi mümkün değil. Performansı açısından büyük farklılıklar var. Konuyla ilgili daha detaylı bilgi için:

http://www.dba-oracle.com/oracle10g_tuning/t_ios_kernel_parameters.htm



cat >> /etc/sysctl.conf << EOF
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 658576
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 1048536
net.core.wmem_max = 1048536
EOF



Değişen paremetrelere göre sistemin çalışması için;

/sbin/sysctl -p

Shell Limit Yapılandırması

Oracle kullanıcısı ve database ortam araçlarını (memory gibi) kullanım kısıtlamaları getiriyoruz ki kafasına göre takılmasın diye :P


cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >> /etc/pam.d/login << EOF
session required /lib/security/pam_limits.so
EOF
cat >> /etc/profile << EOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
cat >> /etc/csh.login << EOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF

Hangcheck Timer Yapılandırılması


modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
cat >> /etc/rc.d/rc.local << EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF

Burdaki parametreleri biraz açarsak;


hangcheck_tick ; sistemin sağlıklı bir şekilde çalışıp çalışmadığının kontrol edilme periyodunu tutuyor. Varsayılan değer 60 saniyedir.

hangcheck_margin ; maximum gecikme süresi ; varsayılan değer 30 saniyedir.

Çevresel Ayarların Yapılması

oracle user olarak yapılandırıyoruz. Çünkü oracle userı sisteme girdiğinde sadece kendisi için tanımlı değişkenlere ve path ayarlarına ihtiyacı var.

su oracle


cat >> /home/oracle/.bash_profile << EOF
# User specific environment and startup programs
umask 022
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
export LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.1.0/db_1
export ORACLE_SID=orcl
PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/jdk/jre/lib/i386/server:\
\$ORACLE_HOME/rdbms/lib:\$ORACLE_HOME/lib:\$LD_LIBRARY_PATH:\
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/sbin:\
/usr/sbin:/root/bin:\$PATH
PATH=\$PATH:\$HOME/bin
export PATH
unset USERNAME
EOF


Bu değerlerin aktif olabilmesi için;

--> source ~/.bash_profile

KURLUMA BAŞLAYABİLİRİZ

oracle kullanıcısının okuma hakkına sahip olduğu klasörde olduğunu varsayıyoruz 11g Setup dosyasının ve oracle kullanıcısı olarak kurulumu gerçekleştiriyoruz.

http://www.oracle.com/technology/obe/11gr1_db/install/dbinst/dbinst.htm

Bağlantısında screenshot ile oldukça faydalı anlatılmıştır. (Birazcıkta üşendim kabul ediyorum :D )