Tablo İçeriğine & Karakteri Ekleme (Oracle)

Merhabalar bu yazımda karşılaştığım bir problemi ve karşılaştığım çözümler hakkında yazacağım.

Aşağıdaki şekilde bir tabloya bir değer girmek istediğimi varsayalım:

CREATE TABLE test (Ad varchar2(35)); 
INSERT INTO test values ('&Hazal');

Ancak sistem & kullandığımızda bir değer atamamızı ister. Peki ve (&) işareti koymak istediğimizde ne yapacağız? Bu sorunun cevabını AskTom (asktom.oracle.com) ‘da buldum ve direkt çevirerek sizinle paylaşmak istiyorum.

Öncelikle problemin ne olduğunu daha iyi anlayalım. SQL*Plus’ta &Hazal girilen yerlere atama yapmamız istenir. Oysa ki yapmak istediğimiz, direk olarak &Hazal formatıyla tablo içeriğine alınmasıdır. SQL*Plus’ta şu şekilde görebiliriz bu durumu:

SQL> insert into test (Ad)
values ('&Hazal');
Enter value for Hazal: Merhaba Dunya
old   1: insert into test (Ad)
values ('&Hazal')
new   1: insert into test (Ad)
values (' Merhaba Dunya')
1 row created.

Bu durumda tablodan veri çektiğimizde şu durum ortaya çıkar:

SQL> select * from test;
AD
———————————————————————
Merhaba Dunya

Burada &Hazal Merhaba Dunya şekline dönüştürülmüştür.

  •  Bu durumu durdurmanın en basit yollarından biri SQL*Plus set define off komutunu kullanmaktır.
SQL> set define off
SQL> insert into test (Ad)
values ('&Hazal');
1 row created.
SQL> select * from test;
AD
———————————————————————
Merhaba Dunya
&Hazal
  •  Bu durum SQL*Plus’ta atama karakteri bulunmasını engeller. Yerine yeni bir atama karakteri koyarak bunu da geçiştimiş oluruz.
SQL> set define @
SQL> insert into test (Ad)
values ('&Hazal @X');
Enter value for x: girilen deger
old   1: insert into test (Ad)
values ('&Hazal @X')
new   1: insert into test (Ad)
values (' &Hazal girilen deger’)
1 row created.
  •  Ya da & karakterini kullanmaktan kaçınabiliriz.
SQL> insert into test
values (chr(38)||'Hazal  xxx');
1 row created.
SQL> select * from test
where Ad like '% xxx';
NAME
—————————————————————————
&Hazal  xxx
  •  chr(38) yerine sanırım ‘&’ kullanılabilir.
SQL> insert into test
values ('&'||'Hazal yyy');
1 row created.
SQL> select * from test
where Ad like '% yyy';
AD
—————————————————————————
&Hazal yyy

İyi Çalışmalar
Hazal Çıplak

Oracle Mimarisi 1

Bu yazımda size Oracle mimarisinin genel halinden bahsedeceğim. Öncelikle şunu belitmeliyim ki, oracle bir dil değil veritabanının kendisidir. Veritabanının amacı ise birbiriyle ilişkili bilgilerin depolanması ve sorgulanmasıdır. Bir veritabanı sunucusu, büyük miktardaki veriye çok kullanıcılı bir ortamda güvenli, doğru ve performanslı bir şekilde ulaşılmasını sağlar.

Veritabanı fiziksel ve mantıksal olmak üzere iki yapıdan oluşur.  Genel yapısı aşağıdaki resimde özetlenmiştir.

Fiziksel (Physical) Veritabanı Yapıları

Fiziksel yapı, veritabanını oluşturan işletim sistemi dosyalarıdır. Bunlar Data File, Control File ve Log File’dan oluşmaktadır.

Data File (Veri Dosyaları), veritabanındaki tüm verileri tutan dosyalardır. Mantıksal veritabanı yapılarının içerisindeki veriler fiziksel olarak data fileda tutulurlar. Bir ya da daha fazla data file mantıksal bir veritabanı depolama ünitesi olan bir tablespace’i oluştururlar.

Control File, Bir kontrol dosyası veritabanı adı, data file ve log file adlarını ve diskteki yeri, veritabanının oluşturulma tarihi gibi veritabanı ile ilgili bilgileri tutar. Her veritabanı oturumu açıldığında Oracle bu dosyayı kontrol ederek gerekli bilgileri alır.

Log File (Redo Log Dosyaları), veriler üzerinde yapılan tüm değişiklikleri kaydeder. Böylece verilerin kaybolması veya veriler üzerende yanlış değişiklikler oluşması durumlarında, bu dosyalara bakılarak yapılan son değişiklikler saptanır ve istenmeyen durumlar engellenir.

Mantıksal (Logical) Veritabanı Yapıları

Mantıksal yapı, tablespaceler, segmentler, extentler, veri blokları ve şema nesnelerinden oluşur.

Hiyerarşik olarak, tablespace,bunun altında Segments bunun altında Extents bunun altında Bloklardan vardır. Veri blokları, extentler ve segmentlerden oluşan mantıksal saklama yapıları sayesinde Oracle’ın disk alanı üzerinde ayrıntılı bir kontrolü vardır.

Tablespace, ilişkili mantıksal yapıların gruplanmasını sağlamak için vardır. Bir veritabanı bir ya da daha fazla tablespace’e bölünmüştür. Örneğin, system tablespace ve user tablespace olmak üzere iki farklı tablespace bulunabilir. Her tablespace ise bir veya daha fazla veri dosyasına (data file) sahip olabilir. Tablespace toplam kapasitesi, sahip olduğu data fileların toplam kapasitesine eşittir. Tablespace toplam kapasitesi ise veritabanının toplam kapasitesini belirler.

Veri blokları, Oracle veritabanında verinin saklandığı en küçük yapıdır. Bir veri bloğu, fiziksel veritabanı alanında belirli sayıdaki byte’a karşılık gelir.

Şemalar ve Şema Nesneleri

Şema, veritabanı nesnelerinin oluşturduğu topluluktur. Bir şemanın sahibi bir veritabanı kulanıcısıdır ve bu şema o kullanıcıyla aynı isme sahiptir. Şema nesneleri direk olarak veriyle bağlantılı olan mantıksal yapılardır. Şema nesneleri,  tablolar , viewler, indeksler, clusterlar, procedure, fonksiyonlar, ve packagelardan oluşur.

Tablolar, veritabanındaki en temel veri saklama birimidir. Veritabanı tabloları, kullanıcılar tarafından ulaşılabilecek tüm veriyi bulundurur. Tablolarda veri sorgulanabilir, değiştirilebilir, silinebilir ve yeni veri girilebilir.

Viewler, saklanmış bir sorgu olarak da değerlendirilebilir. Tablo veya viewdeki verinin özelleştirilmiş gösterim şeklidir. Viewler veritabanı üzerinde kendi tanımlarının kapladığı alan haricinde fiziksel olarak yer kaplamazlar. İstenilen alanların alınmasıyla oluşturulan sanal bir tablodur. Viewler daha çok tablo güvenliğini arttırmak için vardır. Belirlenen satır ve sütunlara erişim engellenerek sağlanır.

Indexler, verilere erişim hızını arttırmak için yaratılırlar. Indeksleri, kitapların içindekiler kısmı gibi düşünebiliriz. Tüm verilerin taranmasına gerek kalmadan belli bir alana yoğunlaşılarak istenilen bilgi elde edilir.

Clusterlar, aynı anda sorgulanan birden fazla tablonun bir arada kaydedilmesine denir. Bu yapı, beraber sorgulanan tablolarda hız kazanmak için çok önemlidir.

İyi Çalışmalar

Hazal Çıplak

Windows Üzerine Oracle 11g Kurulumu

Merhaba,

Bu yazımda Oracle 11g kurlumunu daha çok görsel olarak sizlerle paşlaşmaya çalışacağım. Kurulum bilgisayarına ilk defa oracle kuracak olanlara yöneliktir. Oracle’ı yükseltmek isteyenler için farklı bir yol izlenir. Öncelikle setup.exe yi çift tıklayarak çalıştırıyoruz. Setup.exe aşağıda gösterilen yerdedir.

Karşımıza aşağıdaki ekran çıkacaktır.

Mümkünse dil olarak ingilizce seçmenizi öneririm. Ayrıca bilgisayar dilinin de ingilizce olması tercih edilen bir durumdur.

Bu kısımda oracle için bellekte ayırmak istediğimiz alan miktarını ayarlıyoruz. İhtiyacınıza göre belirleyebilirsiniz. Oracle ayrılan bu alanı otomatik olarak sahip olduğu iki faklı bellek yapısına otomatik olarak paylaştırmaktadır  (SGA-System Global Area ve PGA-Program Global Area ). Bu kısımlar kısaca:

System Global Area (SGA): Bir Oracle instance’ının veri ve kontrol bilgisini saklar.

Program Global Area (PGA): Server ve arka plan görevlerinin veri ve kontrol bilgisini saklar.

olarak tanımlanabilir.

Finish butonuna tıklıyoruz.

Farkedebileceğiniz gibi birçok evreyi kendi gereksinimlerinize göre ayarlamanız mümkün. Tüm bu aşamalardan sonra oracle kullanılmaya hazır hale gelir. Başlat menüsünden programlardan kısmından bulabilirsiniz. Oracle’a bağlanıp etkin kullanım sağlayabilmek için Toad veya Oracle Client indirebilirsiniz.

İyi Çalışmalar

Hazal ÇIPLAK

DROPBOX NEDİR – NASIL KULLANILIR?

Günümüzde çoğumuz birden çok bilgisayar üzerinde çalışmalarımızı yürütürüz. Bu ortamlar arasındaki senkronizasyon oldukça önemli bir hal aldı. Bir bilgisayardaki dosyalara diğer çalışma ortamlarından da erişebilmek için farklı yollar kullanırız en yaygın olanı da sanıyorum ki kendi kendimize mail atmaktır. Paylaşımı daha kolay yoldan yapmak için ise bir takım online servislerden (Bulut Bilişim) faydalanırız

Nedir?

     Dropbox’ı, Bulut Bilişm’in (Cloud Computing) kullanınım şekillerinden biri olarak tanımlayabiliriz. Resimlerinizi, videolarınızı veya herhangi bir dosyanızı herhangi bir yerde kullanmanız kolaylığını sağlayan dosya paylaşım platformudur. Dropbox’ınıza yüklediğiniz dosyalarınız otomatik olarak tüm bilgisayarlarınız, telefonunuz ve ayrıca Dropbox’ın websitesinde depolanır. Ücretsiz olarak 2 GB’lik bir alan sağlar. Ayrıca önererek üye olmasını sağladığınız her kullanıcı için maksimum 8 GB’ta kadar 250 MB’lık alan daha verir. İsterseniz ücretli olarakta bellek kapasitenizi arttırmak mümkün.

Nasıl kullanılır?   

Dropbox uygulamasını bilgisayarınıza indirdikten sonra kendiliğinden bir Dropbox klasörü oluşur. Bu klasöre sürükle bırak şeklinde atacağınız dataya rahatlıkla diğer bilgisayarlarınızdan ve Dropbox’ın websitesine login olarak da ulaşabilirsiniz. Dropbox’ı en önemli kullanım nedenlerinden biri de grup olarak yapılan çalışmalarda ki dosya paylaşım kolaylığıdır. İnternet sitesinde açılan ortak bir klasörle bunu kolayca gerçekleştirebiliriz. Ayrıntılı olarak linke tıklayarak görmeniz mümkün. http://www.youtube.com/watch?v=Gcg5JJIPojY&feature=related

İyi çalışmalar.

Hazal ÇIPLAK

Parfümün Dansı

 

     “Parfümün Dansı”. Herkese birşeyler katacağını düşündüğüm bu kitabı biraz tanıtmak istiyorum size.

Tom Robbins’in postmodern tarzda yazdığı ve Ayrıntı Yayınlarının Edebiyat Dizisinden çıkmış olan bir kitap Parfümün Dansı. Çocukluk yıllarınızdan anımsadığımız masalsı anlatımı oldukça etkileyici. Ölümden kaçan Kral Alobar ve Kudranın hikayesi anlatılıyor kitapta. Onlar ölümden kaçarken, siz de bu dünyadan kaçıyorsunuz. Bu hikayede bir de Pan adında bir tanrı var ki ondan öğrenilecek çok şey var.

Yazımda kitabın konusundan çok fazla bahsetmek istemiyorum. Bunu merak edenleriniz http://tr.wikipedia.org/wiki/Parf%C3%BCm%C3%BCn_Dans%C4%B1 linkinden okuyabilirler. Yazım kitapta geçen cümlelerden oluşacak.

“Ölüm sabırsız ve düşüncesiz davranıyor.. Benim içimde bir heves var, kendim olma hevesi.. canım istediğinde ölmek.” diyor Alobar kim söylemz ki zaman zaman bu cümleyi . Kendinizden bişeyler bulmanın zor olmadığını söylemiştim.

“Bilerek yavanı, sıradanı, güvenliyi kucaklayan, bunu sırf hayal kırıklığının getireceği acıdan kurtulmak için yapan bir insanı, nasıl bağrına basabilirsin..” çoğumuz okuduğumuzda bu cümlede kendimizi görmüşüzdür. Hayallerimizden vazgeçip toplumun bize olmamızı istediği sıradan kişiler olmuşuzdur. Bağra basılmaya değer insanın kim olduğunu sorgulamamıza neden oluyor.

“Eğer arzu ıstırabı getiriyorsa, belki akıllıca arzu etmediğimizdendir ya da arzu ettiğimiz şeyi ustaca elde etmesini bilmediğimizden. Kafalarımızı dua seccadelerine gömüp saklayacağımız yerde, tahriklere karşı çevremizde duvarlar öreceğimiz yerde, arzularımızı doyurma konusunda ustalaşsak daha iyi değil mi? Selamet denilen şey zayıflar içindir. Benim inancım bu. Ben hayat istiyorum. Hayatın da tümünü istiyorum. Sefalatini de, harikuladeliğini de. Eğer tanrılar zevkten vergi istiyorlarsa öderim. Ama her seferinde itiraz eder karşı çıkarım.. En güzel şeylerin, bu dünyada sırf bizi denemek için, büyük ödülü almamızı zorlaştırmak için getirildiğine inanmıyorum. Hayatı bu kılığa sokmak insanlara da, tanrılara da yakışmaz.” Alobar’ın bu söyledikleri üzerine yorum yapmaya gerek olmadığını düşünüyorum (!)

“Hayatım kocaman bir serüven, bir ihtimalin araştırılması, bir oyunun icadı, bir oyunun oynanması oldu. Yalnız sağ kalmaya uğraşmak değildi. Ama şimdi gideceğime üzülmüyorum. Zaten zaman da, yaşamak için en iyi zaman değil.” Alobar yüz yıllarca yaşıyor ve bu zamanlara yaklaştıkça söylüyor bu cümleleri. İçinizden biri nedenini merak ediyorsa okumalı

Kitabı okudukça hayata bu dünyaya bir kere gelindiğini ve bu dünyayı yaşamak için tek bir şansımız olduğunu farkediyoruz. Okumalı ve yaşamalısınız diyorum.

Teşekkürler

Hazal Çıplak

Staj bitimi

Bugün stajımın son günü ve stajımla ilgili kısa bir özet geçmek istiyorum. Bir ayı zorunlu bir ayı da gönüllü olmak üzere iki aylık bir staj dönemim oldu. İş hayatı disiplini biraz zorlu gelse de başlarda, hem mesleki açıdan hem de sosyal açıdan çok güzel bir iki ay geçirdim AirTies’da. İki aylık bu süre zarfında bir projem vardı. Projemin konusu, Air2210, Air2310 ve Air2410 USB adaptör driverlarını aynı CD içinde birleştirmekti. InstallShiled üzerinde InstallScript diliyle yazdım programı. İlk haftalarda sürekli araştırma yaptım bu  konuda ve öğrendiklerimi blogumda sizlerle paylaştım. Ve dün itibariyle departmanıma (PC Applications) yapmış olduğum sunumla birlikte projeyi tamamladığımı belirttim.

Bundan sonra da öğrendiklerimi paylaşmaya devam edeceğim burdan.

Hazal Çıplak

InstallScript (4)

Fonksiyonlar (İşleyiciler)

Programlamada fonksiyonların önemini bilmeyen yoktur. Fonksiyonlar belirli bir görevi gerçekleştirmek için yazılan kod bütünüdür. InstallScripte de fonksiyonlar sadece tanımlanma biçimi ve çağırılması bakımından diğer dillerden ayrılır. Her fonksiyon aşağıdaki özelliklere sahiptir.

  • Fonksiyonlar adlandırılır. Her fonksiyonun kendine özgü bir adı olmalıdır. Fonksiyonu adıyla çağırdığımızda, hangi talimatların yürütüleceğini bilmeli ve tutarlı olduklarından emin olmalıyız. Ayrıca bir fonksiyonu diğer bir fonksiyon içinde çağırabiliriz.
  • Fonksiyonlar Programın diğer kısımlarından bağımsız olarak çalışabilir.
  • Bir fonksiyon belirli bir görevi gerçekleştirir.
  • Fonksiyonların geri dönüş değeri bir script olabilir.

InstallScript bazı hazır fonksiyonlar içerir. Bu fonksiyonlara, InstallShield’de bulunan Built-In Functions by Category bölümüne bakıp ihtiyacınıza uygun kategoriye tıklayarak ulaşabilirsiniz. Burada fonksiyonlar alfabetik olarak dizilmiş halde bulunur. Fonksiyon isimlerine
tıklayarak onlarla ilgili ayrıntılı bilgiyi görebilirsiniz.

InstallScript’e hazır fonksiyonlar bulunduğu gibi sizde istediğiniz görevi gerçekleştiren fonksiyonlar oluşturabilirsiniz. Fonksiyonu tanımlamak
için:

/* Fonksiyon tanımlarken, fonksiyonun adının önüne prototype gelir. Fonksiyonu adı genellikle yaptığı işe göre belirlenir. Türkçe karakter kullanılmaz.*/
prototype FonksiyonIsmi();
/* Parametre alanfonksiyonların tanımlanması aldığı parametrenin tipine göre:*/
prototype FonksiyonIsmi(STRING,NUMBER,...);
/* Değer döndüren fonksiyonun tanımlanması geri dönüş değerinin tipine göre: */
prototype STRING FonksiyonIsmi();
/* Fonksiyonun içeriğinin yazılması şöyledir: */
function FonksiyonIsmi()
      STRING    szString,
                szString2;
      NUMBER    nNumber;
begin
       //yaptığı iş
end;
/* Fonksiyonun çağrılması: */
FonksiyonIsmi();
/*geri dönüş değeri olan fonksiyonlarda.*/
deger=FonksiyonIsmi();

 

Hazal Çıplak