<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Sühan Erol (Oracle+PHP)</title>
	<atom:link href="http://suhanerol.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://suhanerol.wordpress.com</link>
	<description>Oracle ve PHP hakkında teknik yazılar</description>
	<lastBuildDate>Sat, 24 Sep 2011 18:54:34 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='suhanerol.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sühan Erol (Oracle+PHP)</title>
		<link>http://suhanerol.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://suhanerol.wordpress.com/osd.xml" title="Sühan Erol (Oracle+PHP)" />
	<atom:link rel='hub' href='http://suhanerol.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PHP ile OCI Client Result Cache (Sorgu sonuçlarının İstemci(webserver) tarafında tutulması)</title>
		<link>http://suhanerol.wordpress.com/2009/03/25/php-ile-oci-client-result-cache-sorgu-sonuclarinin-istemciwebserver-tarafinda-tutulmasi/</link>
		<comments>http://suhanerol.wordpress.com/2009/03/25/php-ile-oci-client-result-cache-sorgu-sonuclarinin-istemciwebserver-tarafinda-tutulmasi/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 20:38:29 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[OCI CLIENT RESULT CACHE]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=27</guid>
		<description><![CDATA[İstemci tarafında sorgu sonuçlarının tutulması(result caching) Oracle 11g nin sunduğu yeni özelliklerden biridir. Bu özellik OCI (Oracle Call Interface) teknolojisini kullanan uygulamalar ve sürücüler tarafından kullanılabilmektedir. Bu makalede PHP özelinde incelenen konu OCI teknolojisini kullanan diğer programlama lisanlarında da geçerlidir. İstemci tarafında gerçekleşen bu işlem sayesinde veritabanına bağlantılar azalacağından performans açısından fayda sağlanmaktadır. Sorgu çalıştırılması [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=27&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">İstemci tarafında sorgu sonuçlarının  tutulması(result caching) Oracle 11g nin sunduğu yeni özelliklerden biridir. Bu  özellik OCI (Oracle Call Interface) teknolojisini kullanan uygulamalar ve sürücüler tarafından  kullanılabilmektedir. Bu makalede PHP özelinde incelenen konu OCI teknolojisini  kullanan diğer programlama lisanlarında da geçerlidir. </span></p>
<p style="margin-top:0;margin-bottom:0;"><span id="more-27"></span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">İstemci tarafında gerçekleşen  bu işlem  sayesinde veritabanına  bağlantılar azalacağından performans açısından fayda sağlanmaktadır. Sorgu  çalıştırılması istemci tarafında yapıldığından sunucuya yük binmeyecek ve sonuç  daha hızlı alınacaktır.  Sorgu sonuçları istemci tarafında sistem  hafızasında(RAM) tutulmaktadır. İstemcide bulunan farklı uygulamalar OCI  teknolojilerini kullandıkları takdirde bu özellikten ortak olarak  yararlanabilmektedirler. Bir diğer ifadeyle OCI tarafından sağlanan bu sorgu  sonuç deposu tüm OCI kullanan uygulamalara saydamdır ve ortak olarak  kullanılabilmektedir. Mevcut sorgu sonuçları veritabanında meydana gelen bir  değişiklik sonucunda otomatik olarak güncellenmektedir. İstemci peş peşe sorgu  dizisi çalıştırdığı esnada veritabanında ilgili kayıtlarda bir değişiklik olursa  istemcideki sorgu sonuçları önce geçersiz duruma getirilir daha sonra sorgu  sonuncunun son hali depolanır ve kullanılmaya devam eder. </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.<br />
</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">İstemci tarafındaki sorgu sonuç  deposunun güncel tutulması işlemi veritabanı ve OCI arasındaki iletişim  sayesinde yapılmaktadır. Veritabanında ilgili veriler  bir transaction tarafından değiştirilmesi durumunda, istemciden  yapılacak olan ilk istek sırasında istemciye mevcut sorgu sonucunun geçersiz  olduğu bilgisi gönderilir ve bu sorgu sonucunun kullanılması engellenmiş olur.  Eğer istemciden veritabanına bir süre istekte bulunulmamışsa ve bu süre CLIENT_RESULT_CACHE_LAG  veritabanı parametresinde belirtilen (varsayılan 3 saniye) süreden uzun ise yine  OCI bir sonraki oci_execute() işleminin güncellik kontrolü yapmasını  sağlayacaktır. </span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Bu özelliğin PHP ile birlikte kullanılabilmesi için OCI&#8217;nin 1.3 ve üstü  sürümünün kurulması gerekmektedir. PHP ve OCI kurulumu için <a href="../2009/03/24/ubuntu-uzerinde-php-oci8-ve-oracle-instant-client-kurulumu/"> http://suhanerol.wordpress.com/2009/03/24/ubuntu-uzerinde-php-oci8-ve-oracle-instant-client-kurulumu/</a> makalesi incelenebilir. </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.<br />
</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><strong>CLIENT_RESULT_CACHE_SIZE</strong> veritabanı parametresi bu özelliğin aktif/devre dışı  olduğunu belirleyen parametredir. 0 değeri bu özelliğin kapalı olmasını sağlar,  0 Haricinde bir değer atanması durumunda özellik aktif hale gelir. Atanan değer  istemci tarafında sorgu sonuçlarının depolanması için hafızada ne kadar byte yer  ayrılacağını belirler. Sorgu sonuçlarını istemcinin(webserver) RAM&#8217;inde  tutulurlar. </span></p>
<pre style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;font-size:small;">.

$ sqlplus / as sysdba
SQL&gt; alter system set client_result_cache_size=64M scope=spfile;
SQL&gt; startup force
.

</span></pre>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Bu komutlarla birlikte İstemci tarafında sorgu sonuçlarının tutulması  özelliği aktif hale getirilmiş olmaktadır. İstemci RAM&#8217;inde 64MB&#8217;lık bir bölüm  sorgu sonuçlarının depolanması için ayrılmış olmaktadır. </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.<br />
</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">SQL&gt;show parameter client_result_cache; </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">komutuyla bu parametreye ilişkin durumu listelenebilmektedir.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">NAME                                                                                TYPE                             VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
client_result_cache_lag                            big integer                 3000<br />
client_result_cache_size                          big integer                 64M</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><br />
</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Konu ile ilgili belirleyici bir diğer parametre de &#8220;RESULT_CACHE_MODE&#8221; dir.  Bu parametre FORCE veya MANUAL olarak iki farklı değer alabilmektedir. MANUAL  değeri varsayılan değerdir. Eğer bu değer MANUAL ise ve sorgu sonuçlarının  istemcide tutulması isteniyorsa sorgulara /*+ result_cache */  hint&#8217;inin  eklenmesi gerekmektedir. Aksi taktirde sorgu sonuçları tutulmayacaktır.  Parametrenin FORCE olması durumunda uygun bütün sorguların sonuçları istemcide  tutulacaktır. Eğer tutulması istenmeyen sorgular var ise bu sorgulara /*+ no_result_cache  */  hint&#8217;inin eklenmesi gerekmektedir.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="color:#ff0000;"><em><span style="font-family:Tahoma;">Oracle 11gR2 ile birlikte DBA&#8217;lerin de tablo veya view&#8217;ların istemcide tutulabilmesini ayarlayabilmeleri sağlanmıştır. </span></em></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="color:#ff0000;"><em><span style="font-family:Tahoma;">create table deneme (&#8230;.) result_cache</span></em></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="color:#ff0000;"><em><span style="font-family:Tahoma;">alter table deneme result_cache</span></em></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><br />
</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Görüldüğü gibi bu özelliğin kullanılması için PHP tarafında bir değişiklik  yapılması gerekmemektedir. Oracle Server&#8217;da ilgili parametrelerin ve gerekiyorsa  sorguların değiştirilmesi yeterli olmaktadır. </span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Aşağıdaki örnekte aynı sorgunun peş peşe çalıştırılması ve bunun  Oracle Server&#8217;a ne  şekilde yansıdığı gösterilmiştir.</span></p>
<p style="margin-top:0;margin-bottom:0;">.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">&lt;?php<br />
$c=oci_connect(&#8216;hr&#8217;,'hr&#8217;,'//oracleserver:1521/xxx&#8217;);<br />
for($i=0;$i&lt;100;$i++) {<br />
$s=oci_parse($c,&#8221;select /*+ result_cache */ * from hr.employees&#8221;);<br />
oci_execute($s,OCI_DEFAULT);<br />
oci_fetch_all($s,$res);<br />
}</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">?&gt;</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">bu php betiği çalıştırıldıktan sonra oracle serverda bu sorgunun çalıştırılma  istatistiği şu şekildedir.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">SQL&gt; select parse_calls, executions, sql_text from v$sql where sql_text like  &#8216;%employees%&#8217;;</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">PARSE_CALLS            EXECUTIONS             SQL_TEXT<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span><span style="font-family:Tahoma;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">2                                 <strong>2</strong> &#8230;&#8230;&#8230;&#8230;&#8230;select / *+ result_cache */ * from hr.employees</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Aynı PHP betiği tekrar çalıştırıldığında &#8230;</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">SQL&gt; select parse_calls, executions, sql_text from v$sql where sql_text like  &#8216;%employees%&#8217;;</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">PARSE_CALLS               EXECUTIONS                SQL_TEXT<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
4                                  <strong> 4 </strong> &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;select /*+ result_cache */ * from hr.employees</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Bu duruma göre PHP betiğinde 100 kere çalıştırılan bir sorgu veritabanında 2  kere çalıştırılmıştır. Geriye kalan 98 sorgu istemcide çalıştırılmış ve oracle  server çok daha az işlem yaptırılmıştır. Sorgu istemci tarafında geçerli olarak tutuluyor olsa  bile ilk oci_execute() komutu veritabanında çalışıtırılır, daha sonraki  çalıştırmalar istemci tarafındaki sorgu sonuçlarından bilgiyi alırlar. Bu php  betiğinde sorgu ilk olarak veritabanında çalıştırılmıştır ve hr.employees  tablosunda bir değişiklik olmadığından bundan soraki sorgular istemci tarafında  çalışıtırılmış ve oracle serverdan yük alınmıştır. İkinci  çalıştırılmanın sebebi şudur: CLIENT_RESULT_CACHE_LAG veritabanı parametresi  istemci tarafındaki sorgu sonuçlarının geçerlilik süresini belirler ve bu süre  varsayılan olarak 3000 milisaniyedir. PHP betiği çalıştıktan sonra 3ncü saniyede oci_execute()  serverda çalıştırılır ve istemcideki sorgu sonuçlarının geçerliliği kontrol  edilir. </span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Burada PHP geliştiricilerinin dikkat etmesi gereken bir konu vardır. oci_execute()  fonksiyonun ikinci parametresi OCI_DEFAULT olarak belirtilmezse aşağıdaki tablo  ortaya çıkacaktır.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">SQL&gt; select parse_calls, executions, sql_text from v$sql where sql_text like  &#8216;%employees%&#8217;;</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">PARSE_CALLS            EXECUTIONS                          SQL_TEXT<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2                                <strong>100</strong> &#8230;&#8230;&#8230;&#8230;&#8230;select /*+ result_cache */ * from hr.employees</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Görüldüğü gibi sorguların tamamı veritabanında çalıştırılmıştır. Bu yüzden  OCI_DEFAULT parametresinin kullanılması gerekmektedir. OCI_DEFAULT değeri auto-commit  özelliğini devreden çıkaran bir değerdir. Otomatik commit özelliğinin açık  olması durumunda her oci_execute() fonksiyonu çağırımından sonra içsel olarak  yapılan commit işleminin mevcut sorgu sonucunun değişimine sebep olabileceği  ihtimali sebebiyle bir sonraki oci_execute() işlemi veritabanında  çalışıtırılmaktadır.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><br />
</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Aşağıdaki örnekte aynı veriler üzerinde işlem yapan iki PHP betiğininden  birinin güncelleme işlemi yapması sonucunda ortaya çıkan tablo gösterilmiştir.  a.php betiği employees tablosundan peş peşe bilgi okurken b.php betiği a.php  betiği çalışmaya başladıktan sonra aynı tablo üzerinde güncelleme işlemi  yapmaktadır. Bu durumda a.php betiğindeki oci_execute() fonksiyonu b.php  betiğinin güncelleme işlemini yapmasından sonra istemci sorgu sonuçlarının  geçersiz olmasından dolayı oracle server tarafında çalışmaktadır. b.php betiği  commit() fonksiyonun çalıştırdıktan sonra ise a.php tekrar istemci tarafındaki  sorgu sonuçlarından yararlanmaya devam edecektir.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><strong>.</strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><strong>a.php</strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">&lt;?php<br />
$c=oci_connect(&#8216;hr&#8217;,'hr&#8217;,'//oracleserver:1521/xxx&#8217;);<br />
for($i=0;$i&lt;100;$i++) {<br />
$s=oci_parse($c,&#8221;select /*+ result_cache */ * from hr.employees&#8221;);<br />
oci_execute($s,OCI_DEFAULT);<br />
oci_fetch_all($s,$res);<br />
sleep(1);</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">}</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">?&gt;</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><strong>b.php</strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">&lt;?php<br />
sleep(10); //10 sn bekle<br />
$c=oci_pconnect(&#8216;system&#8217;,&#8217;123456&#8242;,&#8217;//oracleserver:1521/xxx&#8217;);<br />
$s=oci_parse($c,&#8221;update hr.employees set salary=1000 where employee_id=100&#8243;);<br />
oci_execute($s,OCI_DEFAULT);<br />
sleep(10);<br />
ocicommit($c);</span></p>
<p>?&gt;</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"># php a.php &amp;</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">#php b.php </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">komutları çalıştırıldığında  b.php 10 sn bekleyecektir. bu süre içinde  a.php sorgu sonuçlarını istemciden alacaktır. b.php &#8216;deki güncelleme işlemi  çalıştığında ve tekrar 10 saniye beklemeye geçtiğinde a.php deki oci_execute()  istemciden bilgi alamayacak ve sorguları veritabanında çalıştıracaktır. Çünkü b.php  tabloda güncelleme yapmıştır ve henüz commit işlemini gerçekleştirmemiştir. OCI  bu durumu algılar ve a.php devam eden sorgularında istemcideki sorgu sonuçlarını  kullanmasını engeller, sorguların veritabanında çalıştırılması sağlar. b.php  deki ocicommit() fonksiyonu çalıştırıldıktan sonra a.php deki sorgular  güncellenen istemci sorgu sonuçları üzerinden çalışmaya devam eder.</span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong><span style="font-family:Tahoma;">.</span></strong></p>
<p style="margin-top:0;margin-bottom:0;"><strong><span style="font-family:Tahoma;">İstemci  Tarafında Depolanamayacak Sorgu Türleri</span></strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Bazı sorgu türleri bu özellik tarafından desteklenmemektedir. Sorguda /*+ result_cache  */ hint&#8217;i kullanılsa bile bu sorgular depolanmayacaktırlar. Bu sorgulardan  bazıları 11g ile gelen başka bir özellik olan &#8220;Sunucu Tarafında Sorgu Sonucu  Depolama (RESULT CACHE)&#8221; özelliği sayesinde oracle server&#8217;da SGA da  depolanabilirler. </span></p>
<p style="margin-top:0;margin-bottom:0;">
<ul>
<li>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">View&#8217;lar</span></p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Uzak Nesneler (Remote Objects)</span></p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Flashback sorgular</span></p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">PL/SQL fonksiyonu içeren sorgular</span></p>
</li>
</ul>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Bu özellikle  ilgili istatistikler CLIENT_RESULT_CACHE_STATS$ görünümden takip edilebilir. OCI  belirli aralıklar Oracle Server&#8217;a istatistik bilgileri göndermektedir. </span></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong><span style="font-family:Tahoma;">.</span></strong></p>
<p style="margin-top:0;margin-bottom:0;"><strong><span style="font-family:Tahoma;">Sonuç</span></strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">OCI Result Cache  özelliğinin hiç değişmeyen(Read-only) veya çok az değişen tablolar için  kullanılmasının daha doğru bir karar olduğu görülmektedir. Çok sık çağırılan fakat  nispeten daha fazla değişikliğe uğrayan sorgularda da bu özelliğin kullanılması  uygun olabilir. İstemci tarafındaki RAM maliyetinin Oracle Server tarafında  olduğundan daha düşük olması bu özelliğin daha yaygın kullanılmasının  da bir sebebi olabilir. </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">.<br />
</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">OCI Result Cache  özelliği, Oracle&#8217;ın ölçeklenebilirlik ve performans konularında bir adım daha  atmasına sağlamaktadır. Yazılım geliştiricilerin dosya sisteminde sorgu  sonuçlarını tutmak ve bunları kullanarak uygulamaya çalıştıkları Caching  uyarlama çalışmalarının mevcut bütün handikaplarını ortadan kaldıran ve   tek bir satır kod yazmadan kullanıma sunan bu özellik , Server Taraflı Sorgu  Sonucu Depolama (RESULT CACHE) ve <a href="../2008/03/17/oracle-drcp-database-resident-connection-pooling-ile-php-icin-connection-pooling/"> DRCP</a> özellikleriyle de birleştirildiğinde, PHP gibi betik lisanlarının diğer  üst düzey lisanlar karşısındaki handikaplarının büyük bir kısmının ortadan kalkmasını da  sağlamaktadır. Oracle tarafından desteklenen PHP , 11g ve OCI&#8217;daki yenilikler  sayesinde Oracle Veritabanı kullanacak yazılımlar için güçlü bir alternatif  haline gelmiştir. </span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=27&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2009/03/25/php-ile-oci-client-result-cache-sorgu-sonuclarinin-istemciwebserver-tarafinda-tutulmasi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu Linux üzerinde  PHP , OCI8 ve Oracle Instant Client Kurulumu</title>
		<link>http://suhanerol.wordpress.com/2009/03/24/ubuntu-uzerinde-php-oci8-ve-oracle-instant-client-kurulumu/</link>
		<comments>http://suhanerol.wordpress.com/2009/03/24/ubuntu-uzerinde-php-oci8-ve-oracle-instant-client-kurulumu/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 09:55:11 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=21</guid>
		<description><![CDATA[Bu makale ile, günümüzün en yaygın ve kullanışlı linux dağıtımlarından olan Ubuntu üzerinde Oracle bağlantı destekli PHP kurulumu anlatılarak bir sonraki  &#8220;PHP ile &#8216;OCI Client Result Cache&#8217;  (Sorgu sonuçlarının İstemci(webserver)  tarafında tutulması)&#8220;  konulu makalenin uygulanabilmesi için hazırlık yapılması amaçlanmıştır. Bir terminal açınız ve aşağıdaki sudo komutunu yazarak sistem yöneticisi hakkını alınız. # sudo -i Aşağıdaki [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=21&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Tahoma;">Bu makale ile, günümüzün en yaygın ve kullanışlı linux  	dağıtımlarından olan Ubuntu üzerinde Oracle bağlantı destekli PHP kurulumu  	anlatılarak bir sonraki  &#8220;<a href="http://suhanerol.wordpress.com/2009/03/25/php-ile-oci-client-result-cache-sorgu-sonuclarinin-istemciwebserver-tarafinda-tutulmasi/">PHP ile &#8216;OCI Client Result Cache&#8217;   	(Sorgu sonuçlarının İstemci(webserver)  tarafında tutulması)</a>&#8220;   	konulu makalenin uygulanabilmesi için hazırlık yapılması amaçlanmıştır.</span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"><span id="more-21"></span>Bir terminal  	açınız ve aşağıdaki sudo komutunu yazarak sistem yöneticisi hakkını alınız.</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;">#  	sudo -i</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Aşağıdaki  	komut apache&#8217;nin son sürümünü yükleyecektir.</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;">#  	apt-get install apache2<br />
</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">PHP ve diğer  	modüllerin kurulumu </span> <code><span style="font-family:Tahoma;"><br />
<strong># apt-get install php5-common php5 php5-dev libapache2-mod-php5 php5-cli<br />
</strong><br />
</span> <strong><span style="font-family:Tahoma;"># apt-get install build-essential php-pear<br />
</span></strong></code></p>
<p style="margin-top:0;margin-bottom:0;"><code><strong><span style="font-family:Tahoma;">#  	apt-get install libaio1<br />
</span></strong></code></p>
<p><span style="font-family:Tahoma;"><strong>Aşağıdaki linki  	kullarak Oracle Instant Client </strong><strong>BASIC</strong><strong> ve </strong><strong>SDK</strong><strong> dosyalarını indiriniz.</strong></span></p>
<p><span style="font-family:Tahoma;"> <a href="http://www.oracle.com/technology/tech/oci/instantclient/index.html"> http://www.oracle.com/technology/tech/oci/instantclient/index.html</a></span></p>
<p><span style="font-family:Tahoma;"><strong>Dosyalar muhtemelen  	kullanıcının masaüstüne kayıt edilecektir. </strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"> <strong>Aşağıdaki komut ile yeni bir dizin açınız.</strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;">#  	mkdir /opt/oracle</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;"> <strong>İndirdiğiniz iki dosyayı yeni oluşturulan </strong><strong>/opt/oracle</strong><strong> klasörüne taşıyınız.</strong></span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;"># mv  	/home/ubuntu/Desktop/*.zip /opt/oracle<br />
</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Yeni  	oluşturulan klasöre geçiniz</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;"># cd  	/opt/oracle</span></code></strong></p>
<p><span style="font-family:Tahoma;">InstantClient dosyalarını aşağıdaki komut ile açınız.</span><code><span style="font-family:Tahoma;"><br />
</span> <strong><span style="font-family:Tahoma;"># unzip \*.zip</span></strong></code></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Unzip işlemi  	sonunda yeni bir klasör oluşacaktır. Bu klasörün ismini aşağıdaki komut ile  	değiştiriniz.</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;"># mv  	instantclient_11_1 instantclient</span></code></strong></p>
<p><span style="font-family:Tahoma;">Yeni klasöre giriniz.</span><code><span style="font-family:Tahoma;"><br />
</span> <strong><span style="font-family:Tahoma;"># cd instantclient<br />
</span></strong></code></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Yeni Sembolik  	linkler oluşturmak için aşağıdaki komutlar çalıştırınız.</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;"># ln  	–s libclntsh.so.11.1 libclntsh.so<br />
# ln –s libocci.so.11.1 libocci.so<br />
</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Aşağıdaki  	komut ile yeni bir klasör oluşturunuz. Bu klasör OCI8 kütüphane dosyalarını  	içerecektir.</span></p>
<p style="margin-top:0;margin-bottom:0;"><strong><code><span style="font-family:Tahoma;">#  	mkdir /opt/oracle/src</span></code></strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Tahoma;">Y</span><span style="font-family:Times New Roman;"><code><span style="font-family:Tahoma;">eni  	oluşturulan klasöre geçiniz ve pecl ile OCI8 tar dosyasını indiriniz. Pecl  	son sürüm OCI8 dosyasını indirecektir. Şuanda son sürüm 1.3.5 dir. 1.3  	sürümünden itibaren "Client Result Cache" özelliği kullanılabilmektedir.</span></code></span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><strong> <code><span style="font-family:Tahoma;"># cd /opt/oracle/src<br />
# pecl download oci8</span></code></strong></span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"> </span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;">İndirilen  	OCI8 dosyasını açınız.</p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;">#  	tar xvf oci8-1.3.5.tgz</span></code></strong></span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"> </span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;">Yeni oluşan  	klasöre giriniz.</p>
<p style="margin-top:0;margin-bottom:0;"><code><span style="font-family:Times New Roman;"><strong><span style="font-family:Tahoma;"># cd  	oci8-1.3.5</span></strong></span></code></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"> </span></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><code><span style="font-family:Times New Roman;"><span style="font-family:Tahoma;">phpize  	komutu, PHP için yeni bir eklenti derlemek gerektiğinde sistemde gerekli  	hazırlıkların yapılmasını sağlamaktadır. OCI8 Eklentisini derlemek için bu  	komutu çalıştırınız.</span></span></code></p>
<p><span style="font-family:Times New Roman;"> </span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;">#  	phpize</span></code></strong></span></p>
<p><span style="font-family:Times New Roman;"> <span style="font-family:Tahoma;"> </span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Tahoma;">Aşağıdaki komutu kullarak ORACLE_HOME çevre  	değişkenini tanımlayınız.</span><span style="font-family:Times New Roman;"><code><span style="font-family:Tahoma;"><br />
</span> <strong><span style="font-family:Tahoma;"># export ORACLE_HOME=/opt/oracle/instantclient<br />
</span></strong></code></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> <span style="font-family:Tahoma;"> </span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Tahoma;">O</span><span style="font-family:Times New Roman;"><code><span style="font-family:Tahoma;">CI8  	eklentisinin derlemesi işleminin ilk adımı olarak aşağıdaki configure  	komutunu çalıştırınız.<br />
</span> <strong><span style="font-family:Tahoma;"># ./configure --with-oci8=share,instantclient,/opt/oracle/instantclient</span></strong></code></span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;">make  	komutuyla derlemeyi başlatınız.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;">#  	make<br />
</span></code></strong></span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;">Aşağıdaki  	komut ile oluşan oci8.so dosyasının ilgili klasöre kopyalanmasını  	sağlayınız.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;">#  	make install</span></code></strong></span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;">PHP ve OCI8  	bağlantısının sağlanması için php.ini dosyalarına &#8220;extension=oci8.so&#8221;  	satırının eklenmesi gerekmektedir. Aşağıdaki komutlar ile bunu  	gerçekleştirebilirsiniz.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;">#  	echo extension=oci8.so &gt;&gt; /etc/php5/apache2/php.ini<br />
# echo extension=oci8.so &gt;&gt; /etc/php5/cli/php.ini</span></code></strong></span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;">Apacheyi  	Yeniden Başlatınız.</p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><strong><code><span style="font-family:Tahoma;"># /etc/init.d/apache2  	restart<br />
</span></code></strong><span style="font-family:Tahoma;"> </span> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;"><code><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Tahoma;">Bu  işlemlerden sonra PHP, OCI aracılığıyla Oracle veritabanı bağlantısı yapabilir  hale gelmiştir. aşağıdaki örnek kod ile test yapabilirsiniz.</span></span></span></span></code></p>
<p style="margin-top:0;margin-bottom:0;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p style="margin-top:0;margin-bottom:0;"><code><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Times New Roman;"><span style="font-family:Tahoma;">&lt;?php<br />
$c=oci_pconnect('hr','hr','//oracleserver:1521/xe');<br />
$s=oci_parse($c,"select  * from hr.employees");<br />
oci_execute($s);<br />
oci_fetch_all($s,$res);<br />
print_r($res);<br />
?&gt;</span></span></span></span></code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=21&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2009/03/24/ubuntu-uzerinde-php-oci8-ve-oracle-instant-client-kurulumu/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Analitik Fonksiyonlar</title>
		<link>http://suhanerol.wordpress.com/2008/07/28/oracle-analitik-fonksiyonlar/</link>
		<comments>http://suhanerol.wordpress.com/2008/07/28/oracle-analitik-fonksiyonlar/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 19:14:12 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[analitik over()]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=11</guid>
		<description><![CDATA[Oracle analitik fonksiyonlarında temel prensip bu fonksiyonların sorgu sonuç bilgilerinin üzerinde çalıştırılmasıdır. Analitik fonksiyonlar içeren bir sorguda önce &#8221; where , joinler , group by, having &#8221; çalıştırılır, daha sonra analitik fonksiyonlar sonuçlar üzerinde çalıştırılır , en son olarakta &#8220;order by &#8221; çalıştırılır. Analitik fonksiyonlar &#8220;View, alt sorgu&#8221; kullanımı gerektiren bir çok sorguda bu gereksinimi [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=11&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle analitik fonksiyonlarında temel prensip bu fonksiyonların sorgu sonuç  bilgilerinin üzerinde çalıştırılmasıdır. Analitik  fonksiyonlar içeren bir sorguda önce &#8221; where , joinler , group by, having &#8221;  çalıştırılır, daha sonra analitik fonksiyonlar sonuçlar üzerinde çalıştırılır ,  en son olarakta &#8220;order by &#8221; çalıştırılır. Analitik fonksiyonlar &#8220;View, alt  sorgu&#8221; kullanımı gerektiren bir çok sorguda bu gereksinimi ortadan kaldırarak  çok büyük performans artışı sağlamaktadır. Bu durumu bir örnekle gösterelim.</p>
<p><span id="more-11"></span></p>
<p>Kategorilerde bulunan ürünlerin toplamını ve bu toplamların bütün  kategorilerdeki ürünlerin toplamına oranını gösteren bir sql :</p>
<p>1) Alt sorgu kullanılarak :</p>
<p style="margin-top:0;margin-bottom:0;">select  kategori_id,count(urun_id) Toplam, ( count(urun_id)/(<strong>select count(urun_id)  from urunler</strong>) )*100 Oran from urunler group by kategori_id</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">2) Analiktik Fonksiyon Kullanarak</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">select  kategori_id,count(urun_id) Toplam,  (COUNT(urun_id)/COUNT(<strong>COUNT(urun_id))  over()</strong>)*100 Oran from urunler group by kategori_id</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Alt sorgu veya view kullanımı  özellikle kayıt sayısı yüksek olan tablolar için ciddi performans sorunlarına  yol açacaktır.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Analitik fonksiyonlarının sağladığı  bir diğer avantaj da gruplama yapılan sorgularda sonuç sahalarındaki kısıtlamayı  ortadan kaldırmasıdır. Örneğin :</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">ürün id, kategori id ve bu kategoride  bu ürünün bağlı olduğu kategorideki ürün sayısını veren sorgudaki urun id  bilgisi gruplama yapmayı engellemektedir. ancak alt sorgu veya view kullanarak  sonuca ulaşılabilir. Fakat analitik fonksiyonlar kullanılarak alt sorgulara  gerek kalmadan sonuç alınabilir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">select urun_id,kategori_id,  count(urun_id) <strong>over( partition by kategori_id)</strong> kategori_urun_sayisi from  urunler</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">İkinci bir örnek olarak <a href="mailto:ORATURK@yahoogroups.com">ORACLETURK@yahoogroups.com</a> grubuna  gönderilen bir soruyu verebiliriz.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>Soru : </strong></p>
<table id="table2" border="1" width="100%" bgcolor="#e6f2ff">
<tbody>
<tr>
<td>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">Merhabalar,</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">&#8216;kullanıcı_bilgileri&#8217; adlı tablonun içeriği aşağıdaki gibidir;</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">kul_adi  kul_termid  kul_tarih</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">&#8212;&#8212;-   		&#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">abulut    abc8       03-04-2007</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">abulut    abe5       08-07-2008</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">abulut    abk2       06-05-2008</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">hsezen    dhk1       12-02-2005</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">hsezen    ddk6       10-08-2006</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">bu tablo  		kullanılarak yapılacak sorgu sonucu aşağıdaki gibi her kullanıcının en  		son hangi tarihte hangi terminal id&#8217;si ile giriş yaptığı satırın çıkması  		gerekiyor;</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">kul_adi   		kul_termid  kul_tarih</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">&#8212;&#8212;-   		&#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">abulut    abe5       08-07-2008</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">hsezen    ddk6       10-08-2006</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">&#8230;       ..         ..</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">şeklinde  		olması lazım.Nasıl bir sorgu yazmam gerekiyor?</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">SELECT  		KUL_ADI,KUL_TERMID,MAX(KUL_TARIH)AS SON_TARIH FROM KULLANICI_BILGILERI  		GROUP BY KUL_ADI,KUL_TERMID ORDER BY KUL_ADI</p>
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">
<p class="MsoPlainText" style="margin-top:0;margin-bottom:0;">gibi bi  		sorgu yaptım ancak farklı terminal id&#8217;ler olduğundan onlara göre  		gruplama yapıyor ve biçok satır çıkıyor&#8230;</p>
</td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>Cevap : </strong></p>
<table id="table3" border="1" width="100%" bgcolor="#e6f2ff">
<tbody>
<tr>
<td>Bu gibi bir sorun karşısında analitik fonksiyonlardan dense_rank()  		fonksiyonu &#8220;PARTITION BY&#8221; ve &#8220;ORDER BY DESC&#8221; ile birlikte kullanılarak  		istenilen sonuca ulaşılabilir.SELECT *<br />
FROM (SELECT kul_adi, kul_termid, kul_tarih,<br />
DENSE_RANK ()  		OVER (PARTITION BY kul_adi ORDER BY kul_tarih DESC) sira<br />
FROM ts.deneme)<br />
WHERE sira = 1;</td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Bu sorguda &#8220;partition by kul_adi&#8221; ile  dense_rank() fonksiyonunun herbir kul_adi değeri için ayrı hesaplanması, &#8220;Order  by kul_tarih DESC&#8221; ile de dense_rank() fonksiyonunun sıralama yaparken  &#8220;kul_tarih&#8221; sahasının tersten sıralarayak</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Bir analitik fonksiyonu aşağıdaki  gibi bir sözdizimine sahip olabilir.</p>
<blockquote>
<p style="margin-top:0;margin-bottom:0;">&lt;fonksiyon_ismi&gt;() <strong>OVER</strong><br />
(<br />
[<strong>PARTITION BY</strong> &lt;exp1&gt; [, …]]<br />
<strong>ORDER BY</strong> &lt;exp2&gt; [ASC|DESC]<br />
[NULLS FIRST|NULLS LAST]<br />
)</p></blockquote>
<p style="margin-top:0;margin-bottom:0;"><strong>PARTITION BY  : </strong> Bu  komut analitik fonksiyonun kullanacağı sorgu sonuçlarını bölümlere ayırır.  Örneğin yukarıdaki örnekte Count() fonksiyonu <strong>&#8220;partition by kategori_id&#8221;</strong> komutuyla &#8220;kategori_id&#8221; lere göre sayım yapmaktadır. Yani her kategori_id değeri  için ayrı sayım yapmaktadır. &#8220;partition by&#8221; komutundan sonra  saha isimleri  veya oracle deyimleri kullanılabilir. Birden fazla saha ismi veya deyim  yazılabilir. Örneğin : kategori_id,grup_id,nvl(ust_kategori,0) gibi. Eğer asıl  sorguda <strong>&#8220;group by&#8221; </strong>kullanılmış ise sadece <strong>&#8220;select&#8221;</strong> listesindeki  sahalar kullanılabilir, kullanılmamış ise tablolardaki tüm sahalar  kullanılabilir. Eğer &#8220;partition by&#8221; kullanılmazsa tüm sorgu sonucu kullanır.</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table1" class="default" border="1" cellspacing="0" cellpadding="2" bgcolor="#ffffff">
<tbody>
<tr class="header" style="padding-left:2px;padding-right:2px;">
<th colspan="3" width="1002" height="17" align="left"> Plan</th>
</tr>
<tr class="default">
<td class="normalborder" colspan="3" height="28" align="left"><span style="color:#000080;"><strong>SELECT STATEMENT </strong> ALL_ROWS </span><span style="font-family:tahoma;color:#800000;">Cost: 135 Bytes:  		192,004 Cardinality: 8,348 </span></td>
</tr>
<tr class="default">
<td class="noborder" height="28"></td>
<td class="normalborder" colspan="2" height="28" align="left"><strong> <span style="font-family:tahoma;color:#000080;">2 </span> <span style="color:#000080;">WINDOW SORT </span></strong> <span style="font-family:tahoma;color:#800000;">Cost: 135 Bytes: 192,004  		Cardinality: 8,348 </span></td>
</tr>
<tr class="default">
<td class="noborder" height="28"></td>
<td class="noborder"></td>
<td class="normalborder" height="28" align="left"><strong> <span style="font-family:tahoma;color:#000080;">1 </span> <span style="color:#ff0000;">TABLE ACCESS FULL </span> <span style="color:#000080;">TABLE </span></strong> <span>URUNLER</span><span style="color:#000080;"> </span><span style="font-family:tahoma;color:#800000;">Cost: 134 Bytes: 192,004  		Cardinality: 8,348 </span></td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Plandaki &#8220;Window Sort&#8221; bölümü  analitik fonksiyonun kullanımını belirtmektedir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>ORDER BY : </strong></p>
<div style="margin-top:5.76pt;margin-bottom:0;margin-left:0.38in;text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;">ORDER BY &lt;exp&gt; [ASC|DESC] [NULLS FIRST|NULLS LAST]&#8220;ORDER BY&#8221; &#8220;PARTITION BY&#8221; ile yapılan bölümlemedeki sıralamayı belirler.  	&#8220;ORDER BY&#8221; &#8216;ın kullanılması veya kullanılmaması analitik fonksiyonun  	sonucunu şu şekilde etkiler:</p>
<p><strong>ORDER BY Olması durumunda </strong>: Analitik fonksiyonun kullanacağı kayıt  	seti halihazırdaki kayıt ve sıralamaya göre bölümdeki sonraki kayıtlardır.</p>
<p><strong>ORDER BY Olmaması durumunda </strong>: Analitik fonksiyonun kullanacağı kayıt  	seti bölümdeki tüm kayıtlardır.</div>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>SIRALAMA (RANKING) FONKSİYONLARI</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong> </strong>Bu  fonksiyonlar belirtilen saha değerlerine göre kayıtın diğer kayıtlara göre  sırasını belirlemeye yararlar. Sıralama fonksiyonları şunlardır :</p>
<ul>
<li>
<p style="margin-top:0;margin-bottom:0;">RANK()    	ve  DENSE_RANK()</p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;">CUME_DIST()    	ve  PERCENT_RANK()</p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;">NTILE()</p>
</li>
<li>
<p style="margin-top:0;margin-bottom:0;">ROW_NUMBER()</p>
</li>
</ul>
<p style="margin-top:0;margin-bottom:0;"><strong>RANK() ve DENSE_RANK()    : </strong>Bu fonksiyonlar kayıtın tüm kayıtlar veya bölümleler içindeki sırasının  bulunması sağlar. İki fonksiyon arasındaki fark aynı sıra değerine sahip  kayıtların olması durumunda bir sonraki sıra numarasının ne şekilde  belirleneceğidir. RANK() fonksiyonunda aynı sıra değerine sahip kayıtlardan  sonraki kayıtın sıra değeri için boşluk bırakılır. DENSE_RANK() de ise boşluk  bırakılmaz ve sıra değerleri birbirini takip eder.</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table4" border="1" width="100%">
<tbody>
<tr>
<td bgcolor="#e6f2ff">
<p style="margin-top:0;margin-bottom:0;"><strong>sql &gt; select  		malkodu,satis_sayisi,rank() over(order by satis_sayisi)  		Rank,dense_rank() over(order by satis_sayisi) Dense_Rank from  		web.urunler</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table5" style="border-collapse:collapse;width:800px;" border="0" cellspacing="0" cellpadding="0">
<col style="width:130pt;" width="173"></col>
<col style="width:68pt;" width="90"></col>
<col style="width:48pt;" width="64"></col>
<col style="width:69pt;" width="92"></col>
<col style="width:48pt;" width="64"></col>
<tbody>
<tr style="height:12.75pt;">
<td style="border:medium none;background:silver none repeat scroll 0;height:12.75pt;width:130pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="173" height="17">URUN</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:68pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="90">SATIS_SAYISI</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:48pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="64">RANK</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:69pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="92">DENSE_RANK</td>
<td style="border:medium none;width:378px;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">FPA.GR4-PG186</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">2</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">1</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">1</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">SW.GM-AK.23.0346</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">2</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">2</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;background:yellow none repeat scroll 0;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">CM.CIO-MK000CAS54</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;background:yellow none repeat scroll 0;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">CM.BQ-MK000BNQ18</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;background:yellow none repeat scroll 0;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">CM.CIO-MK000CAS55</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;background:#92d050 none repeat scroll 0;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-HD-280-PRO-S</td>
<td style="border:medium none;background:#92d050 none repeat scroll 0 0;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">11</td>
<td style="border:medium none;background:#92d050 none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
<td style="border:medium none;background:#92d050 none repeat scroll 0 0;font-weight:700;font-family:Arial,sans-serif;color:black;font-size:10pt;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">4</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378">&lt;&#8212;&#8212;&#8211; DENSE_RANK() Sırayı takip ediyor.</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">FPA.ARW-AZ371ZZ</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">12</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">5</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">KKB.PH-66862</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">34</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">8</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">MU.ARZ-AR-342</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">9</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-MX-560-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">9</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">NB.ASU-UN105ASU86</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">62</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">11</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">8</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-MX-560-B</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">68</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">12</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">9</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">EV.ARN-HYDRA</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">74</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">13</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">10</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="378"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Bu fonksiyonlar parametre almazlar.  &#8220;Order By&#8221; kullanımı zorunludur. &#8220;Partition By&#8221; kullanımı zorunlu değildir.  Kullanılmadığı taktirde tüm sorgu sonucu kullanılacaktır.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>ROW_NUMBER() : </strong>&#8220;ORDER BY&#8221; ile  belirtilen sıraya göre ve eğer belirtilmişse &#8220;PARTITION BY&#8221; ile belirtilen  gruplar için her bir satıra 1 den başlamak üzere bir sıra numarası verir. &#8220;İLK N  KAYIT&#8221; veya &#8220;SON N KAYIT&#8221; sorgularında rank() ve dense_rank() fonksiyonlarına  nazaran daha iyi sonuç verir.</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table8" border="1" width="100%">
<tbody>
<tr>
<td bgcolor="#e6f2ff">
<p style="margin-top:0;margin-bottom:0;"><strong>En Çok Satılan ilk 10 ürün</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>sql &gt; </strong>select * from  		(select malkodu,satis_sayisi,<strong>row_number()</strong> over(order by  		satis_sayisi <strong>desc</strong>) Sira  from web.urunler) where sira=&lt;10</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table9" style="border-collapse:collapse;width:246pt;" border="0" cellspacing="0" cellpadding="0" width="327">
<col style="width:130pt;" width="173"></col>
<col style="width:68pt;" width="90"></col>
<col style="width:48pt;" width="64"></col>
<tbody>
<tr style="height:12.75pt;">
<td style="border:medium none;background:silver none repeat scroll 0;height:12.75pt;width:130pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="173" height="17">URUN</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:68pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="90">SATIS_SAYISI</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:48pt;font-family:Arial,sans-serif;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="64">SIRA</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">EV.ARN-HYDRA</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">74</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">1</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-MX-560-B</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">68</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">2</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">NB.ASU-UN105ASU86</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">62</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">3</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-MX-560-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">4</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">MU.ARZ-AR-342</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">5</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">KKB.PH-66862</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">34</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">FPA.ARW-AZ371ZZ</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">12</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">HP.SE-HD-280-PRO-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">11</td>
<td style="border:medium none;font-family:Arial,sans-serif;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">8</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">CM.CIO-MK000CAS54</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;font-family:Arial,sans-serif;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">9</td>
</tr>
<tr style="height:12.75pt;">
<td style="border:medium none;height:12.75pt;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="17">CM.BQ-MK000BNQ18</td>
<td style="border:medium none;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;font-family:Arial,sans-serif;color:black;font-size:10pt;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">10</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>WINDOWING FONKSİYOLARI</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Bu fonksiyonlar sorgu sonuç satırları  üzerinde hareket ederek birtakım işlemler yapmamıza olanak sağlarlar. Örneğin  bir önceki veya bir sonraki satırdaki bir sahadaki değeri kullanarak mevcut  satır için hesaplama yapılabilmesini sağlar. Bir sahanın değerlerini ilk  satırdan itibaren toplanarak her satır için değerini bulunabilir, ortalama  alınabilir, maksimum veya minimum değeler bulunabilir. Özetle bu özellik  &#8220;PARTITION BY&#8221; ile belirlenen grup içinde istenilen ölçüde(satır sayısı, tarih  aralığı gibi) önceki veya sonraki kayıtlara ulaşılarak bu kayıtlardan değerlerin  alınmasını sağlar.</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table12" border="1" width="100%">
<tbody>
<tr>
<td bgcolor="#e6f2ff">
<p style="margin-top:0;margin-bottom:0;"><strong>Ürünlerin satış miktarları  		ve bu satış miktarlarının yukarıdan aşağıya toplanmış değerlerinin listesi</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>sql &gt; </strong>select malkodu,satis_sayisi,<strong>sum(satis_sayisi)</strong> over(order by  		satis_sayisi <strong>ROWS UNBOUNDED PRECEDING</strong>) toplam  from  		web.urunler</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table13" style="border-collapse:collapse;width:226pt;" border="0" cellspacing="0" cellpadding="0" width="300">
<col style="width:107pt;" width="142"></col>
<col style="width:71pt;" width="94"></col>
<col style="width:48pt;" width="64"></col>
<tbody>
<tr style="height:15pt;">
<td style="border:medium none;background:silver none repeat scroll 0;height:15pt;width:107pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="142" height="20">MALKODU</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:71pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="94">SATIS_SAYISI</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:48pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="64">TOPLAM</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.CIO-MK000CAS54</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.BQ-MK000BNQ18</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">14</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-HD-280-PRO-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">11</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">25</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">FPA.ARW-AZ371ZZ</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">12</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">37</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">KKB.PH-66862</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">34</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">71</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">127</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">MU.ARZ-AR-342</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">183</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">NB.ASU-UN105ASU86</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">62</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">245</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-B</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">68</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">313</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">EV.ARN-HYDRA</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">74</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">387</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Windowing fonksiyonları Fiziksel (ROWS) ve Mantıksal(RANGE) olmak üzere ikiye  ayrılmaktadır. Aralık satır sayısı belirtilecekse fiziksel , satır sayısı yerine  değerlere ait aralık belirtilecekse Mantıksal olmaktadır.</p>
<p><strong>Sözdizimi</strong> :</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">ROWS | RANGE</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">{  UNBOUNDED PRECEDING | &lt;exp&gt; PRECEDING} |</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">BETWEEN</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">{UNBOUNDED PRECEDING | &lt;exp&gt; PRECEDING}</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">AND</p>
<p style="text-indent:-0.38in;text-align:left;direction:ltr;unicode-bidi:embed;vertical-align:baseline;margin-left:0.38in;margin-top:4.8pt;margin-bottom:0;">{CURRENT ROW | &lt;exp&gt; FOLLOWING}  } )</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>ROWS</strong> işlemin fiziksel yani  belirli satır aralığıyla olacağını belirtir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>RANGE</strong> işlemin Mantıksal yani  saha değerine bağlı olarak belirleneceği durumlarda kullanılır. Örneğin 2 gün  öncesi, 1 Aylık aralık gibi&#8230;</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>BETWEEN &#8230; AND &#8230;.</strong> Başlangıç ve bitiş noktalarını belirler.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>UNBOUNDED PREC<span lang="en-us">EDING </span></strong>işlemin eğer &#8220;PARTITION BY&#8221; var ise belirlediği aralığın en başından,  eğer &#8220;PARTITION BY&#8221; yok ise tüm sorgu sonucunun en başından başlayacağını  belirtir</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>UNBOUNDED FOLLOW<span lang="en-us">ING </span></strong>işlemin eğer &#8220;PARTITION BY&#8221; var ise belirlediği aralığın sonuna  kadar, eğer &#8220;PARTITION BY&#8221; yok ise tüm sorgu sonucunun sonuna kadar olacağını  belirtir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>CURRENT_ROW </strong> Eğer ROWS  kullanıyorsa o anki satırı pozisyonu, RANGE kullanıyorsa o anki satırın Değeri  anlamına gelmektedir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>LEAD ve LAG FONKSİYONLARI</strong></p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong> </strong>Bu  fonksiyonlar sayesinde sorgu sonucunda bir önceki veya bir sonraki satırdaki  değerleri kullanarak sonuç elde edilebilmektedir. LEAD ile birlikte sonraki LAG  ile birlikte önceki satırlardan değer alınabilmektedir.</p>
<p style="margin-top:0;margin-bottom:0;"><strong>LEAD(kolon veya formul, sayısal  değer,varsayılan değer)</strong> şeklinde kullanılır. sayısal değer LEAD için kaç  satır sonraki değerin kullanılacağını belirtir. Kullanılmazsa 1 varsayılan  değeridir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;"><strong>LAG(kolon veya formul, sayısal  değer,varsayılan değer)</strong> şeklinde kullanılır. sayısal değer LAG için kaç  satır önceki değerin kullanılacağını belirtir. Kullanılmazsa 1 varsayılan  değeridir.</p>
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">Varsayılan değer bilgisi sayısal  değerin dışına çıkıldığında geri dönen değer olarak verilebilir. belirtilmezse  Null değeri döner.</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table16" border="1" width="100%">
<tbody>
<tr>
<td bgcolor="#e6f2ff">
<p style="margin-top:0;margin-bottom:0;">
<p style="margin-top:0;margin-bottom:0;">SQL&gt; select  		malkodu,satis_sayisi from urunler;</p>
<p style="margin-top:0;margin-bottom:0;">
<table id="table17" style="border-collapse:collapse;width:278px;" border="0" cellspacing="0" cellpadding="0">
<col style="width:107pt;" width="142"></col>
<col style="width:71pt;" width="94"></col>
<tbody>
<tr style="height:15pt;">
<td style="border:medium none;background:silver none repeat scroll 0;height:15pt;width:107pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="142" height="20">MALKODU</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:96px;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;">SATIS_SAYISI</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.CIO-MK000CAS54</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">7</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.BQ-MK000BNQ18</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">7</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-HD-280-PRO-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">11</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">FPA.ARW-AZ371ZZ</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">12</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">KKB.PH-66862</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">34</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">56</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">MU.ARZ-AR-342</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">56</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">NB.ASU-UN105ASU86</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">62</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-B</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">68</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">EV.ARN-HYDRA</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="96" align="right">74</td>
</tr>
</tbody>
</table>
<p>Bir sonraki sorguda ürürün satış sayısının satis sayisina göre sıralı  		olarak bir önceki ürünün satış sayısından farkı bulunmaktadır.</p>
<p>SQL&gt;select malkodu,satis_sayisi, satis_sayisi &#8211; <strong> LAG(satis_sayisi,1,0) over(order by satis_sayisi)</strong> as FARK from  		urunler;</p>
<table id="table18" style="border-collapse:collapse;width:959px;" border="0" cellspacing="0" cellpadding="0">
<col style="width:107pt;" width="142"></col>
<col style="width:71pt;" width="94"></col>
<col style="width:48pt;" span="2" width="64"></col>
<tbody>
<tr style="height:15pt;">
<td style="border:medium none;background:silver none repeat scroll 0;height:15pt;width:107pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="142" height="20">MALKODU</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:71pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="94">SATIS_SAYISI</td>
<td style="border:medium none;background:silver none repeat scroll 0;width:48pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="64">FARK</td>
<td style="border:medium none;width:655px;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.CIO-MK000CAS54</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;background:yellow none repeat scroll 0 0;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655">&lt;&#8212; Varsayılan değer 0 olduğundan ve bir önceki satır  				olmadığından fark (7-0=7) oluyor</td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">CM.BQ-MK000BNQ18</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">7</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">0</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-HD-280-PRO-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">11</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">4</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">FPA.ARW-AZ371ZZ</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">12</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">1</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">KKB.PH-66862</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">34</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">22</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-S</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">22</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">MU.ARZ-AR-342</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">56</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">0</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">NB.ASU-UN105ASU86</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">62</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">HP.SE-MX-560-B</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">68</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
<tr style="height:15pt;">
<td style="border:medium none;height:15pt;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" height="20">EV.ARN-HYDRA</td>
<td style="border:medium none;color:black;font-size:10pt;font-family:Arial,sans-serif;font-weight:400;font-style:normal;text-decoration:none;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">74</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" align="right">6</td>
<td style="border:medium none;color:black;font-size:11pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri,sans-serif;vertical-align:bottom;white-space:nowrap;padding-left:1px;padding-right:1px;padding-top:1px;" width="655"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="margin-top:0;margin-bottom:0;">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/suhanerol.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/suhanerol.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=11&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2008/07/28/oracle-analitik-fonksiyonlar/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>ORACLE DA CONTROLFILE VE ONLINE REDO LOG DOSYALARI OLMADAN COLD BACKUP VE ARCHIVE LOGLAR İLE KURTARMA(RECOVERY)</title>
		<link>http://suhanerol.wordpress.com/2008/03/20/oracle-da-controlfile-ve-online-redo-log-dosyalari-olmadan-cold-backup-ve-archive-loglar-ile-kurtarmarecovery/</link>
		<comments>http://suhanerol.wordpress.com/2008/03/20/oracle-da-controlfile-ve-online-redo-log-dosyalari-olmadan-cold-backup-ve-archive-loglar-ile-kurtarmarecovery/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 12:27:41 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Cold Backup]]></category>
		<category><![CDATA[Kurtarma]]></category>
		<category><![CDATA[ORA-01113]]></category>
		<category><![CDATA[Oracle Recovery]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=8</guid>
		<description><![CDATA[&#8220;Cold backup&#8221; ı alınan ve archive log dosyaları yedeklenen bir sistemin çökmesi ve erişilemez hale gelmesi durumunda veritabanı kurtarması nasıl yapılır? Bu durumda elimizde çalışan sisteme ait controlfile dosyası ve Online Redo Log dosyaları bulunmayacaktır. Elimizdeki Cold Backup ve archive log dosyalarını kullanarak da kurtarma işlemi yapılabilir. Bunun için izlenmesi gereken yol şudur: 1) &#8220;Cold [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=8&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a title="Cold Backup" href="http://suhanerol.wordpress.com/2008/03/20/oracleda-cold-backup-ile-yedekleme/">Cold backup</a>&#8221; ı alınan ve archive log dosyaları yedeklenen bir sistemin<br />
çökmesi ve erişilemez hale gelmesi durumunda veritabanı kurtarması nasıl<br />
yapılır? Bu durumda elimizde çalışan sisteme ait controlfile dosyası ve Online<br />
Redo Log dosyaları bulunmayacaktır. Elimizdeki Cold Backup ve archive log<br />
dosyalarını kullanarak da kurtarma işlemi yapılabilir. Bunun için izlenmesi<br />
gereken yol şudur:</p>
<p>1) &#8220;Cold Backup&#8221; ile alınan dosyalar (Datafile , controlfile, online redo log<br />
dosyaları) ve Archive Log dosyaları yeni sistemde ait oldukları klasörlere<br />
kopyalanır.</p>
<p>2) &#8220;oracle # sqlplus / as sysdba&#8221;  komutuyla sqlplus programı<br />
çalıştırılır.</p>
<p>3) SQL&gt; startup mount;      ile veritabanı &#8220;mount&#8221;<br />
modunda başlatılır.</p>
<p>4) RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;<br />
komutuyla kurtarma işlemi başlatılır. Bu komutta normal kurtarma işleminden<br />
farklı olarak &#8220;USING BACKUP CONTROLFILE&#8221; parametleri kullanılır. Çünkü elimizde<br />
çöken sisteme ait son controlfile dosyaları yoktur. Hangi datafile dosyasına<br />
hangi Archive Log dosyasının işleneceği bilinememektedir. Bu komut sayesinde<br />
hangi archive log dosyalarının kullanılacağının kararı datafile dosyalarının<br />
&#8220;header&#8221; bölümünde bulunan bilgiler kullanılarak karar verilir.</p>
<p>Komut çalışıtırıldığında aşağıdaki gibi bir sonuç verir.</p>
<p><span style="color:#858585;">ORA-00279: 347898987 değişikliği (03/20/2008 14:01:18<br />
içinde oluşturulan) thread 1 için gerekli</span></p>
<p><span style="color:#858585;">ORA-00289: öneri: /opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf</span></p>
<p><span style="color:#858585;">ORA-00280: 347898987 numaralı değişiklik (1 thread&#8217;i için), 2 numaralı sırasında</span></p>
<p><span style="color:#858585;">Günlüğü belirtin: {&lt;RET&gt;=önerilen | dosya adı | AUTO | CANCEL}</span></p>
<p>Bu aşamada sistem bize 4 farklı seçenek sunar.</p>
<p style="margin-top:0;margin-bottom:0;">a) ENTER tuşuna basarak önerdiği<br />
archive log dosyasını işler.</p>
<p style="margin-top:0;margin-bottom:0;">b) Hangi archive log dosyasının<br />
işleneceğini yazabiliriz.</p>
<p style="margin-top:0;margin-bottom:0;">c) AUTO yazıp enter a basarak<br />
sormadan sırasıyla bütün archive log dosyalarının işlenmesini sağlar.</p>
<p style="margin-top:0;margin-bottom:0;">d) CANCEL yazıp enter a basarak<br />
kurtarma işlemini bitirilmesini sağlar.</p>
<p>Bu komutlardan 3.sünü uygulayalım yani AUTO yazıp enter tuşuna basarak<br />
archive log dosyalarının işlenmesini başlatalım. Sistemde mevcut en son archive<br />
log dosyasına kadar bütün archive log dosyaları sisteme işlenir. En son dosyayı<br />
işledikten sonra aşağıdaki gibi bir hata verir.</p>
<p><span style="color:#858585;">ORA-00308: arşivlenmiş<br />
&#8216;/opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf&#8217;</span></p>
<p><span style="color:#858585;">günlüğü açılamaz</span></p>
<p><span style="color:#858585;">ORA-27037: dosya staüsü elde edilemiyor</span></p>
<p><span style="color:#858585;">Linux-x86_64 Error: 2: No such file or directory</span></p>
<p><span style="color:#858585;">Additional information: 3</span></p>
<p>Artık bütün archive log dosyaları işlenmiştir ve sıradaki archive log<br />
dosyasını bulamadığı için hata vermiştir.</p>
<p>5) Archive log dosyalarını işledikten sonra veritbanını &#8220;ALTER DATABASE OPEN<br />
RESETLOGS&#8221; komutuyla başlatırsak aşağıdaki gibi bir hata verir.</p>
<pre><span style="color:#858585;">ALTER DATABASE OPEN RESETLOGS

*ERROR at line 1:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: 'system01.dbf'</span></pre>
<p>Bu hatanın sebebi &#8220;RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; &#8220;<br />
komutunun archive log dosyalarını işleme işleminin CANCEL komutuyla bitirilmesi<br />
gerekliliğidir. Bu yüzden &#8220;ALTER DATABASE OPEN RESETLOGS&#8221; komutunu çalıştırmadan<br />
önce tekrar &#8220;RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; &#8221; komutunu<br />
çalıştırarak kurtarma işlemini başlatmamız ve komut olarak ta &#8220;CANCEL&#8221; komutunu<br />
vermemiz gerekir.</p>
<p>SQL&gt; RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;</p>
<p><span style="color:#858585;">ORA-00279: 347898987 değişikliği (03/20/2008 14:01:18<br />
içinde oluşturulan) thread 1 için gerekli</span></p>
<p><span style="color:#858585;">ORA-00289: öneri: /opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf</span></p>
<p><span style="color:#858585;">ORA-00280: 347898987 numaralı değişiklik (1 thread&#8217;i için), 2 numaralı sırasında</span></p>
<p><span style="color:#858585;">Günlüğü belirtin: {&lt;RET&gt;=önerilen | dosya adı | AUTO | CANCEL}</span></p>
<p>CANCEL</p>
<p>6) Kurtarma işlemi tamalanmıştır. veritabanının RESETLOG parametresi ile<br />
açılması gerekmektedir. Çünkü çöken sisteme ait son Online Redo Log dosyaları<br />
elimizde yoktur. &#8220;Cold Backup&#8221; tan gelen Online Redo Log dosyaları kurtarılmış<br />
veritabanıyla uyumsuzdur.</p>
<p>SQL&gt; ALTER DATABASE OPEN RESETLOGS;</p>
<p>Artık veritbanı kutarılmıştır. Burada dikkat edilmesi gereken bir husus da,<br />
çöken sistemden Online Redo Log dosyaları alınamadığından ve bu Online Redo Log<br />
dosyalarının içinde bulunan ve arşivlenmemiş işlemler olduğundan, bu<br />
arşivlenmemiş işlemler kaybedilmiş olacaktır. Online Redo Log dosyalarının<br />
boyutları bu yüzden önem kazanmaktadır. Büyük boyutlu olması &#8220;Log switch&#8221;<br />
işleminin ve Arşivleme işleminin daha az olmasını sağlarayarak performans artışı<br />
getirirken, Kurtarma durumlarında daha fazla bilginin kaybolmasına sebep<br />
olmaktadır. Bu yüzden Online Redo Log dosyalarının boyutlarının ayarlarken bu<br />
konuya da dikkat edilmesi gerekir.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/suhanerol.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/suhanerol.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=8&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2008/03/20/oracle-da-controlfile-ve-online-redo-log-dosyalari-olmadan-cold-backup-ve-archive-loglar-ile-kurtarmarecovery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>ORACLE&#8217;DA COLD BACKUP İLE YEDEKLEME</title>
		<link>http://suhanerol.wordpress.com/2008/03/20/oracleda-cold-backup-ile-yedekleme/</link>
		<comments>http://suhanerol.wordpress.com/2008/03/20/oracleda-cold-backup-ile-yedekleme/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 08:17:39 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ORACLE COLD BACKUP]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=6</guid>
		<description><![CDATA[&#8220;Cold Backup&#8221; taki amaç veritabanına ait bütün bilgilerin yedeklenerek daha sonra oluşabilecek hatalardan kurtartarma işlemi bir başlangıç noktası oluşturmaktır. Cold Backuptan sonra oluşan &#8220;Archive Log&#8221; dosyaları kullanılarak kurtarma işlemi yapılabilmektedir. Cold Backup alabilmek için veritabanının kapatılması gerekmektedir. Kapatma işlemi &#8220;ABORT&#8221; yöntemiyle yapılmamalıdır. Diğer kapatma yöntemlerinden herhangi biri kullanılabilir(NORMAL,IMMEDIATE,TRANSACTIONAL). Veritabanı kapatıldıktan sonra veritabanına ait dosyalar(datafiles, controlfiles [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=6&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Cold Backup&#8221; taki amaç veritabanına ait bütün bilgilerin yedeklenerek daha  sonra oluşabilecek hatalardan kurtartarma işlemi bir başlangıç noktası  oluşturmaktır. Cold Backuptan sonra oluşan &#8220;Archive Log&#8221; dosyaları kullanılarak  kurtarma işlemi yapılabilmektedir.</p>
<p>Cold Backup alabilmek için veritabanının kapatılması gerekmektedir. Kapatma  işlemi &#8220;ABORT&#8221; yöntemiyle yapılmamalıdır. Diğer kapatma yöntemlerinden herhangi  biri kullanılabilir(NORMAL,IMMEDIATE,TRANSACTIONAL).</p>
<p>Veritabanı kapatıldıktan sonra veritabanına ait dosyalar(datafiles,  controlfiles ve online redo logs) işletim sistemi komutlarıyla yedeklenir. Hangi  dosyaların yedekleneceği aşağıdaki sorgular veritabanı açıkken çalıştırılarak  öğrenilebilir.</p>
<p>Datafiles :   select name from v$datafile</p>
<p>Controlfiles : select name from v$controlfile</p>
<p>Online Redo Logs : select member from v$logfile</p>
<p>Yukarıdaki yedeklenmesi zorunlu olan dosylar haricinde , istenirse init.ora,  spfile, listener.ora,tnsnames.ora gibi daha sonradan da oluşturulabilecek  dosyalarda yedeklenebilir.</p>
<p>Yedekleme işlemini yapan bir örnek scripte aşağıdaki linkten erişilebilir.</p>
<p><a href="http://www.adp-gmbh.ch/ora/admin/backup_recovery/coldbackup_sh.html" title="http://www.adp-gmbh.ch/ora/admin/backup_recovery/coldbackup_sh.html" target="_blank">http://www.adp-gmbh.ch/ora/admin/backup_recovery/coldbackup_sh.html</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/suhanerol.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/suhanerol.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=6&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2008/03/20/oracleda-cold-backup-ile-yedekleme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>ORACLE DATA GUARD KAVRAMLAR KURULUM YÖNETİM -1-</title>
		<link>http://suhanerol.wordpress.com/2008/03/17/oracle-data-guard-kavramlarkurulumyonetim/</link>
		<comments>http://suhanerol.wordpress.com/2008/03/17/oracle-data-guard-kavramlarkurulumyonetim/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 21:09:34 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Data Guard]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=4</guid>
		<description><![CDATA[Oracle Data Guard , Oracle&#8217;da yüksek erişilebilirlik ve beklenmeyen sistem hataları neticesinde oluşabilecek veri kayıplarını en aza hatta sıfıra indiren oracle veritabanı ile bütünleşik bir veri koruma eklentisidir. Oracle enterprise sürümü gerektirir.Bütünleşiktir, ek kurulum gerektirmez. Veri tabanı hizmeti veren birincil sisteme (Primary) ek olarak bir veya daha fazla yedek (Secondary) sistem veya sistemlerin eş zamanlı [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=4&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle Data Guard , Oracle&#8217;da yüksek erişilebilirlik ve beklenmeyen sistem hataları neticesinde oluşabilecek veri kayıplarını en aza hatta sıfıra indiren oracle veritabanı ile bütünleşik bir veri koruma eklentisidir. Oracle enterprise sürümü gerektirir.Bütünleşiktir, ek kurulum gerektirmez. Veri tabanı hizmeti veren birincil sisteme (Primary) ek olarak bir veya daha fazla yedek (Secondary) sistem veya sistemlerin eş zamanlı veya eş zamanlı olmayan şekilde eşleştirilmesi prensibiyle çalışır. Çalışma prensibi , birincil veritabanında oluşan arşivlenmiş geridönüş loglarının (Archived Redo Logs) ikincil veritabanına aktarılması ve bu logların iki farklı yöntemle ikincil veritabına işlenmesine dayanır. Logların ikincil veritabanına işlenmesi yöntemi eşitlemenin fiziksel(Physical) mi mantıksal(Logical) mı olduğunu belirler. bu iki farklı<br />
işletim temel farklılıklar getirir. Sistemler birbirleriyle &#8220;Oracle Net&#8221; ile haberleşirler. Sistemler aynı ortamda veya uzak mesefalerde olabilirler. Sistemlerin yerleşimleri ile ilgili bir kısıtlama yoktur.</p>
<p><span id="more-4"></span></p>
<p><strong>Fiziksel Bekleme Veritabanı (Physical Standby Database) : </strong>Birincil veritabanın birebir kopyasının ikincil veritabanında tutulmasıdır. İkincil veritabanı birincil veritabanın birebir kopyası olarak hazırlanır, birincil veritabanında oluşan arşiv geridönüşüm loglarının ikincil veritabanına uygulanması ile eşitlik sağlanmış olur. Fiziksel Bekleme Veritabanları açık veritabanları değillerdir. Startup Mount komutu ile açılırlar. birincil veritabanından gelen loglar Veritabanı Kurtarma(Database Recover) mantığıyla ikincil veritabanına işlenir. İstenirse ikincil vertabanı salt-okunur olarak açılabilir, fakat bu süre zarfında loglar işlenmez, biriktirilir. Tekrar işleme moduna alınarak logların işlenmesine devam edilebilir. Fiziksel Bekleme Veritabanları çoğunlukla felaket durumda kurtarma(disaster recovery) amaçlı olarak kullanılırlar. Felaket durumunda birincil veritabanının yerine geçecek olan veritabanı budur. böylece veri kaybı olmadan ve süre kaybetmeden kurtarım yapılmış olur.</p>
<p><strong>Mantıksal Bekleme Veritabanı (Logical Standby Database) :</strong> Birincil veritabanının mantıksal olarak bir kopyasıdır, yani tablolar ve indexler gibi nesneler aynıdır fakat datafile dosyalarının düzeni farklılık gösterebilir. Birincil veritabanından gelen loglar SQL cümleciklerine çevrilerek işlenirler. Veritabanı açıktır, yani veritabanı üzerinde raporlama işlemleri yapılabilmektedir.Mantıksal veritabanına ait birtakım kısıtlamalar vardır. Bazı veri tipleri desteklenmemetedir. Ayrıca sistemdeki eşleşecek tabloların birincil anahtar indeksinin olması gerekmektedir. Oluşturulan SQL cümlecikler bu birincil anahtarlar kullanılarak işlenmektedir. Mantıksal veritabanları hem yedekleme için kullanılırlar hem de açık veritabanı oldukları için raporlama gibi işlemlerde de kullanılırlar. Böylece birincil veritabanının üzerinden yük alınarak performans artışı sağlanmış olur.</p>
<p>Oracle Data Guard 3 farklı koruma seviyesi sunar. Bunlar :</p>
<ul>
<li><strong>Maksimum Koruma  :</strong> Bu seviyede hiçbir veri kaybı olmaması sağlanır. Birincil veritabanında oluşan redo log dosyası eş zamanlı olarak en ez bir ikincil veritabanına kopyalanıp işlenemelidir. Eğer bir sorun olur da ikincil veritabanına işlenemez ise birincil veritabanı kapatılır.</li>
<li><strong>Maksimum Kullanılabilirlik : </strong>Bu seviye de maksimum korumada olduğu gibi sıfır veri kaybı hedeflenir, fakat hata durumunda veritabanı kapatılmaz, commit işlemi yapılmaz. hata düzelene kadar maksimum performans<br />
seviyesine geçilir. böylece veritabanının devamlılığı sağlanır. Hata düzeldikten sonra tekrar maksimum kullanılabilir seviye geçilir.</li>
<li><strong>Maksimum Performans : </strong>Bu seviye varsayılan seviyedir ve birincil veritabanın performansında azalma olmadan koruma sağlar. Birincil veritabanında işlem commit edilir ve online redo log dosyasına yazılır. Bu  redo loglar eşzamansız olarak ikincil veritabanına aktarılır ve işlenir. Log dosyalarının aktarılmasında sorun olursa sorun düzeldikten sonra kalınan yerden işleme devam edilir.</li>
</ul>
<p><strong>Donanımsal ve Yazılımsal gereksinimler : </strong>Sistemler aynı platformlara sahip olmalıdırlar. Örneğin 32-bit intel Linux sisteme sahip olabilirler. Donanımsal olarak bir kısıt yoktur. Farklı sayıda işlemci , ram disk birimlerinden oluşabilirler.     Oracle veritabının enterprise sürüm olması ve sürümlerinin aynı olması gerekmektedir. Standart sürümde çalıştıralamamaktadır. Birincil Veritbanının ARCHIVELOG modunda çalışması gerekmektedir. Bütün sistemlerde COMPATIBLE parametrelerinin aynı olması gerekmektedir.</p>
<ul>
<li><strong><span style="font-size:x-small;">Fiziksel Bekleme Veritabanının Oluşturulması : </span><br />
</strong><span style="font-size:x-small;">Fiziksel bekleme vertabanı oluşturulmadan önce birincil veritabanında birtakım ayarlar ve kontrollerin yapılması gerekir. Bunlar :</span></p>
<ul>
<li><strong><span style="font-size:x-small;">Force Logging ayarının açılması : </span></strong><br />
<span style="font-size:x-small;">Aşağıdaki komutla birlikte veritabanın geçici 	Tablespace&#8217;lerin haricindeki tüm aktivitelerin loglanması sağlanır. Bu 	komuttan sonra NOLOGGING olarak ayarlanmış nesnelerde loglanmaya 	başlanır. Böylelikle bütün aktivitelerin log dosyalarına yazılması ve 	ikincil veritabanlarına uygulanması sağlanmış olur.</span></li>
</ul>
<p><span style="font-size:x-small;"><br />
SQL &gt; Alter Database force logging;</span></p>
<ul>
<li><strong><span style="font-size:x-small;">Standby Redo Log oluşturulması : </span></strong><br />
<span style="font-size:x-small;">Maksimum Koruma ve Maksimum Kullanılabilirlik 	seviyelerinin kullanılabilmesi için Standby Redo Logların oluşturulması 	gerekmektedir. Maksimum performans seviyesinde zorunlu değil fakat 	kullanılması performans ve koruma açısından fayda sağlar. Standby Redo 	Log dosyaları bekleme modundanki veritabanlarında çalışırlar. Bekleme<br />
modunda çalışma için dizayn edildiklerinden online redo loglara veya<br />
arşinvenmiş loglara göre daha fazla koruma sağlarlar. Oluşturulacak olan<br />
Standby Redo Logların boyutlarının mevcut Online Redo Logların<br />
boyutlarıyla aynı olması gerekmektedir. Aşağıda bir Standby Redo Log<br />
dosylarının oluştrulması gösterilmiştir.</span><span style="font-size:x-small;">SQL&gt;<br />
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10<br />
(&#8216;/oracle/dbs/log1c.rdo&#8217;,'/oracle/dbs/log2c.rdo&#8217;) SIZE 500M; </span></li>
</ul>
<p><span style="font-size:x-small;"> Standy Redo Loglar ikincil veritabanlarında çalışırlar. Birincil veritabınında oluşturulması şartı yoktur. Fakat birincil ve ikincil veritabanlarının yer değiştirilmesi(switchover) işlemlerinden sonra düzgün çalışılabilmesi için birincil vertabanında da aynı şekilde Standby Redo Logların oluşturulması yararlı olacaktır. Aşağıdaki sorgu sistemdeki Standby<br />
Redo Logların durumu gösterir.</span></p>
<p><span style="font-size:x-small;"> SQL&gt; SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;</span></p>
<pre>	GROUP#     THREAD#    SEQUENCE#  ARC STATUS

 ---------- ---------- ---------- --- ----------

          3          1         16 NO  ACTIVE

          4          0          0 YES UNASSIGNED

          5          0          0 YES UNASSIGNED</pre>
<ul>
<li><span style="font-size:x-small;"><strong>Birincil Veritabanında Başlangıç Parametrelerinin<br />
Oluşturulması : </strong>Birincil veritabanında oluşan log dosyalarının ikincil veritabanlarına aktaramıyla ilgili parametreler oluşturulacaktır. Bunun yanında zorunlu olmasa da , daha sonra<br />
veritabanlarının rol değiştirmesi (switchover,failover işlemleriyle) gerekli olan , birincil veritabanının ikincil veritabanı olarak çalışması ile ilgili ayarlar da yapılacaktır. Aşağıdaki hem birincil hem de ikincil veritabanlarına ait ayırıcı bilgiler bulunmaktadır. Bu bilgiler parametrelerde     kullanılacatır. </span></li>
</ul>
<table id="table1" border="1" width="451">
<tbody>
<tr>
<td><span style="font-size:x-small;">Veritabanı</span></td>
<td width="176"><span style="font-size:x-small;">DB_UNIQUE_NAME*</span></td>
<td width="167"><span style="font-size:x-small;">Oracle Net Service Name</span></td>
</tr>
<tr>
<td><span style="font-size:x-small;">Birincil(Primary)</span></td>
<td width="176"><span style="font-size:x-small;">istanbul</span></td>
<td width="167"><span style="font-size:x-small;">istanbul</span></td>
</tr>
<tr>
<td><span style="font-size:x-small;">İkincil(Secondary)</span></td>
<td width="176"><span style="font-size:x-small;">ankara</span></td>
<td width="167"><span style="font-size:x-small;">ankara</span></td>
</tr>
</tbody>
</table>
<p><span style="font-size:x-small;">* DB_UNIQUE_NAME parametre değişkenin her veritabanı için farklı<br />
olan, log transfer ayarlarında kullanılan bir değişkendir. 		Veritabanlarının log transferi seviyesinde birbirlerinden 		ayrılmalarını sağlar.</span></p>
<p><span style="font-size:x-small;">Aşağıda birincil veritabanına ait bir başlangıç parametleri 		gösterilmektedir. </span></p>
<p><span style="font-size:x-small;">DB_NAME=istanbul<br />
DB_UNIQUE_NAME=istanbul<br />
LOG_ARCHIVE_CONFIG=&#8217;DG_CONFIG=(istanbul,ankara)&#8217;<br />
CONTROL_FILES=&#8217;/opt/oracle/product/10gR2/dbs/control1.ctl&#8217;,<br />
&#8216;/opt/oracle/product/10gR2/dbs/control2.ctl&#8217;<br />
LOG_ARCHIVE_DEST_1=<br />
&#8216;LOCATION=/opt/oracle/product/10gR2/archive/<br />
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)<br />
DB_UNIQUE_NAME=istanbul&#8217;<br />
LOG_ARCHIVE_DEST_2=<br />
&#8216;SERVICE=ankara LGWR ASYNC<br />
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)<br />
DB_UNIQUE_NAME=ankara&#8217;<br />
LOG_ARCHIVE_DEST_STATE_1=ENABLE<br />
LOG_ARCHIVE_DEST_STATE_2=ENABLE<br />
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE<br />
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc<br />
LOG_ARCHIVE_MAX_PROCESSES=30<br />
</span></p>
<p><span style="font-size:x-small;">Yukarıdaki parametrelerin oracle başlangıç paremetre  dosyasına yazılması gerekir. Öncelikle mevcut sistemdeki SPFILE bir dosyaya yazılır. Oluşturulan bu dosyaya yukarıdaki parametreler<br />
eklenir(Control_files parametresi zaten mevcuttur.) ve bu dosya kullanılarak yeni SPFILE oluşturulur.</span></li>
</ul>
<div>
<table id="table2" border="0" width="71%">
<tbody>
<tr>
<td><strong><span style="font-size:x-small;">SPFILE düzenlemesi</span></strong> <span style="font-size:x-small;">istanbul # sqlplus / as sysdba </span></p>
<p><span style="font-size:x-small;">SQL*Plus: Release 10.2.0.1.0 &#8211; Production on Sal<br />
Mar 18 14:58:19 2008</span></p>
<p><span style="font-size:x-small;">Copyright (c) 1982, 2005, Oracle. All rights reserved.</span></p>
<p><span style="font-size:x-small;">Bağlantı:</span></p>
<p><span style="font-size:x-small;">Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 &#8211; 64bit<br />
Production</span></p>
<p><span style="font-size:x-small;">With the Partitioning, OLAP and Data Mining options</span></p>
<p><span style="font-size:x-small;">SQL&gt;</span></p>
<p><span style="font-size:x-small;">SQL&gt; shutdown immediate;</span></p>
<p><span style="font-size:x-small;">Veritabanı kapatıldı.</span></p>
<p><span style="font-size:x-small;">Veritabanı kullanıma kapatıldı.</span></p>
<p><span style="font-size:x-small;">ORACLE anı kapatıldı.</span></p>
<p><span style="font-size:x-small;">SQL &gt; create pfile=&#8217;/tmp/pfile.txt&#8217; from spfile;</span></p>
<p><span style="font-size:x-small;">Dosya yaratıldı.</span></p>
<p><span style="font-size:x-small;">* oluşturulan /tmp/pfile.txt dosyasında gerekli<br />
düzenlemeler yapılır.</span></p>
<p><span style="font-size:x-small;">SQL&gt; create spfile from pfile=&#8217;/tmp/pfile.txt&#8217;;</span></p>
<p><span style="font-size:x-small;">Dosya yaratıldı.</span></td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-size:x-small;"><br />
Yukarıdaki parametrelerde LOG_ARCHIVE_DEST_1 parametresi sistemdeki online redo logların nereye arşivleneceğini belirtiyor. LOG_ARCHIVE_DEST_2 ise ikincil veritabanı hakkında bilgiler içeriyor.&#8221;SERVICE=ankara&#8221;  parametresi logların ankara veritabanına aktarılacağını,&#8221;LGWR&#8221; aktarma için LGWR yönteminin kullanılacağını (ARCH da olabilir di) ,&#8221;ASYNC&#8221; ise aktarmanın eşzamansız olduğunu belirtiyor. Bu parametreler daha önce bahsettiğimiz 3 farklı koruma seviyesinden hangisinin kullanılacağını belirler.<br />
</span></p>
<ul>
<li><strong><span style="font-size:x-small;">Birincil Veritabanınında Log Arşivlemenin Ayarlanması : </span></strong><span style="font-size:x-small;">Eğer birincil veritabanında log arşivleme etkin değilse aşağıdaki komutlar ile etkin hale getirilmelidir. </span></li>
</ul>
<p><span style="font-size:x-small;"><br />
SQL&gt; SHUTDOWN IMMEDIATE;</span></p>
<p><span style="font-size:x-small;">SQL&gt; STARTUP  MOUNT;</span></p>
<p><span style="font-size:x-small;">SQL&gt; ALTER DATABASE ARCHIVELOG;</span></p>
<p><span style="font-size:x-small;">SQL&gt; ALTER DATABASE OPEN;</span></p>
<p><span style="font-size:x-small;"> Artık birincil veritabanı hazır hale geldi. bundan sonraki ilk işlem birincil veritabanına ait bütün datafile dosyalarının , Online Redo Logları ve oluşturulan Standby Redo Logların<br />
ikincil veritabanına kopyalanmasıdır. dosyalar ikincil veritabanına kopyalandıktan sonra birincil veritabanından controlfile ve initfile bilgileri aşağıdaki sorgularla alınır ve ikincil veritabanına işlenir.<br />
</span></p>
<blockquote>
<ul>
<li><strong><span style="font-size:x-small;">İkincil Veritabanı için 		Controlfile Dosyasının oluşturulması : </span></strong><span style="font-size:x-small;"> İkincil veritbanına birincil veritabanına ait controlfile 		dosyalarının alınıp birebir kopyalanması hatalıdır. Bekleme 		modundaki ikincil veritabanı için önce birincil veritabanında 		&#8220;Standby Controlfile&#8221; oluşturulmalıdır. </span></li>
</ul>
<blockquote>
<blockquote><p><span style="font-size:x-small;">SQL &gt; STARTUP MOUNT;</span></p>
<p><span style="font-size:x-small;">SQL&gt; ALTER DATABASE CREATE STANDBY CONTROLFILE 			AS &#8216;/tmp/ankara.ctl&#8217;;</span></p></blockquote>
<p><span style="font-size:x-small;">Oluşturulan bu dosya ikincil veritabanına 		kopyalanmalıdır. Kopyalama SCP ve FTP kullanılarak yapılabilir. </span></p>
<p><span style="font-size:x-small;">ikincil veritabanın da kontrol dosyalarının &#8216;/opt/oracle/product/10gR2/dbs/control1.ctl&#8217; ve<br />
&#8216;/opt/oracle/product/10gR2/dbs/control2.ctl&#8217; olduğunu, istanbul<br />
bilgisayarının ip adresinin ankara bilgisayarındaki /etc/hosts<br />
dosyasına tanımlı olduğunu  varsayarsak aşağıdaki scp komutları<br />
ile kontrol dosyları kopyalanmış olur.</span></p>
<p><span style="font-size:x-small;">ankara # scp istanbul:/tmp/ankara.ctl<br />
/opt/oracle/product/10gR2/dbs/control1.ctl;</span></p>
<p><span style="font-size:x-small;">ankara # scp istanbul:/tmp/ankara.ctl 		/opt/oracle/product/10gR2/dbs/control2.ctl;</span></p></blockquote>
</blockquote>
<blockquote>
<ul>
<li><strong><span style="font-size:x-small;">İkincil Veritabanında Başlangıç<br />
Parametrelerinin Oluşturulması : </span></strong><span style="font-size:x-small;">İkincil<br />
veritabanının başlangıç parametreleri birincil veritabanına göre<br />
biraz farklılık gösterir. </span></li>
</ul>
<blockquote>
<blockquote><p><span style="font-size:x-small;">DB_NAME=<strong>ankara</strong><br />
DB_UNIQUE_NAME=<strong>ankara</strong><br />
LOG_ARCHIVE_CONFIG=&#8217;DG_CONFIG=(istanbul,ankara)&#8217;<br />
CONTROL_FILES=&#8217;/opt/oracle/product/10gR2/dbs/control1.ctl&#8217;,<br />
&#8216;/opt/oracle/product/10gR2/dbs/control2.ctl&#8217;<br />
LOG_ARCHIVE_DEST_1=</span></p>
<p><span style="font-size:x-small;">&#8216;LOCATION=/opt/oracle/product/10gR2/archive/</span></p>
<p><span style="font-size:x-small;">VALID_FOR=(ALL_LOGFILES,ALL_ROLES)</span></p>
<p><span style="font-size:x-small;">DB_UNIQUE_NAME=<strong>ankara</strong>&#8216;<br />
LOG_ARCHIVE_DEST_2=</span></p>
<p><span style="font-size:x-small;">&#8216;SERVICE=<strong>istanbul</strong> LGWR ASYNC</span></p>
<p><span style="font-size:x-small;">VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)</span></p>
<p><span style="font-size:x-small;">DB_UNIQUE_NAME=<strong>istanbul</strong>&#8216;</span></p>
<p><span style="font-size:x-small;">LOG_ARCHIVE_DEST_STATE_1=ENABLE<br />
LOG_ARCHIVE_DEST_STATE_2=ENABLE<br />
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE<br />
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc<br />
LOG_ARCHIVE_MAX_PROCESSES=30<br />
</span></p></blockquote>
<p><span style="font-size:x-small;">Buradaki LOG_ARCHIVE_DEST_1 ve LOG_ARCHIVE_DEST_2<br />
ikincil veritabanı birincil veritabanına çevrilirse çalışacaktır.<br />
İkincil veritabanında bu parametreler çalıştırılmaz. </span></p>
<p><span style="font-size:x-small;">Bu ayarlar yapıldıktan ve spfile dosyası yukarıda<br />
anlatıldığı gibi oluşturulur.</span></p>
<p><span style="font-size:x-small;">Veritabanları başlatılmadan önce Oracle Net<br />
ayarlarının yapılması gerekmektedir. aşağıda birincil ve ikincil<br />
veritabanına ait TNSNAMES.ora dosyası vardır.</span></p>
<table id="table3" border="1" width="514">
<tbody>
<tr>
<td><span style="font-size:x-small;">ankara =(DESCRIPTION =(ADDRESS_LIST<br />
=(ADDRESS = (PROTOCOL = TCP)(HOST = ankara)(PORT =<br />
1521)))(CONNECT_DATA =(SERVICE_NAME = FINANS)))</span></p>
<p><span style="font-size:x-small;">istanbul =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL<br />
= TCP)(HOST = istanbul)(PORT = 1521)))(CONNECT_DATA<br />
=(SERVICE_NAME = FINANS)))</span></td>
</tr>
</tbody>
</table>
<p><span style="font-size:x-small;">işletim sisteminde her iki bilgisayarda<br />
ping ankara    ve ping istanbul<br />
komutlarının başarılı olması gerekmektedir. Başarılı değil ise linux<br />
sistemlerde /etc/hosts dosyasında gerekli tanımların yapılması<br />
gerekmektedir.</span></p>
<p><span style="font-size:x-small;">Artık her iki veritabanı başlatılabilir. Birincil<br />
veritabanı  ALTER DATABASE OPEN; komutuyla açılarak kullanıma<br />
başlanabilir. daha sonra listener hizmetinin açılması gerekir.<br />
</span></p>
<p><span style="font-size:x-small;">istanbul # lsnctrl start;</span></p>
<p><span style="font-size:x-small;">İkincil veritabanı ise STARTUP MOUNT;<br />
komutuyla açılmalıdır. Daha sonra gelen log dosyalarının işlenmesini 		sağlamak için aşağıdaki komut çalıştırılır.</span></p>
<p><span style="font-size:x-small;">SQL&gt; ALTER DATABASE RECOVER MANAGED STANDBY<br />
DATABASE DISCONNECT FROM SESSION;</span></p>
<p>Artık yedekleme işlemi başlamış durumdadır.</p>
<p>birincil veritabanında</p>
<p>SQL&gt; alter system switch logfile;</p>
<p>Komutu ile bir arşiv log dosyası oluşturulur ve bu dosyanın<br />
ikincil veritabanına ulaşıp ulaşmadığı ve işlenip işlenmediği<br />
aşağıdaki komutla test edilebilir.</p>
<p>İkincil veritabanında :</p>
<p>SQL&gt; SQL&gt; SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY<br />
SEQUENCE#;</p>
<pre>SEQUENCE# APP

--------- ---

        8 YES

        9 YES

       10 YES

       11 YES</pre>
<p><span style="font-size:x-small;">Birincil veritabanında aşağıdaki sorgu<br />
çalıştırılarak sistemin işleyip işlemediği, var ise hatanın sebebi<br />
görülebilir.</span></p>
<p><span style="font-size:x-small;">SELECT * FROM V$ARCHIVE_DEST_STATUS WHERE STATUS<br />
&lt;&gt; &#8216;DEFERRED&#8217; AND STATUS &lt;&gt; &#8216;INACTIVE&#8217;;</span></p></blockquote>
</blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/suhanerol.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/suhanerol.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=4&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2008/03/17/oracle-data-guard-kavramlarkurulumyonetim/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle DRCP (Database Resident Connection Pooling) ile PHP için Connection Pooling</title>
		<link>http://suhanerol.wordpress.com/2008/03/17/oracle-drcp-database-resident-connection-pooling-ile-php-icin-connection-pooling/</link>
		<comments>http://suhanerol.wordpress.com/2008/03/17/oracle-drcp-database-resident-connection-pooling-ile-php-icin-connection-pooling/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 14:55:48 +0000</pubDate>
		<dc:creator>suhanerol</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[oracle DRCP PHP connection pooling]]></category>

		<guid isPermaLink="false">http://suhanerol.wordpress.com/?p=3</guid>
		<description><![CDATA[Oracle 11G ile birlikte gelen yeni özelliklerden biri de DRCP (Database Resident Connection Pooling) dir. Klasik 3 katmanlı mimarinin avantajlarından biri olan connection pooling(bağlantı havuzu) özelliğinin PHP gibi &#8220;Çalış ve sonunda bütün kaynakları kapat&#8221; mantığı ile çalışan betik lisanlarında bulunmaması veya 3ncü parti yazılımlarla giderilmeye çalışılsa da yeterli ve düzgün çalışır olmaması sorunu PHP gibi [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=3&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle 11G ile birlikte gelen yeni özelliklerden biri de DRCP (Database Resident Connection Pooling) dir. Klasik 3 katmanlı mimarinin avantajlarından biri olan connection pooling(bağlantı havuzu) özelliğinin PHP gibi &#8220;Çalış ve sonunda bütün kaynakları kapat&#8221; mantığı ile çalışan betik lisanlarında bulunmaması veya 3ncü parti yazılımlarla giderilmeye çalışılsa da yeterli ve düzgün çalışır olmaması sorunu PHP gibi lisanların büyük hacimli projelerde tercih edilmemesine sebep olmaktadır. Bir uygulamanın en maliyetli kısmı veritabanına bağlantı ve yeni bir oturum açılması bölümüdür. Java gibi üst düzey uygulama geliştirme ortamları &#8220;Hibernate&#8221; gibi uygulama katmalarının &#8220;Connection Pooling&#8221; özellikleriyle bu sorunu çözmüşlerdir. DRCP ile birlikte Oracle 11g&#8217;de bu sorunun çözümü amaçlanmıştır.</p>
<p>DRCP nin kullanılması için Veritabanı ve Uygulama Katmanlarında yapılması gereken değişiklikler şunlardır :</p>
<ol>
<li><span style="font-weight:bold;">Veritabanı Katmanı :</span></li>
</ol>
<p><span style="font-weight:bold;">Pool(Havuz) Özelliğinin Kullanıma açılması ve Ayarlanması :</span> DRCP basit bir kullanıma sahip olan API ile yönetilebilmektedir. Her 11g vertabanı anının (instance) varsayılan bir havuzu mevcuttur. Bu havuz aşağıdaki örnekteki gibi ayarlanabilmektedir.</p>
<table id="table1" bgcolor="#e9e9e9" border="0" width="100%">
<tr>
<td><font color="#000080">SQL&gt;execute<br />
dbms_connection_pool.configure_pool(null, minsize=&gt;10,<br />
maxsize=&gt;100,<br />
inactivity_timeout=&gt;300,<br />
max_think_time=&gt;600, …);</font></td>
</tr>
</table>
<p>Yukarıdaki komut ile birlikte varsayılan ayarların değiştirilmesi sağlanabilir. bu komut kullanılmaz ise varsayılan ayarlar geçerli olacaktır.</p>
<p>Aşağıdaki komut ile &#8220;Havuz&#8221; özelliği başlatılır ve istemciler bu özellikten yararlanmaya başlamaları sağlanmış olur.</p>
<table id="table2" bgcolor="#e9e9e9" border="0" width="100%">
<tr>
<td><font color="#000080">SQL&gt;execute dbms_connection_pool.start_pool; </font></td>
</tr>
</table>
<p>Yukarıda komut çalıştırıldıktan sonra , veritabanı her açılışında bu özellik ile birlikte açılır. eğer bu özelliğin kapatılması istenirse aşağıdaki komut çalıştırılmalıdır.</p>
<table id="table3" bgcolor="#e9e9e9" border="0" width="100%">
<tr>
<td><font color="#000080">SQL&gt;execute dbms_connection_pool.stop_pool; </font></td>
</tr>
</table>
<p>2. <b>Uygulama Katmanı :</b></p>
<p><b>Uygulama bağlantılarının DRCP ye yönlendirilmesi : </b></p>
<p>Bağlantı cümleciklerinde SERVER=POOLED kullanırak DRCP özelliğinin kullanılmak istendiği belirtilir.</p>
<ul></ul>
<table id="table4" bgcolor="#e9e9e9" border="0" width="100%">
<tr>
<td><font color="#000080">dbserver.deneme.com:1521/finans:POOLED</font><font color="#000080">Yada</font><font color="#000080">(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=dbserver.deneme.com)</font><font color="#000080">(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=finans)</font><font color="#000080">(SERVER=POOLED))) </font></td>
</tr>
</table>
<p>Bu düzenlemelerden sonra PHP veritabanı bağlantı istekleri Oracle 11G tarafından yönetilen bir havuz tarafından sağlanacak ve otomatik olarak yönetilecektir. Oracle 11G nin sağladığı bu özellik sayesinde PHP gibi betik lisanlarının yüksek hacimli projelerde kullanılabilmesinin yolu açılmış olmaktadır.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/suhanerol.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/suhanerol.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/suhanerol.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/suhanerol.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/suhanerol.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=suhanerol.wordpress.com&amp;blog=1687196&amp;post=3&amp;subd=suhanerol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://suhanerol.wordpress.com/2008/03/17/oracle-drcp-database-resident-connection-pooling-ile-php-icin-connection-pooling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">suhanerol</media:title>
		</media:content>
	</item>
	</channel>
</rss>
