<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CETURK &#187; oracle dersleri</title>
	<atom:link href="http://www.ceturk.com/etiket/oracle-dersleri/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ceturk.com</link>
	<description>Türkiye&#039;nin Bilişim Platformu</description>
	<lastBuildDate>Sun, 05 Sep 2010 21:36:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ORACLE  VERİTABANINA KUŞBAKIŞI-ders-6</title>
		<link>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-6.html</link>
		<comments>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-6.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 19:23:06 +0000</pubDate>
		<dc:creator>hayrullah ayan</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Veri Tabanı]]></category>
		<category><![CDATA[Hayrullah Ayan]]></category>
		<category><![CDATA[oracle dersleri]]></category>
		<category><![CDATA[oracle veri tipleri]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=5292</guid>
		<description><![CDATA[SQL( STRUCTURED QUERY LANGUAGE )
 Açılımı “Structured Query Language” yani “Yapısal Sorgulama Dili” olan SQL, veritabanı işlemleri ile ilgili komutlardan oluşan bir programlama dilidir. Burada veri tabanı işlemleri denilenler veritabanının kendisini oluşturmaktan, tablo, indeks, kullanıcı oluşturmak gibi veri tanımlama dili komutlarına ve kayıt ekleme, silme, düzeltme gibi veri işleme dili komutlarına kadar uzanır. Buradaki yapısal [...]]]></description>
			<content:encoded><![CDATA[<h1>SQL( STRUCTURED QUERY LANGUAGE )</h1>
<p><strong> </strong>Açılımı<strong> “</strong>Structured Query Language” yani “Yapısal Sorgulama Dili” olan SQL, veritabanı işlemleri ile ilgili komutlardan oluşan bir programlama dilidir. Burada veri tabanı işlemleri denilenler veritabanının kendisini oluşturmaktan, tablo, indeks, kullanıcı oluşturmak gibi veri tanımlama dili komutlarına ve kayıt ekleme, silme, düzeltme gibi veri işleme dili komutlarına kadar uzanır. Buradaki yapısal sözcüğü Pascal, C ve benzeri dillerdeki fonsiyon ve prosedür oluşturarak bir program yazmaktan biraz farklıdır. Yani kullanıcı SQL kullanırken fonksiyon ve prosedür yazmaz. SQL tarafından tanımlı komutları gerekli parametreleri vererek bir komut modu uygulamasındaymış gibi çalışır. Yine SQL kullanımında şartlı ifadeler ve dallanmalar yoktur. Yani kullanıcı Pascal, C vb. dillerdeki İf, Case gibi ifadeler kullanmaz. SQL’in akış kontrolü yapabilen bir modeli ISO/IEC tarafından kabul edilmiştir, fakat yaygın olarak kullanılmamaktadır. <span id="more-5292"></span>Oracle’ın geliştirdiği PL/SQL(Programming Language/SQL) işte bu prosedür, fonksiyon ve if,case,for..next gibi programlama için gereken işlemleri kullanmayı olanaklı kılar. Fakat PL/SQL sadece içerisinde SQL komutları kullanılabilen bir dildir. Yani SQL’in yapısını değiştirmemiştir. Komut modunda yazdığınız bir SQL cümlesini alıp PL/SQL blokları arasına yazabilirsiniz. Oracle sirketi geliştirdiği tüm uygulamalarda SQL kullanmayı esas alır. Kullanıcının Oracle ürünlerini kullanarak yaptığı tüm işlemlerin arkasında SQL komutları çalıştırılır. SQL’in veritabanı işlemleri için kullanılan komutları 5 kategoride toplanabilir:</p>
<ul>
<li>Veri sorgulama komutları</li>
<li>Tabloya veri ekleme,değiştirme ve silme      komutları</li>
<li>Veritabanı nesneleri oluşturma,değiştirme ve      silme komutları</li>
<li>Veritabanına ve veritabanı nesnelerine erişimi      kontrol etme komutları</li>
<li>Veritabanının tutarlılığını ve bütünlüğünü      koruma komutları</li>
</ul>
<p><strong>SQL’in Tarihi :</strong></p>
<p><strong> </strong>Dr. E.F. Codd ‘un “Communications of  The ACM(Association  of Computer Machinery)” adlı dergide 1970 Haziranında yayınladığı “A Reletional Model of Data for Large Shared Data Banks”(Büyük ve Paylaşımlı Veri Bankaları İçin İlişkisel Model) adlı makale bugün ilişkisel veri tabanı yönetim sistemleri(RDBMS) için kabul edilen model olmuştur. IBM şirketi Dr.Codd ‘un bu modelini kullanarak “Structured English Query Language (&#8220;SEQUEL&#8221;)” denilen bir dil geliştirmiştir. 1979 yılında o zamanki adı “Relational Software”  olan Oracle şirketi ticari olarak ilk defa SQL kullanmaya başlamıştır. Bugün SQL, ilişkisel veritabanı yönetim sistemlerinin  standart dili olarak kabul edilmektedir.</p>
<p><strong>Oracle’da Kullanılan Veri Tipleri:</strong></p>
<p><strong>CHAR(sayı): </strong>Sabit uzunluktaki alfasayısal verilerin tutulabildiği alanlar için kullanılır. Oracle 7 ve daha önceki sürümler için bu alanın uzunluğu en fazla 255 karakter olabilir. Oracle 8 ve sonrasında 2000 karakter uzunluğundadır. Eğer, sayı ile ifade edilen numaradan daha kısa uzunlukta veriler girilirse Oracle kaydın sonuna boşluk ekleyerek sabit uzunluğa kadar getirir. Örnek char(20).</p>
<p><strong>VARCHAR2(sayı): </strong>Değişken uzunluklu alfasayısal verilerin tutulduğu alanlar için kullanılır. Oracle 7 ve önceki sürümlerinde 2000 karakter, Oracle 8 ve sonraki sürümlerinde 4000 karakter uzunluğunda bilgi girilebilir. Örnek varchar2(30).</p>
<p><strong>NUMBER(n,p): </strong>Tamsayı ve Gerçel sayılar için kullanılan sayısal veri tipidir.Tam kısım en fazla 38 basamak olabilir. Ondalık kısmın basamak sayısı da –84 ile 127 arasında değişmektedir. Number veri tipinden türetilmiş int[eger], dec[imal], smallint ve real veri tipleri de kullanılabilmektedir.</p>
<p><strong>DATE: </strong>Tarih tutan alanlar için kullanılır. Bu tip alanlarda, tarih bilgileri ve saat bilgileri tutulabilir. Tarih formatları Oracle yüklerken seçtiğiniz dile göre değişir. Amerikan standartı için ‘DD-MON-YY’ dir. Yani bir tarih ’03-MAY-01’ şeklinde görünür. NLS_DATE_FORMAT parametresi ile tarih formatı değiştirilebilir. Tarihsel alanlar üzerinde aritmetiksel işlemler yapılabilir. Sistem tarihi SYSDATE fonksiyonu kullanılarak öğrenilebilir. Sayısal veya karakter olarak tanımlı bir alandaki veriler TO_DATE fonksiyonu ile tarih tipine çevrilebilir.</p>
<p><strong>LONG: </strong>2 GB ‘a kadar bilgi tutabilen karakter alanlar için kullanılır. Bir tabloda bu tipten ancak bir adet alan tanımlanabilir. Long veri tipine sahip alanlar için index oluşturulamaz.</p>
<p><strong>Not:</strong> Oracle’da boolean veri tipi yoktur. Bunun için char(1) ya da number(1) şeklinde tanımlama yapılıp kullanılabilir.</p>
<p><strong>Not: </strong>Bir tablonun alanları kendi veri tipine uygun değerler alabildiği gibi bir de NULL değer alabilirler. NULL değeri sayısal olarak 0’dan ve karakter olarak ta boş karakterden(‘ ‘) faklıdır.</p>
<p>SQL bölümünün bundan sonraki kısmında SQL komutları örnek tablolar üzerinde anlatılacaktır. Oracle veritabanı ilk yüklendiğinde bir “SCOTT” adlı kullanıcı oluşturulur ve bu kullanıcıya ait demo tablolar da oluşturulur. Bu kullanıcı ve tabloları tamamen deneme amaçlıdır. Biz de raporumuzda bu kullanıcının tablolarını Türkçe’ye çevirip kullanacağız. Rapora ek olarak verilen disketteki demobld.sql dosyası bu tabloları oluşturmak için gereken komutları içermektedir. Disketteki bu dosya SQL*Plus komut satırından çalıştırılmalıdır. Tabi ki bu işlemleri yapabilmek için Oracle 8i veritabanı önceden yüklenmiş olmalıdır. Aşağıda kullandığımız komutları bu tablolar üzerinde deneyebilirsiniz.</p>
<p>Bu amaçla öncelikle tablolarımız hakkında bilgiler verelim. Oluşturduğumuz tablolar bir iş yerindeki işçi kayıtlarını, bolum adlarını tutmak için kullanılan tablolardır. Birinci tablo “isci” tablosudur. Bu tablo <strong>iscino</strong>:number(4), <strong>isciadi</strong>:varchar2(10), <strong>isi</strong>:varchar2(9), <strong>muduru</strong>:number(4), <strong>isbastar</strong>:date, <strong>ucret:</strong>number(7,2), <strong>bolum:</strong>number(2) alanlarından oluşmaktadır. Tablo da isçilerin numarası, adı, görevi, işe başlama tarihi, aldığı ücret ve işçinin müdür kodu yer almaktadır.</p>
<p>İkinci tablo “bolum” tablosudur. “Bölüm” tablosu <strong>bolumno</strong>:number(2), <strong>bolumadi</strong>: varchar2(14), <strong>yer</strong>: varchar2(13) alanlarından oluşmaktadır. Bu tabloda işçilerin çalıştıkları bölüm kodları,bölüm adları ve bölümün bulunduğu il adı yer almaktadır.</p>
<p>Üçüncü tablo “ucretoran” tablosudur. Bu tabloda <strong>derece</strong>:number(5), <strong>endusuc</strong>:number(5), <strong>enyukuc</strong>:number(5) alanları yer almaktadır. Tablo işçilerin alabilecekleri kıdem numaralarını ve bu numara için en düşük ve en yüksek ücret miktarlarını göstermektedir.</p>
<p><strong>Sorgular</strong></p>
<p><strong> </strong>Veri tabanı içerisindeki tablolardan veri seçip listeleme ,kayıt ekleme, silme, değiştirme ile ilgili komutları bu başlık altında anlatacağız. Burada SQL ile ilgili olarak en çok kullanılan komut şekilleri anlatılmaya çalışılacaktır.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Bir tablonun yapısını görmek için <strong>DESC</strong>[IRIBE] komutu kullanılır.</p>
<p>Bir tablodan istenilen özellikteki verileri veri seçip listeleme için “SELECT” komutu kullanılır. Komutun yapısı:</p>
<pre class="brush:csharp">
SELECT [ DISTINCT | ALL ] &lt;sütun(lar)&gt; FROM &lt;tablo adı&gt;

[ WHERE &lt;şart&gt; ]

[ GROUP BY &lt;sütunlar&gt;]

[ HAVING &lt; grup kısıtlaması&gt;]

[ ORDER BY &lt;sütun(lar) [ ASC | DESC ]&gt; ]
</pre>
<p><strong> </strong></p>
<p>İşi ‘tezgahtar’ olan ve aldığı maaş 900’den büyük olan işçi kayıtların listesi.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong>İşçi tablosunda adı ‘m’ ile başlayan kayıtların listesi.</p>
<p>Burada “_” alt tire işareti tek bir karaktere ve ‘%’ işareti birden fazla karaktere karşılık gelir. Birinci sorguda iki alt tire işareti kullanıldığında 3 adet kayıt listelenmiş, ikinci sorguda alt tire işareti üçe çıkarıldığında iki kayıt listelenmiştir. Çünkü ikinci sorguda istenen kayıtların isciadi alanının uzunluğu en az 5 karaktere çıkarılmış oluyor.</p>
<p><strong> </strong>İşçi tablosundan numarası ‘79’ ile başlayan kayıtların isciadi alanına göre tersten sıralanmış listesi. Burada to_char fonksiyonu iscino sayısal alanını karaktere çevirmek ve substr fonksiyonu da soldan ilk iki karakterini alıp karşılaştırma yapabilmek için kullanılmıştır.<strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Eğer tablodan listelenecek kaydın bir alanının içeriği tam olarak bilinmiyorsa ilgili kelimenin yakın telaffuzu yazılarak “soundex” fonksiyonu ile listeleme yapılabilir.</p>
<p><strong> </strong></p>
<p><strong> </strong>Months_between(tarih1,tarih2) fonksiyonu iki tarih arasındaki farkı ay olarak verir. Aşağıdaki sorgu komutu bunu gerçekleştirmektedir. Burada işleme sokarak elde ettiğimiz bir alana isim verme(bu örnekte FARK) işlemi de görülmektedir. Bu isim verme işlemi her alan için virgülden önce yapılabilir.</p>
<p><strong> </strong></p>
<p>COUNT(* | [ DISTINCT | ALL ] açıklama) fonksiyonu sorgu sonucu dönen kayıt miktarını göstermektedir. Eğer parametre olarak “*” girilirse tablodaki tüm kayıt sayısını verir. Parametre olarak bir sütun adı verilirse, o sütundaki içeriği NULL olmayan tüm kayıt sayısını verir.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>“GROUP BY” yardımcı sözcüğü bir alana göre kayıtları guruplamak için kullanılır. Aşağıdaki örnekte isci tablosu içerisinde bir bölümde çalışan toplam kişi sayısı bulunuyor ve listelemede bolum alanı içerisindeki grup sayısı kadar kayıt yer alıyor. Yani bizim isci tablosunda 10,20,30 olmak üzere üç farklı bölüm numarası olduğundan 3 kayıt listeleniyor. Bölüm adı ve kodlarını tutan bölüm tablosunda toplam 4 adet kayıt olduğu, halde 40 nolu bölüm koduna sahip hiç bir işçi için “isci” tablosuna kayıt yapılmamış olduğu buradan anlaşılabilir.</p>
<p><strong> </strong></p>
<p>“HAVING” yardımcı sözcüğü “GROUP BY” yardımcı sözcüğü ile gruplanan kayıtlar üzerinde kısıtlama yapma işine yarar. Aşağıdaki örnekte isci tablosunda ikiden fazla kişi tarafından yapılan işlerin listesini veren komut gösterilmiştir.</p>
<p><strong> </strong></p>
<p>Bir işçinin adının ve çalıştığı yerin isminin(kodunun değil) listelenmesini istiyorsak, o işçinin çalıştığı yer kodunun adını bolum tablosundan getirmeliyiz. Bu tip işlemler “tablo birleştirme” işlemleri olarak adlandırılır. Verdiğimiz bu örneğe “eşit birleştirme” denir. Eşit birleştirme işlemlerinde bir tablodaki değere, diğer tabloda da mutlaka bir değer karşılık gelir ve “=” operatörü eşit birleştirme işlemlerinde kullanılır.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Bu örnek her bir bölümde belli bir işi yapanların ortalama maaş miktarlarının listesini verir. Örneğin satış bölümünde satış görevlisi olanların aldıkları maaşların ortalaması. Buna göre satış bölümünde 3 kişi varmış ve bunların maaşlarının ortalaması 1450.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p>Birleştirme işlemlerinde “eşit olmayan birleştirme” de vardır. Buna göre bir tabloda ki bir değer diğer tablodaki iki değer arasında yer almaktadır. Örneğin aşağıdaki örnek isci tablosundaki işçilerin ücretlerini  ucretoran tablosundaki en düşük ve en yüksek ücret alanları ile karşılaştırılıp, bu işçilerin kıdemlerini bulmayı sağlıyor. Dikkat edilirse “from” sözcüğünden sonra yazılan tablo adları için bir boşluk bıraktıktan sonra kısa bir isim verilebiliyor. Böylece uzun tablo adını sürekli yazmaktansa o tablo adı için “alias” olarak adlandırılan kısa isim kullanılabiliyor.</p>
<p>Birleştirme işlemleri yapılırken karşımıza şöyle bir problem çıkmaktadır. Birleştirme yapılan tablolardan ikinci tabloda birinci tablodaki her kaydın karşılığı olmazsa, karşılığı olmayan kayıtlar sorgu sonucunda sadece olmayan kayıtlar değil bilakis hiç kayıt gelmez. Bunun için “dış birleştirme” kullanılır. Dış birleştirme işlemi, kayıtları eksik olan tablonun şart tarafına “(+)” işareti konularak yapılır. Örneğin isci tablomuzda çalıştığı bölüm kodu 40 olan hiçbir kayıt yoktu, fakat bolum tablosunda 40 kodlu bir bölüm vardı. Bu tablolardan tüm bölümlerde çalışan işçilerin listesini veren komutun şöyle yazıldığını düşünelim:</p>
<p>Dikkat edilirse 40 nolu bölümden işçi tablosunda hiç kimse olmadığı için böyle bir bölümün var olduğu bu sorgudan anlaşılamıyor. Bu komut şöyle yazılsaydı daha doğru olacaktı:</p>
<p><strong> </strong>Bazen bir tablonun içindeki alanlar birbirleri ile ilişkili olabilir. Örneğin isci tablosunda bir işçinin müdürünün kodu tutulmakta ve bu müdürün kaydı da ayrı bir kayıt olarak yine isci tablosunda yer almakta. Burada “kendine birleştirme”(self-join) kullanılır. Aşağıda bununla ilgili bir örnek verilmiştir.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Birkaç tablo üzerinde yapılan sorgular üzerinde birleştirme ya da fark alma işlemleri yapılabilir. Bunun için UNION, INTERSECTION ve MINUS operatörleri kullanılır.  Aşağıdaki örnekte isci tablosundan yapılan iki sorgu UNION operatörü ile birleştirilmiştir.</p>
<p><strong>SQL/19</strong></p>
<p>Aşağıdaki sorgu ile çalıştığı bölüm kodu 30 olan ve müdür olmayan işçiler listelenmiştir.</p>
<p><strong> </strong>Aşağıdaki sorgu ile işi “satış gör” olan ve müdür kodu 7698 olan kayıtlar listelenmiştir.</p>
<p><strong> </strong></p>
<p>SQL*Plus kullanırken kullanıcıdan alınan bir bilgiye uyacak şekilde sorgulamalar yapılabilir.Örneğin aşağıda kullanıcının girdiği işçi numarasına ait bilgileri listeleyen bir sorgu yer almaktadır:</p>
<p><strong> </strong></p>
<p><strong> </strong>SQL’de bir sorgunun çıktısı diğer bir sorgu için girdi olarak kullanılabilir. Bunu göstermek için isci tablosu içerisinde maaşı, tüm kayıtların ortalama maaşından az olan kayıtların, listesini veren bir sorgu gösterilmiştir.</p>
<p><strong> </strong>SQL’de bir tabloya yeni bir kayıt eklemek için “INSERT INTO” komutu kullanılır. Aşağıda isci tablosuna yeni bir kayıt ekleme komutu gösterilmiştir.</p>
<pre class="brush:csharp">
INSERT INTO tablo-adı (sütun1,sütun2,.......) VALUES (değer1,değer2,....)
</pre>
<p><strong> </strong></p>
<p>SQL’de bir tablodan kayıt silmek için ‘DELETE FROM’ komutu kullanılır.</p>
<p>DELETE FROM tablo-adı WHERE şart</p>
<p><strong> </strong>SQL’de bir tablodaki bir kayıtta değişiklik yapma komutu ‘UPDATE’ tir.                UPDATE tablo-adı SET sütun-adı=değer WHERE şart</p>
<p>Hayrullah AYAN</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORACLE  VERİTABANINA KUŞBAKIŞI-ders-4</title>
		<link>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-4.html</link>
		<comments>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-4.html#comments</comments>
		<pubDate>Tue, 19 Jan 2010 14:30:51 +0000</pubDate>
		<dc:creator>hayrullah ayan</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Veri Tabanı]]></category>
		<category><![CDATA[Hayrullah Ayan]]></category>
		<category><![CDATA[oracle dersleri]]></category>
		<category><![CDATA[oracle tablo yapıları]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=5288</guid>
		<description><![CDATA[ORACLE VERİTABANI NESNELERİYLE İLGİLİ KOMUTLAR
Bu bolumde artık veritabanı nesneleri oluşturup yönetiyor olacagız.
CREATE TABLE
Tablo oluşturma komutunu anlatırken bir örnekle başlayalım.
CREATE table tbl_ogr

(OgrNum   NUMBER(11) NOT NULL,

Ad            VARCHAR2(15),

Soyad       VARCHAR2(15),

Dogyer      NUMBER(2),

CONSTRAINT cst_OgrNum PRIMARY KEY(OgrNum)

CONSTRAINT cst_dogyer FOREING key(dogyer) REFERENCES il(ilkod))
Bu komut “tbl_ogr” adında bir tablo oluşturuyor. Tablonun dört alanı var. Bunlardan biri özel anahtar(Primary Key) olarak tanımlanmış. Bu [...]]]></description>
			<content:encoded><![CDATA[<h3>ORACLE VERİTABANI NESNELERİYLE İLGİLİ KOMUTLAR</h3>
<p>Bu bolumde artık veritabanı nesneleri oluşturup yönetiyor olacagız.</p>
<h4>CREATE TABLE</h4>
<p>Tablo oluşturma komutunu anlatırken bir örnekle başlayalım.<span id="more-5288"></span></p>
<pre class="brush:csharp">CREATE table tbl_ogr

(OgrNum   NUMBER(11) NOT NULL,

Ad            VARCHAR2(15),

Soyad       VARCHAR2(15),

Dogyer      NUMBER(2),

CONSTRAINT cst_OgrNum PRIMARY KEY(OgrNum)

CONSTRAINT cst_dogyer FOREING key(dogyer) REFERENCES il(ilkod))</pre>
<p>Bu komut “tbl_ogr” adında bir tablo oluşturuyor. Tablonun dört alanı var. Bunlardan biri özel anahtar(Primary Key) olarak tanımlanmış. Bu alanın değeri boş olamaz ve tabloda aynı iki değer bulunamaz.. Bir tablo ile başka bir tablo arasında ilişki kurulacaksa bu ana tabloda PRIMARY KEY tanımıyla, diğer tabloda FOREIGN KEY tanımıyla yapılır. Yani doğum yeri alanı için buradaki tablomuz ana tablo değil. Çünkü aynı yerde doğmuş kişilerin kaydı tablomuzda olabilir. Böylece aynı il kodu birden fazla kayıtta yer alabilir. İlişki kurulan diğer tablonun adını yukarıdan çıkarabiliriz. Bu tablo “il” isminde. Her il bu tabloda kayıtlı ve her birinin bir kodu var. Bu tabloda bir ilin kaydı iki sütunda yer alamaz. Bu yüzden “ilkodu” alanı “il” tablosu için PRIMARY KEY olarak tanımlanmış.</p>
<p>PRIMARY KEY, NOT NULL gibi bildirimler kısıtlamalar olarak tanımlanır. Bir tabloda farklı şekilde kısıtlamalar yapılabilir. Kısıtlama için kullanılan bildirimler 5 adettir.</p>
<ul>
<li>NOT NULL : Bu kısıtlamanın konulduğu bir alanın      mutlaka bir değeri olmak zorundadır.</li>
<li>UNIQUE : Bu kısıtlamanın konulduğu bir alan bir      değerden sadece bir adet içerebilir. Bu kısıtlamaya sahip alan NOT NULL      ile tanımlanmadıysa NULL değer alabilir.</li>
<li>PRIMARY : Bu kısıtlama bu alanın özel anahtar      olmasını sağlar. Bu alan boş geçilemez ve yine tablo içerisinde bir değer      iki kayıtta bulunamaz.</li>
<li>FOREIGN KEY : Bu kısıtlama başka bir tablonun      PRIMARY KEY olan alanıyla ilişki kurmak için gerekir.</li>
<li>CHECK : Bu kısıtlama ile birlikte bir şart      kullanılır. Tabloya kayıt girilirken değerlerin bu şarta uyması beklenir.</li>
</ul>
<h4>ALTER TABLE</h4>
<p>Daha önceden oluşturulmuş bir tablonun yapısını değiştirmek için ALTER TABLE komutu kullanılır.</p>
<pre class="brush:csharp">ALTER TABLE tablo_adı

ADD | MODIFY | DROP (&lt;sütun ismi&gt; veri tipi &lt;sütun kısıtlaması&gt;)

ENABLE ifade1

DISABLE ifade2</pre>
<p>ALTER komutuyla tablolara yeni bir alan ve kısıtlama eklenebilir, var olan alan ve kısıtlamaların durumu değiştirilebilir veya tablodan ksıtlamalar düşürülebilir. Fakat ALTER komutuyla var olan sütunlar düşürülemez. Bir alanın değeri büyültülebilir, fakat küçültülemez.</p>
<pre class="brush:csharp">ALTER TABLE tbl_ogr

ADD CONSTRAINT cst_Bolum

FOREIGN KEY(Bolum)

REFERENCES usr_gazi.tbl_bol(BolKod);</pre>
<p>Yukarıdaki örnekte tbl_ogr adlı tablonun yapısı değiştiriliyor. Bir başka kullanıcının bir tablosu ile ilişki kuruluyor.</p>
<pre class="brush:csharp">ALTER TABLE tbl_ders

MODIFY dersad varchar2(40);</pre>
<p>Bu örnekte de tbl_ders tablosunun bir alanının uzunluğu değiştiriliyor.</p>
<h4>DROP TABLE</h4>
<p>Daha önceden oluşturulmuş bir tablonun düşürülmesi için kullanılan komuttur. Kullanımı:</p>
<pre class="brush:csharp">DROP TABLE &lt;tablo_ismi&gt; [CASCADE CONSTRAINTS]</pre>
<p>Köşeli parantez içerisindeki tanım kullanılırsa master-detay ilişkili tablolarda master tablo düşürülünce detay tabloların da otomatik olarak düşürülmesi sağlanır. Eğer bu seçenek kullanılmazsa diğer tablolarla ilişkisi bulunan bir tablo silinemez. Ancak bu ilişkiler kaldırıldıktan sonra tablo silinebilir.</p>
<p>DROP TABLE tbl_ogr CASCADE CONSTRAINT</p>
<h4>CREATE VIEW</h4>
<p>Görüntü oluşturmak için bir SELECT cümlesi kullanmak gerekir. Bir görüntü bir ya da daha fazla tablodan oluşturulabileceği gibi, bir başka görüntüden de oluşturulabilir.Aşağıdaki örnekte üç farklı kullanıcnın aynı yapıdaki tabloları birleştirilip bir görüntü oluşturuluyor.</p>
<pre class="brush:csharp">CREATE VIEW vi_ogr

AS SELECT * from usr_esef.tbl_ogr
<pre>UNION ALL</pre>
<p>SELECT * FROM usr_tef.tbl_ogr</p>
<p>UNION ALL</p>
<p>SELECT * FROM usr_gef.tbl_ogr;</pre>
<h4>CREATE TABLESPACE</h4>
<p>Tablo uzayı kullanıcılara ait olan nesnelerin veritabanında mantıksal olarak tutulduğu yere denmektedir. Bir tablo uzayı oluştururken, bu tablo uzayının verilerinin hangi veri dosyasına konulacağı ve bu dosyanın dizini ile büyüklüğü bildirilmelidir.</p>
<pre class="brush:csharp">CREATE TABLESPACE tbs_esef

DATAFILE 'c:\orasql\tbs_esef.dat' SIZE 10M
<pre>DEFAULT STORAGE (INITIAL 10K NEXT 50K</pre>
<p>MINEXTENTS 1 MAXEXTENTS 999)</p>
<p>ONLINE;</pre>
<p>SIZE bildirisi veri dosyasının diskte kaplayacağı yeri belirler. Burada 10M, 5K gibi değerler girilebilir. INITIAL bildirisi tablo uzayı oluşturulduğunda, ik alacağı genişleme’nin büyüklüğünü belirler. Next tablo uzayı oluşturulduktan sonra alacağı genişlemelerin büyüklüğünü belirler. MINEXTENTS tablo uzayı oluşturulduğunda ilk olarak alacağı minimum genişleme sayısının belirtildiği bölümdür. MAXEXTENTS bir tablo uzayının ilk olarak aldığı genişleme de dahil olmak üzere alabileceği maksimum genişleme sayısının belirtildiği bölümdür.</p>
<h4>CREATE USER</h4>
<p><strong> </strong>Kullanıcı veritabanı nesnelerinin sahibidir.  Kullanıcılar, nesneleri oluşturur, kullanır ve silerler. Oracle veritabanı ilk kurulduğunda standart olarak üç kullanıcı tanımlanır. Bunlardan bir SYS kullanıcısıdır. SYS kullanıcısı veri sözlüğünün sahibi olan kullanıcıdır. Tüm nesneleri oluşturma hakkına sahiptir ve diğer bütün kullanıcların nesnelerine erişebilir. SYS kullanıcısının ilk şifresi “change_on_install” olarak belirlenmiştir. İkinci kullanıcı SYSTEM kullanıcısıdır. SYSTEM kullanıcısı veri sözlüğünü kullanma hakkına sahiptir. Önemli nesneleri oluşturma hakkına da sahiptir. İlk şifresi “manager” olarak belirlenmiştir. Diğer kullanıcıların nesnelerine erişme hakkına da sahiptir. Üçüncü kullanıcı SCOTT kullanıcısıdır. SCOTT kullanıcısı veritabanına başlangıçta yüklenen demo tabloların sahibidir. Bu kullanıcının nesneleri kullanılarak SQL denemeleri yapılabilir.</p>
<p>“CREATE USER” komutunu SYS ve SYSTEM kullanıcıları standart olarak kullanabilir. Bu hak diğer kullanıcılara da verilebilir. Her kullanıcının nesnelerini tutmak için bir tablo uzayı oluşturmak sistemin performansı açısından gerklidir. Kullanıcı oluşturulurken bu tablo uzayı o kullanıcıya atanır.</p>
<pre class="brush:csharp">CREATE USER usr_esef

IDENTIFIED BY esef

DEFAULT TABLESPACE tbs_esef

QUOTA UNLIMITED ON tbs_esef</pre>
<p>Yukarıdaki örnekte usr_esef adında bir kullanıcı oluşturuluyor. Kullanıcının şifresi IDENTIFIED BY ile “esef” olarak bildiriliyor. Kullanıcının kendi nesnelerini oluşturacağı tablo uzayı için ise “tbs_esef” tablo uzayı bildiriliyor. Kullanıcının bu tablo uzayındaki tüm alanı kullanabileceği QUOTA UNLIMITED ile belirleniyor.</p>
<h4>CREATE ROLE</h4>
<p><strong> </strong>Rol veritabanındaki hakların toplanmış haline denir. Veritabanı yöneticisi rolleri kullanarak sistemin güvenliğini daha kolay sağlayabilir. Roller Oracle tarafından önceden tanımlanmış roller ve kullanıcı tanımlı roller olarak iki şekilde düşünülebilir. Oracle tarafından önceden tanımlanan roller beş tanedir:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="173" valign="top">
<p align="center">Rol</p>
</td>
<td width="390" valign="top">Atanmış Haklar</td>
</tr>
<tr>
<td width="173" valign="top">CONNECT</td>
<td width="390" valign="top">ALTER SESSION,CREATE CLUSTER, CREATE DATABASE LINK, CREATE   SEQUENCE, CREATE SESION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW</td>
</tr>
<tr>
<td width="173" valign="top">RESOURCE</td>
<td width="390" valign="top">CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE   TABLE, CREATE TRIGGER</td>
</tr>
<tr>
<td width="173" valign="top">DBA</td>
<td width="390" valign="top">“WITH ADMIN OPTION” ile birlikte bütün sistem hakları</td>
</tr>
<tr>
<td width="173" valign="top">EXP_FULL_DATABASE</td>
<td width="390" valign="top">SELECT ANY TABLE, BACKUP ANY TABLE, SYS.INCVID, SYS.INCFIL   ve SYS.INCEXP tablolarına INSERT, UPDATE veDELETE hakkı</td>
</tr>
<tr>
<td width="173" valign="top">IMP_FULL_DATABASE</td>
<td width="390" valign="top">BECOME USER, WRITEDOWN</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p><strong> </strong>CREATE ROLE tabloma_bak</p>
<pre>            GRANT SELECT ON tbl_ogr TO tabloma_bak</pre>
<p>Yukarıdaki örnekte tabloma_bak adında bir rol oluşturuluyor. Daha sonra bu role tbl_ogr tablosu üzerinde listeleme işlemi yapma hakkı veriliyor. Böylece bu rolün atandığı kullanıcı tbl_ogr tablosu üzerinde “SELECT” komutunu çalıştırabilecek.</p>
<h4>CREATE INDEX</h4>
<p><strong> </strong>Daha öncede bahsedildiği gibi indeks tablodaki kayıtlara daha hızlı erişim için kullanılan nesnelerdir. Bir indeks oluşturabilmek için “CREATE ANY INDEX” sistem hakkına sahip olmak gerekir. İndeks bir tablonun bir alanı üzerinde tanımlanabileceği gibi birden fazla alan üzerinde de tanımlanabilir.</p>
<p>CREATE INDEX indeks1 ON tbl_ogr(ogrnum,ad)</p>
<h4>CREATE SEQUENCE</h4>
<p>Sıra, sıralı olarak artan alanlar için veritabanında tutulan nesnedir. Örneğin birden başlayan ve birer birer artan bir sıra yaratmak için:</p>
<p>CREATE SEQUENCE sira1 START WITH 1 INCREMENT BY 1</p>
<h4>CREATE ROLLBACK SEGMENT</h4>
<p>Geri alma parçaları SELECT, INSERT, DELETE, UPDATE gibi komutlarla yapılan işlemlerin gerektiğinde geri alınabilmesi için veritabanında ayrılan alanlara denir. “tbsp_esef” tablo uzayını kullanan, kayıt parametrelerinden ilk parçanın büyüklüğü 10M, sonraki genişlemelerin büyüklüğü 1M, minimum genişleme sayısı 2, maksimum genişleme sayısı 121 ve ortalama değeri 30M olan ve ismi “rol_seg” olan bir geri alma parçası şöyle oluşturulabilir:</p>
<pre class="brush:csharp">CREATE ROLLBACK SEGMENT rol_seg

TABLESPCE “tbsp_esef”

STORAGE(         INITIAL           10M

NEXT                1M

MINEXTENTS    2

MAXEXTENTS   121

OPTIMAL          30M)</pre>
<h4>GRANT</h4>
<p><strong> </strong>Sistem ya da nesne haklarının kullanıcılara veya rollere atanması için kullanılan komuttur.</p>
<pre class="brush:csharp">GRANT DELETE ON tbl_ogr TO usr_gef</pre>
<p>Yukarıdaki örnekte usr_gef kullanıcısına tbl_ogr tablosunda silme yapma yetkisi verilir.</p>
<h4>REVOKE</h4>
<p><strong> </strong>Sistem ya da nesne haklarının kullanıcılardan veya rollerden geri alınnması için kullanılan komuttur.</p>
<p>REVOKE DELETE ON tbl_ogr FROM usr_gef</p>
<p>Yukarıdaki örnekte usr_gef kullanıcısından tbl_ogr tablosunda silme yapma yetkisi geri alınır.</p>
<p>** Veritabanı nesnelerinin yönetilmesiyle ilgili daha bir çok veri tanımlama dili komutu vardır. Bu komutların diğerleri burada anlatılmayacaktır. Bir nesneyi oluşturmak için “CREATE”, silmek için “DROP”, değiştirmek için “ALTER” komutlarının kullanıldığının bilinmesi diğer komutlar için bir temel teşkil edecektir. Komutlar içerisinde kullanılan parametreler Oracle yardım dokümanlarında ayrıntılı olarak verilmektedir.</p>
<p>Hayrullah AYAN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi-ders-4.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ORACLE  VERİTABANINA KUŞBAKIŞI</title>
		<link>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi.html</link>
		<comments>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi.html#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:32:08 +0000</pubDate>
		<dc:creator>hayrullah ayan</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Veri Tabanı]]></category>
		<category><![CDATA[Hayrullah Ayan]]></category>
		<category><![CDATA[oracle dersleri]]></category>
		<category><![CDATA[oracle rdbms]]></category>
		<category><![CDATA[oracle ürünleri]]></category>
		<category><![CDATA[sql plus]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=5280</guid>
		<description><![CDATA[Bu dersleri Oracle veritabanına kuşbakışı bakmamızı sağlaması adına hazırladım.
 Bir çok arkadaşımızın Oracle ile tanışıklığı başlangıcında ençok problem yaşadığı nokta ingilizcesinin yetersiz olduğu idi.Bu derslerde nerdeyse tamamını türkçeleştirdim, fakat burda biraz basitleştirme  veya komik  ifadeler yer aldı. Örneğin tablespaces = tablo uzayları  ama tablespaces’i tablo uzayları olarak bilmek oracle ile ilerledikçe tablespaces’le karşılasınca bu ifadeyi [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em>Bu dersleri Oracle veritabanına kuşbakışı bakmamızı sağlaması adına hazırladım.</em></strong></p>
<p><strong><em> Bir çok arkadaşımızın Oracle ile tanışıklığı başlangıcında ençok problem yaşadığı nokta ingilizcesinin yetersiz olduğu idi.Bu derslerde nerdeyse tamamını türkçeleştirdim, fakat burda biraz basitleştirme  veya komik  ifadeler yer aldı. Örneğin tablespaces = tablo uzayları  ama tablespaces’i tablo uzayları olarak bilmek oracle ile ilerledikçe tablespaces’le karşılasınca bu ifadeyi tanımama gibi  yeni problemlere yol açacaktı bu yüzden kimi yerlerde isimleri karışık verdim. 9. ve 10. dersleri hepimizin çok dikkat etmesi gereken bir konu olan  SQL Tuning’e ayırdım.  Faydalı oldumsa ne mutlu&#8230;</em></strong></p>
<p>İlişkisel Veritabanı Yönetim Sistemleri (Relational Database Management Systems &#8211; RDBMS) büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Oracle veritabanı da bir ilişkisel veri tabanı yönetim sistemidir.<span id="more-5280"></span></p>
<p>Oracle veritabanının özellikleri şunlardır:</p>
<ul>
<li>Büyük miktarda veri tutabilmekte ve verilerin      depolandığı alanları ayarlama imkanı vermektedir.</li>
<li>Aynı anda çok sayıda kullanıcıya verilerin      bütünlüğünü bozmadan hizmet verebilmektedir. Oracle 11g sürümü ile      birlikte on binlerce kullanıcıya hizmet verebilmektedir.</li>
<li>Günün 24 saati ve haftalar boyu hiç kapatılmadan      çalışabilmektedir.</li>
<li>İşletim sistemi, veri erişim dilleri ve ağ      iletişim protokolleri standartlarıyla uyumludur.</li>
<li>Yetkisiz erişimleri engelleme ve kontrol      edebilme imkanı sağlamaktadır.</li>
<li>Bütünlüğü veritabanı düzeyinde      sağlayabilmektedir, böylece daha az kod yazılmaktadır.</li>
<li>İstemci/Sunucu mimarisinin bütün avantajlarını      kullanabilmektedir.</li>
</ul>
<p>Oracle ile ilk defa karşılaşan kullanıcılar genellikle Delphi, Visual Basic gibi görsel programlama dillerine benzeyen uygulamalarla karşılaşmayı umarlar. Oysa ki yukarıda da belirttiğimiz gibi Oracle bir ilişkisel veritabanı yönetim sistemidir. Yani bir programlama dili değildir. Fakat Oracle tarafından geliştirilen ve Oracle’ın kendi uygulama geliştirme araçları içerisinde kullanılan bir programlama dili (oracle forms)  vardır. Oracle ürünleri genellikle büyük çaplı veri kontrolünü gerektiren uygulamalarda kullanılır. Öncelikle bir ağda Oracle veritabanı sadece sunucu olarak adlandırılan bilgisayara yüklenir. Bu sunucu Oracle’ın desteklediği herhangi bir işletim sistemiyle çalışıyor olabilir. Yani Oracle’ın faklı işletim sistemleri için farklı sürümleri vardır. Bu sunucu bilgisayara kurulan veritabanı üzerinde tablolar, indeksler, eşanlamlar,tablo uzayları ve ihtiyaç duyulan kayıtlı prosedürler oluşturulur. Bunlar kendi diliyle <img src='http://www.ceturk.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  dersin sonraki bölümlerinde anlatılmaktadır. Oracle’ın bu veritabanına erişerek uygulama programı geliştirmeye yarayan diğer ürünleri de istemci bilgisayarlara kurulur. Tabi sunucu bilgisayara da isteğe bağlı olarak bu ürünler kurulabilir. Şimdi Oracle ürünlerini daha ayrıntılı olarak inceleyelim.</p>
<h2>Oracle Ürünleri</h2>
<p>Aşağıda şu an kullanımı en güncel olan değişik Oracle ürünleri tanıtılımıştır.</p>
<h3>Oracle RDBMS</h3>
<p>Oracle ilişkisel veritabanı yönetim sistemi Oracle şirketinin ana ürünüdür. Bu ürünün şu an en yeni sürümü 11g’dir. Biz bu çalışmada  Oracle8i’den itibaren ele alacagız.</p>
<p><strong>Oracle Uygulama Geliştirme Araçları</strong><strong> </strong></p>
<p>Oracle’ın veritabanı uygulamaları geliştirmek için görsel ürünleri bu grupta yer alır. Oracle’ın program geliştirmek için kullanılan bu ürünlerinin eski adı Oracle Power Objects idi. Daha sonra Oracle Developer 2000 ve sonra da Oracle Developer 6 ürünleri geliştirildi. Developer 2000 ve Developer 6 içerisinde Form Builder, Report Builder, Graphics Builder, Procedure Builder ve Schema Builder ürünlerini içerir. Form Builder kullanıcıya sunulacak arayüzlerin geliştirildiği programdır. İşte bu uygulama görsel bir programlama dilinin uygulama geliştirme ortamına benzer. Report Builder ürünü veritabanından elde edilen bilgiler ile raporlar hazırlamaya yarar. Özellikle banka ve kamu kuruluşlarının ihtiyacı olan fatura, evrak gibi belgelerin hazırlanıp, çıktı alınması için geliştirilmiş bir programdır. Procedure Builder sürekli kullanılacak kodların prosedürler halinde oluşturulup, kütüphaneler olarak kaydedilmesi işlemine yarayan bir programdır. Schema Builder ise veritabanı nesnelerinin görsel olarak oluşturulabilmesi için geliştirilmiş bir uygulamadır. Burada tablo, görüntü, eşanlam oluşturma, tablolar arası ilişki kurma,tablo kısıtlamaları oluşturma işlemleri görsel olarak yapılabilir.</p>
<h3>SQL*Plus ve PL/SQL</h3>
<p>SQL*Plus, Oracle veritabanında sorgulama yapmak ve SQL komutlarını çalıştırmak için kullanılan bir araçtır. SQL*Plus’da SQL komutlarının yanısıra PL/SQL komutları da kullanılabilmektedir. Bu çalışmanın diğer bölümlerinde anlatılan SQL komutları SQL*Plus kullanılarak hazırlanmıştır.</p>
<p>PL/SQL (Procedural Language/SQL), yapısal dillere ait özelliklerin standart SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir. PL/SQL Oracle firmasının piyasaya sürdüğü her üründe önemli bir yere sahiptir. Kullanıcılar PL/SQL’i kullanarak programlarına bir çok yeni özellikler katmaktadırlar. Bunlar arasında;</p>
<ul>
<li>PL/SQL tabanlı kaydedilmiş yordamlar(stored      procedures) ve veritabanı tetiklemeleri(triggers) ile önemli iş      kurallarını programlamak</li>
<li>Oracle Developer ürünleri ile güçlü ve kolay      kullanılabilir görsel ortamlarla programları detaylandırmak ve daha rahat      kontrol etmek</li>
<li>Oracle tabanlı uygulamalarda      nesne-tabanlı(object-oriented) tasarımlar yapma Web sayfalarından Oracle      veritabanlarına link yapma<strong> </strong></li>
</ul>
<p>PL/SQL’in belki de en önemli özelliği istemci-sunucu ortamları tasarlama ile ağ üzerinde dağıtık işlemler yapma ve bir çok sorguyu çalıştırma imkanı sunmasıdır. PL/SQL dili Ada dilinden sonra tasarlanmıştır. PL/SQL’de en gelişmiş yordamsal dillerde olan veri tipleri, blok yapısı, şartlara bağlı ve bağlı olmayan kontrol cümleleri, bir çok döngü tipi, hata durumlarında kullanılacak yordamlar ve kullanıcı tarafından tanımlanabilecek nesneler yer almaktadır.</p>
<h3>Net8</h3>
<p><strong> </strong>Net8 Oracle’ın bir ağ ürünüdür. Farklı bilgisayarların veritabanına bağlantı kurması ve ve istemci-sunucu arasında veri alışverişinin sağlanabilmesi Net8’in ana görevidir. Net8 ağdaki her bilgisayara kurulur. Ağ bağlantısı sağlandığında NET8 istemci ile sunucu arasında bir veri taşıyıcısı gibi işlem görür.</p>
<p>Ağ üzerinde bir istemcinin sunucudaki veritabanına erişebilmesi için, sunucuda bir ağ servis adının(Net Service Name) ve bir dinleyicinin(LISTENER) oluşturulması gerekir. Oracle Enterprise Edition ile birlikte gelen Net8 Assistant ile bu gerçekleştirilebilir. Ağ servis adları, veritabanı gibi bir servisi ağda tanımlamak amacıyla basit bir yöntem olarak kullanılır. Bir kullanıcı ağ servis adını kullanarak bağlantısını şöyle sağlar:</p>
<p>Connect kullanıcı_adı/şifre@ağ_servis_adı</p>
<p>Aşağıda Ne8 Assistant görüntüsü verilmiştir. Verilen şekilde ağ erişimi oluşturmak için gereken işlemler oldukça basittir. Bir ağ servis adı oluşturmak için “Ağ Servis Adları” dizininin üzerine gelip, yandaki artı işaretini tıklamak gerekir. Bundan sonra bazı bilgiler girmemiz istenir. Önce kullancağımız ağ servis adı bilgisi girilir, sonra iletişimde kullanılacak TCP/IP, SPX gibi protokollerden uygun olanın seçilmesi işlemi tamamlanır. Bundan sonra ana bilgisayar adı ve port numarası girilir. Ana bilgisayar adı veritabanının yüklü olduğu bilgisayarın adıdır. Port numarası ise Oracle’ın veritabanları için kullandığı standart numara olarak 1521 girilir. Bu işlemden sonra veritabanın sürümü seçilir ve veritabanı oluşturulurken girilen SID adı bilgisi verilir. Girilecek tüm bilgiler bu kadardır. Erişimin sağlanıp sağlanmadığını anlamak için “Test” butonu ile bağlantı denemesi yapılır. Ağ servis adları TNSNAMES.ORA adlı dosyaya haydedilir. Bu dosyada yaptığımız bir kayıt şu şekilde yer alır.</p>
<p>OGR =</p>
<p>(DESCRIPTION =</p>
<p>(ADDRESS_LIST =</p>
<p>(ADDRESS = (PROTOCOL = TCP)(HOST = bavenoglu)(PORT = 1521))</p>
<p>)</p>
<p>(CONNECT_DATA =</p>
<p>(SERVICE_NAME = ogr)</p>
<p>)  )</p>
<p>Ağ erişimi dinleyici(LISTENER) adı verilen bir yardımcı programla sağlanır. Net8 Assistant içerisinde bir dinleyici oluşturulabilir. Bir istemci sunucuya bağlanmak istediğinde bu isteği dinleyici karşılar ve istemcinin konfigürasyon bilgileri ile kendi bilgilerini karşılaştırır eğer uygunsa bağlantı sağlanır. Dinleyicinin konfigürasyonu ile ilgili bilgiler LISTENER.ORA dosyasında saklanır.</p>
<h3>SQL*Net</h3>
<p>SQL*Net Net8’in yardımcı programıdır. Bir istemci bilgisayara Oracle Forms ürününün yüklendiğini düşünelim. Bunun için istemci bilgisayar SQL*Net ile oluşturulan veritabanı takma adını(alias) kullanır. Yukarıda Net8 konfigürasyonunun istemci bilgisayarlarda da yapılması gerektiğini söylemiştik. İşte bu konfigürasyon istemci bilgisayarlarda SQL*Net sayesinde yapılır. Burada veritabanına verilecek takma isim, protokol adı, ana bilgisayar adı(veritabanının bulunduğu) ve veritabanının SID olarak girilen ismi bilgileri girilerek düzenleme yapılır.</p>
<p><strong>Şimdi genel hatları ile Oracle8i Enterprise Edition’ı kurulumunu inceleyelim.</strong></p>
<h2>Gerekli Donanım</h2>
<p>Oracle8<em>i </em>Enterprise Edition CD’sinde üç farklı ürün yer almaktadır:</p>
<ul>
<li>Oracle8<em>i </em>Enterprise Edition (Server)</li>
<li>Oracle8<em>i</em> Client</li>
<li>Oracle Programmer</li>
</ul>
<h3>Oracle8<em>i</em> Enterprise Edition(Windows NT)</h3>
<p><strong> </strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td valign="bottom"><strong> </strong><strong>Yükleme   Türü</strong></td>
<td valign="bottom"><strong>Açıklama</strong></td>
</tr>
<tr>
<td valign="top">Typical</td>
<td valign="top">Tam anlamıyla bir veritabanı   kullanmak isteyenler için tavsiye edilen yükleme türüdür. Bir başlangıç   veritabanı, ağ servisleri, Oracle yardımcı ürünleri ve yardım dokümanları   yüklenir.720 MB yer kaplar. Pentium 133 ya da Pentium 166 işlemci ile   kurulabilir. Önerilen işlemci Pentium 200 dür. 96 MB RAM ile çalışabilir.   Tavsiye edilen bellek ise 128 MB ‘tır.</td>
</tr>
<tr>
<td valign="top">Minimal</td>
<td valign="top">Minimum veritabanı paketi   kullanmak isteyenler için önerilir. Bir başlangıç veritabanı, ağ servisleri   ve bazı yardımcı ürünleri içerir. 520 MB yer kaplar. Pentium 133 ya da   Pentium 166 işlemci ile kurulabilir. Önerilen işlemci Pentium 200 dür. 64 MB   RAM ile çalışabilir. Tavsiye edilen bellek ise 96 MB ‘tır.</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h3>Oracle8<em>i</em> Client(Windows NT ve Windows  )</h3>
<p><strong> </strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td valign="bottom"><strong>Yükleme Türü</strong></td>
<td valign="bottom"><strong>Açıklama</strong></td>
</tr>
<tr>
<td valign="top">Typical</td>
<td valign="top">Veritabanı yöneticileri için   veritabanına bağlanma ve veritabanı yönetim işlerini gerçekleştirme   araçlarını yükler. 299 MB yer kaplar. Intel 80486 işlemci ile   çalıştırılabilir. Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32   MB RAM ile çalıştırılabilir. Önerilen 64 MB’tır.</td>
</tr>
</tbody>
</table>
<h3>Oracle Programmer(Windows NT ve Windows  )</h3>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<thead>
<tr>
<td valign="bottom"><strong>Yükleme Türü</strong></td>
<td valign="bottom"><strong>Açıklama</strong></td>
</tr>
<tr>
<td valign="top">Typical</td>
<td valign="top">Veritabanına erişebilen    geliştirme araçları ve ara yüzlerini yükler. Bu paket, ön    derleyicileri(precompilers), ağ servislerini ve yardım dokümanlarını    içerir. 267 MB yer kaplar. Intel 80486 işlemci ile çalıştırılabilir.    Tavsiye edilen Pentium 133 ya da Pentium 166 dır. En az 32 MB RAM ile    çalıştırılabilir. Önerilen 64 MB’tır.</td>
</tr>
</thead>
</table>
<h2>Oracle8i Enterprise Edition Kurulumu</h2>
<ol>
<li>Kuruluma başlamadan önce Windows NT sistemine “Administrator” olarak girin.</li>
</ol>
<ol>
<li>Eğer sistemde Oracle’ın daha önceki sürümleri      varsa StartàControl      PanelàServices      içerisinde tüm Oracle ile başlayan servisleri seçip, sağ tıklayın ve      açılan menüden “Stop” seçeneğini seçin.</li>
<li>CD-Rom’u takın ve otomatik olarak çalışmasını      bekleyin. Eğer çalışmazsa cd-rom sürücü dizinine geçip Setup.Exe dosyasını      çalıştırın.</li>
<li>Şimdi “Oracle Universal Installer“ olarak      adlandırılan ürün yükleme sihirbazının çalışmış olması gerekir. Bu ana      pencerede “Install/Deinstall Products” seçeneğini tıklayın.</li>
<li>İlk karşınıza gelen tanıtım penceresidir. Burada      daha önce yüklenmiş ürünlerin listesi görülebilir. Yeni yükleme için      “İleri” butonunu tıklayın.</li>
<li>“Dosya Yerleşimleri” penceresinde kaynak ve      hedef dizin ve dosya adları belirtilir. Kaynak dizin E:\STAGE\PRODUCTS.JAR      şeklinde otomatik olarak belirtilir. Bu dizin adı değiştirilmemelidir.</li>
<li>Hedef olarak bir Oracle giriş dizini adı ve yolu      girmeniz beklenir. Otomatik olarak giriş dizini adı için “OraHome81” ve      yolu içinde  “C:\Oracle\Ora81”      belirtilir. Bu alanlar değiştirilmeden “İleri” butonu tıklanabilir.</li>
</ol>
<ol>
<li>Ürün bilgileri listesinin yüklenmekte olduğunu belirten bir pencere geldikten sonra karşınıza “Yüklenebilecek Ürünler” penceresi gelir. Yukarıda da anlattığımız gibi burada üç ürün vardır. Oracle8i Enterprise Edition seçeneğini işaretleyerek “İleri” butonuna basın.</li>
</ol>
<ol>
<li>“Yükleme Türleri” penceresinde tipik, minimum ya      da özel seçeneklerinden biri seçilerek “İleri” butonuna basılır.</li>
<li>Eğer tipik yükleme, ya da özel yükleme      seçildiyse burada Oracle yardım dosyalarını diskten ya da CD-Rom’dan      çalıştırma seçeneklerinden birini seçmeniz beklenir. Eğer diskte yaklaşık      133MB boş yeriniz varsa diske yükleme seçeneğini seçebilirsiniz.</li>
<li>Bilgisayarınızda daha önceden yüklü bir Oracle      veritabanı varsa bu kısımda bunu güncellemek isteyip istemediğinizi soran      bir pencere gelir. “Migrate an Existing Database”      kutusunu işaretlerseniz yüklemeden hemen sonra “Oracle Data Migration      Assistant” programı çalışır ve eski veritabanınızı yeni sürüme terfi      ettirir.</li>
<li>“İleri” butonunu tıkladığınızda karşınıza “Database Identification” penceresi gelir.      Burada  “Global Database Name” ve “SID” alanlarını doldurmanız      istenir. Buraya vereceğiniz isim veritabanının adı olacaktır. Bu      alanlardan birini doldurduğunuzda diğeri de aynı değeri otomatik olarak      alır.</li>
</ol>
<ol>
<li>“İleri” butonunu tıkladığınızda genel ayarlar,      ürün dilleri, alan gereksinimleri ve yeni yüklenecek ürünleri kapsayan bir      liste gelir. Listede değişiklik yapılamaz. Sadece bildiri amaçlı bir      listedir.</li>
<li>“İleri” butonunu tıkladığınızda ürünler      yüklenmeye başlar. Oracle8i Enterprise Edition sürümünün tipik olarak      yüklenmesi minimum donanım ayarlarında yaklaşık yarım saat sürer.</li>
<li>Dosyaların kopyalanması bittikten sonra      “Konfigürasyon Penceresi” gelir.Veritabanının oluşturulması, başlatılması      ve ağ ayarlarının yapılması burada otomatik olarak yapılır. Veritabanı      oluşturma işlemleri bittikten sonra karşınıza giriş şifrelerinin ve      veritabanı ile ilgili bazı bilgilerin verildiği bir pencere gelir.      Buradaki şifreler daha sonra veritabanı yönetimi için kullanılacak      şifreler olduğundan, önemlidir.</li>
</ol>
<ol>
<li>Bu işlemler tamamlandıktan sonra “Universal      Installer” kapatılabilir.</li>
</ol>
<h2>Oracle8i Enterprise Edition Ürününü Kaldırma</h2>
<ol>
<li>Bu ürünü kaldırmadan önce StartàControl      PanelàServices      seçilerek çalışan tüm Oracle servisleri kapatılmalıdır.(“Oracle” kelimesi      ile başlayan tüm servisler)</li>
<li>“Start &gt; Programs &gt; Oracle Installation      Products &gt; Universal Installer” seçilerek yükleme asistanı      çalıştırılmalıdır.</li>
<li>Burada “Yüklü Ürünler” butonu tıklanır.</li>
<li>Kaldırmak istenilen ürünlerin solundaki kutular      tıklanarak boşaltılır ve “Kaldır” butonuna basılır.</li>
<li>Ekrana bu kaldırılacak ürünlerin listesi gelir      ve kaldırmak için son kez onay istenir.</li>
</ol>
<p>“Evet” butonuna tıklanırsa seçili ürünler kaldırılır. Sonra “Universal Installer” kapatılabilir</p>
<p>Hayrullah AYAN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/veri-tabani/oracle-veritabanina-kusbakisi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
