<?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>اوراکل و من</title>
	<atom:link href="http://oraclevaman.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraclevaman.wordpress.com</link>
	<description>یه وبلاگ دیگه در ارتباط با بانک اطلاعاتی اوراکل</description>
	<lastBuildDate>Sat, 12 Jul 2008 13:18:47 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='oraclevaman.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>اوراکل و من</title>
		<link>http://oraclevaman.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://oraclevaman.wordpress.com/osd.xml" title="اوراکل و من" />
	<atom:link rel='hub' href='http://oraclevaman.wordpress.com/?pushpress=hub'/>
		<item>
		<title>نصب Oracle 9i روی لینوکس Fedora Core 3</title>
		<link>http://oraclevaman.wordpress.com/2008/06/28/installing_oracle_9i/</link>
		<comments>http://oraclevaman.wordpress.com/2008/06/28/installing_oracle_9i/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 11:45:14 +0000</pubDate>
		<dc:creator>رامین</dc:creator>
				<category><![CDATA[درس دوم]]></category>

		<guid isPermaLink="false">http://oraclevaman.wordpress.com/2008/06/28/%d9%86%d8%b5%d8%a8-oracle-9i-%d8%b1%d9%88%db%8c-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3-fedora-core-3/</guid>
		<description><![CDATA[برای نصب Oracle 9i روی لینوکس (نسخه لینوکس من Fedora Core 3 بود) به ترتیب زیر عمل می کنیم: 1- سی دی های اوراکل 9i را از رو سایت اوراکل دانلود کنید. دانلود سی دی های اوراکل نیازی به License ندارد. اما دانلود نرم افزار از سایت اوراکل روی IPهای ایران معمولاً با مشکل همراه [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=33&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>برای نصب Oracle 9i روی لینوکس (نسخه لینوکس من Fedora Core 3 بود) به ترتیب زیر عمل می کنیم:</p>
<p>1- سی دی های اوراکل 9i را از رو <a href="http://www.oracle.com/technology/software/products/oracle9i/index.html" target="_blank">سایت اوراکل</a> دانلود کنید. دانلود سی دی های اوراکل نیازی به License ندارد. اما دانلود نرم افزار از سایت اوراکل روی IPهای ایران معمولاً با مشکل همراه است. در هر صورت نسخه ای که دست من رسید، شامل سه سی دی بود. بر روی سی دی اول یک اسکریپت به نام آن runInstaller وجود دارد. برنامه نصاب اوراکل تحت جاوا است. برای نصب Oracle 9i R2 تحت لینوکس نیازی به نصب JDK نیست، چراکه JDK به همراه برنامه نصاب عرضه می شود.</p>
<p><span id="more-33"></span>
<p>2- یک گروه با نام dba، یک گروه با نام oinstall و یک کاربر به نام oracle را اضافه کنید که در دو گروه dba و oinstall عضو باشد:</p>
<p dir="ltr" align="left">su &#8211; root <br />groupadd dba <br />groupadd oinstall <br />useradd -c &#8220;Oracle software owner&#8221; -g oinstall -G dba oracle <br />passwd oracle </p>
<p align="right">3- دایرکتوریها و مسیرهای نصب اوراکل را ایجاد کنید.</p>
<p dir="ltr" align="left">su &#8211; root <br />mkdir -p /app/oracle/product/9.2.0 <br />chown -R oracle:oinstall /app <br />mkdir /var/opt/oracle <br />chown oracle:dba /var/opt/oracle <br />chmod 755 /var/opt/oracle </p>
</p>
<p align="right">مطمئن شوید که در مسیری که اوراکل را نصب می کنید، حداقل 2 گیگابایت فضای خالی وجود دارد. توجه کنید که 2 گیگا بایت حداقل فضای لازم برای نصب اوراکل است. شما باید، به عنوان DBA، تخمینی از میزان فضای مورد نیاز خود (حداقل برای آینده نزدیک) داشته باشید و مسیر نصب را روی دیسکی انتخاب کنید که به میزان کافی فضای خالی داشته باشد.</p>
<p align="right">4- تنظیم سایز سگمنت در Shared Memory. قبل از آغاز نصب پارامتر shmmax را از مسیر زیر چک کنید:</p>
<p dir="ltr" align="left">cat /proc/sys/kernel/shmmax</p>
<p align="right">در صورتیکه مقدار shmmax کمتر از 1,072,741,824 (یک گیگا بایت) بود، آنرا اصلاح کنید:</p>
<p dir="ltr" align="left">echo `expr 1024 \* 1024 \* 1024` &gt; /proc/sys/kernel/shmmax</p>
<p align="right">ساختار Shared Memory در اوراکل بسیار مورد استفاده واقع می شود (برای مثال توسط SGA). استفاده از Shared Memory سریعترین راه در سیستم عاملهای Linux و Unix برای ارتباط بین پروسسهاست (Inter Process Communication یا به اختصار IPC) که در آن سربار Kernel وجود ندارد. در ساختار Shared Memory نیازی به کپی کردن دیتا از فضای حافظه یک پروسس به فضای حافظه پروسس دیگر نیست. برای دیدن کلیه پارامترهای مربوط به Shared Memory می توانید با cat کردن متغیرها از مسیر /proc/sys/kernel عمل کنید و یا از دستور ipcs -lm استفاده کنید. پارامتر shmmax که در بالا آنرا تغییر دادیم، بیانگرسایز بزرگترین segment ممکن در Shared Memory است. در یک لینوکس 32 بیتی، حداکثر سایز ممکن برای یک Shared Memory Segment برابر است با 4 گیگابایت. کاری که ما در بالا انجام دادیم، آن بود که به سایز بزرگترین Shared Memory Segment را به 1 گیگابایت افزایش دادیم. در صورتی اوراکل قادر نباشد SGA را در سگمنت Shared Memory جای دهد، پیغام خطای زیر را تولید خواهد کرد:</p>
<p align="left">ORA-27123: unable to attach to shared memory segment</p>
<p align="right">یکی از وظایف DBA تنظیم shmmax با توجه به سایز SGA است. </p>
<p align="right">5- قبل از نصب اوراکل لازم است یک سری Package را نصب کنید:</p>
<p dir="ltr" align="left">rpm -q gcc glibc-headers glibc-kernheaders glibc-devel compat-libstdc++ <br />cpp xorg-x11-deprecated-libs</p>
<p align="right">در صورتی که compat-gcc نصب شده باشد (در Fedora Core 3)، آنرا حذف کرده و به جای آن compat-gcc-7.3-2.96.126.i386.rpm را نصب کنید:</p>
<p align="left">rpm -e compat-gcc <br />rpm -i compat-gcc-7.3-2.96.126.i386.rpm</p>
<p align="right">پس از نصب compat-gcc-7.3 در فولدر /usr/bin/ کامپایلر gcc را با gcc296 جابجا کنید:</p>
<p dir="ltr" align="left">cd /usr/bin <br />mv gcc gcc3 <br />cp gcc296 gcc</p>
<p align="right">6- دستورات زیر را در انتهای فایل bash_profile. واقعد در /home/oracle/ وارد کنید.</p>
<p dir="ltr" align="left">#! /bin/sh <br />export LD_ASSUME_KERNEL=2.4.1 <br />export ORACLE_BASE=/app/oracle <br />export ORACLE_HOME=$ORACLE_BASE/product/9.2.0 <br />export ORACLE_SID=test <br />export ORACLE_TERM=xterm <br />export NLS_LANG=AMERICAN; <br />export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/user/lib:/usr/local/lib <br />export PATH=$PATH:$ORACLE_HOME/bin </p>
<p align="right">7-در محیط گرافیکی GNOME با نام کاربری oracle وارد شوید و روی اسکریپت runInstaller در مسیر /media/cdrom/ دوبار کلیک کنید تا اجرا شود. من بعد از اجرای این مرحله با پیغام خطای زیر روبرو شدم:</p>
<p dir="ltr" align="left">Initializing Java Virtual Machine from /tmp/OraInstall2006-06-25_08-12-25PM/jre/bin/java. Please wait&#8230; <br />Error occured during initialzation of VM <br />unable to load native library: /tmp/OraInstall2006-06-25_08-12-25PM/jre/lib/i386/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference</p>
<p align="right">در <a href="http://www.puschitz.com/InstallingOracle9i.shtml" target="_blank">جایی</a> خواندم که برای حل این مشکل باید p3006854_9204 را که یک Patch است دانلود و نصب کرد:</p>
<p dir="ltr" align="left">su &#8211; root <br />unzip p3006854_9204_LINUX.zip <br />cd 3006854 <br />sh rhel3_pre_install.sh </p>
<p dir="ltr" align="left">&nbsp; </p>
<p align="right">پس از اجرای فایل Patch اجرای runInstaller بدون مشکل خواهد بود.</p>
<p align="center"><img style="border-width:0;" height="351" alt="2" src="http://oraclevaman.files.wordpress.com/2008/06/2.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="375" alt="3" src="http://oraclevaman.files.wordpress.com/2008/06/3.jpg?w=450&#038;h=375" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="4" src="http://oraclevaman.files.wordpress.com/2008/06/4.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="300" alt="5" src="http://oraclevaman.files.wordpress.com/2008/06/5.jpg?w=300&#038;h=300" width="300" border="0"> </p>
<p align="right">در این مرحله برنامه نصاب از شما می خواهد که در یک Shell Prompt، اسکریپت orainstRoot.sh را که برنامه نصاب خود در مسیر /tmp/ کپی کرده است، با root Privilege اجرا کنید. پس از انجام این کار به محیط گرافیک GNome بازگشته و روی کلید Continue در باکس فوق کلیک کنید.</p>
<p align="center"><img height="351" alt="6" src="http://oraclevaman.files.wordpress.com/2008/06/6.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="7" src="http://oraclevaman.files.wordpress.com/2008/06/7.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="8" src="http://oraclevaman.files.wordpress.com/2008/06/8.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="9" src="http://oraclevaman.files.wordpress.com/2008/06/9.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="10" src="http://oraclevaman.files.wordpress.com/2008/06/10.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="11" src="http://oraclevaman.files.wordpress.com/2008/06/11.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="13" src="http://oraclevaman.files.wordpress.com/2008/06/13.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="14" src="http://oraclevaman.files.wordpress.com/2008/06/14.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">در ادامه دو خطای مربوط به ins_oemagent.mk و ins_ctx.mk را Ignore کنید.</p>
<p align="center"><img height="351" alt="15" src="http://oraclevaman.files.wordpress.com/2008/06/15.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="16" src="http://oraclevaman.files.wordpress.com/2008/06/16.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="17" src="http://oraclevaman.files.wordpress.com/2008/06/17.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">در یک Shell Prompt با root Privilege وارد شده و از مسیر app/oracle/product/9.2.0/،اسکریپت root.sh را اجرا کنید. پس از تکمیل اجرای این اسکریپت، به محیط گرافیکی GNome بازگشته و روی کلید OK در دیالوگ باکس شکل فوق کلیک کنید.</p>
<p align="center"><img height="351" alt="18" src="http://oraclevaman.files.wordpress.com/2008/06/18.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">&nbsp;</p>
<p align="center"><img height="351" alt="19" src="http://oraclevaman.files.wordpress.com/2008/06/19.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="center">&nbsp;</p>
<p align="center"><img height="351" alt="20" src="http://oraclevaman.files.wordpress.com/2008/06/20.jpg?w=450&#038;h=351" width="450" border="0"> </p>
<p align="right">کلمه عبور SYS و SYSTEM را دوبار وارد کنید. کلمه عبور نباید با یک رقم (0 تا 9) شروع شود در غیر اینصورت، پیغام خطای زیر نمایش داده می شود:</p>
<p dir="ltr" align="left">ORA-00988 missing or invalid password(s).</p>
<p align="right">در پایان عملیات نصب در فولدر /usr/bin/ کامپایلر gcc را که جایگزین کرده بودیم، به حالت اولیه برمی گردانیم.</p>
<p align="left">cd /usr/bin <br />mv gcc gcc3 <br />cp gcc296 gcc</p>
<p align="right">منابع: </p>
<p dir="ltr" align="left"><a href="http://ivan.kartik.sk/oracle/install_ora9_fedora.html" target="_blank">Installation of Oracle 9i (R2) on Fedora Core Linux 2, 3, 4, 5 and 6</a> <br /><a href="http://www.puschitz.com/InstallingOracle9i.shtml" target="_blank">Installing Oracle 9i 32-it on Red Hat Enterprise Linux Advanced Server 4, 3, 2.1 and on Red Hat 9, 8.0, 7.3, 7.2, 7.1 (x86)</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oraclevaman.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oraclevaman.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclevaman.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclevaman.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclevaman.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=33&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclevaman.wordpress.com/2008/06/28/installing_oracle_9i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9e7fed5e97c47a3764e5ae3a6bd575ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">رامین</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/2.jpg" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/3.jpg" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/4.jpg" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/5.jpg" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/6.jpg" medium="image">
			<media:title type="html">6</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/7.jpg" medium="image">
			<media:title type="html">7</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/8.jpg" medium="image">
			<media:title type="html">8</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/9.jpg" medium="image">
			<media:title type="html">9</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/10.jpg" medium="image">
			<media:title type="html">10</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/11.jpg" medium="image">
			<media:title type="html">11</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/13.jpg" medium="image">
			<media:title type="html">13</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/14.jpg" medium="image">
			<media:title type="html">14</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/15.jpg" medium="image">
			<media:title type="html">15</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/16.jpg" medium="image">
			<media:title type="html">16</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/17.jpg" medium="image">
			<media:title type="html">17</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/18.jpg" medium="image">
			<media:title type="html">18</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/19.jpg" medium="image">
			<media:title type="html">19</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/20.jpg" medium="image">
			<media:title type="html">20</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Instance</title>
		<link>http://oraclevaman.wordpress.com/2008/05/15/lesson1_2/</link>
		<comments>http://oraclevaman.wordpress.com/2008/05/15/lesson1_2/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:43:29 +0000</pubDate>
		<dc:creator>رامین</dc:creator>
				<category><![CDATA[درس اول]]></category>
		<category><![CDATA[Oracle Instance]]></category>

		<guid isPermaLink="false">http://oraclevaman.wordpress.com/2008/05/15/lesson1_2/</guid>
		<description><![CDATA[Oracle Instance به مجموعه Background Processهای اوراکل و حافظه SGA اتلاق می گردد. هر Oracle Instance باید در نهایت یک و تنها یک دیتابیس را اصطلاحاً mount و سپس Open نماید. به عبارت دیگر Instance زمانی به طور کامل بالا می آید که یک دیتابیس را mount و سپس Open کرده باشد. از طرفی هیچ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=11&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle Instance به مجموعه Background Processهای اوراکل و حافظه SGA اتلاق می گردد. هر Oracle Instance باید در نهایت یک و تنها یک دیتابیس را اصطلاحاً mount و سپس Open نماید. به عبارت دیگر Instance زمانی به طور کامل بالا می آید که یک دیتابیس را mount و سپس Open کرده باشد. از طرفی هیچ Instanceی نمی تواند بیش از یک دیتابیس را Open کند.</p>
<p><span id="more-11"></span>
<p>در پیکربندی RAC (یا به طور کاملتر Real Application Clusters) وجود چند Instance به ازای یک دیتابیس مجاز است. در این پیکربندی معمولاً چند Instance روی چند سیستم جداگانه بالا می آیند و همزمان به یک دیتابیس متصل می شوند که باعث افزونگی، تقسیم لود کاری و کاهش تاخیر دسترسی خواهد شد. پیکربندی RAC فعلاً از حوزه بحث ما خارج است. </p>
<p>بالا آوردن و پائین بردن Instance توسط Database Administrator یا به اختصار DBA انجام می گیرد. کاربران با Privilege کاربری SYSDBA و SYSOPER می توانند این قبیل عملیات را انجام دهند. نامهای کاربری و کلمات عبور کاربران در اوراکل همچون دیگر اطلاعات در data fileهای دیتابیس نگهداری می شوند اما اوراکل چگونه می تواند برای مثال در زمان بالا آوردن دیتابیس برای احراز هویت DBA به دیتابیسی که هنوز بالا نیامده رجوع کند. پاسخ این سوال آنستکه SYSDBA و SYSOPER و کلمه عبور مربوطه در Password Fileها نگهداری می شوند و نه مانند دیگر نامهای کاربری در data fileها. بنابراین Instance می تواند قبل از mount کردن دیتابیس و Open کردن آن کاربر SYSDBA و یا SYSOPER را احراز هویت کند. برای بالا آوردن Instance ابتدا باید با عنوان SYSDBA به سیستم Login کنیم:</p>
<p dir="ltr" align="left">sqlplus &#8220;sys/syspassword as SYSDBA&#8221; </p>
<p>کلمه عبور syspassword همان کلمه عبوریست که برنامه نصاب اوراکل در هنگام نصب می پرسد. در صورتیکه با نام کاربری که جزو گروه dba باشد وارد سیستم شده باشید، نیازی به وارد کردن نام کاربری و کلمه عبور نیست:</p>
<p dir="ltr" align="left">sqlplus &#8220;/ as SYSDBA&#8221;</p>
<p>پس از وارد شدن با عنوان sysdba می توانیم Instance را با وارد کردن دستور startup بالا بیاوریم. مراحل بالا آمدن Instance به ترتیب ذیل است:</p>
<ul>
<li>خواندن فایل Initialization Parameter File (موسوم به Init ORA چرا که معمولاً نام این فایل init.ora است)
<li>Mount کردن دیتابیس
<li>باز کردن (یا Open کردن) دیتابیس </li>
</ul>
<p>&nbsp;</p>
<p><strong>1- خواندن فایل Initialization Parameter File</strong></p>
<p>اولین کاری که بعد از وارد کردن دستور startup انجام می شود، خواندن فایل Initialization Parameter File است که مسیر آن را می توان به عنوان آرگومان به اوراکل داد. در لینوکس، به صورت پیش فرض، این فایل را می توان از مسیر ORACLE_HOME/dbs و در ویندوز از مسیر ORACLE_HOME\database و با نام init${ORACLE_SID}.ora یافت.</p>
<p>فایل Initialization Parameter File یک فایل متنی است (قابل ویرایش با vi یا notepad) که شامل یک سری مقادیر اولیه برای پارامترهای اساسی اوراکل است، که مسیر فایلها، مقدار حافظه و &#8230; را برای Instance اوراکل مشخص می کنند:</p>
<p dir="ltr">DB_BLOCK_SIZE=4096&nbsp; #this is a comment <br />DB_CASHE_SIZE=512M <br />DB_FILES=500 <br />DB_NAME=&#8217;MY_ORA_DB&#8217;</p>
<p>از نسخه 9i به بعد، به جای فایل Initialization Parameter File از فایل Server Parameter File که حالت باینری دارد، نیز می توان استفاده کرد. فایل Server Parameter File یا به اختصار SPFile از همان فایل Initialization Parameter File ساخته می شود<sup>1</sup>. تغییر پارامترها در Initialization Parameter توسط هر ادیتور متنی امکانپذیر است اما ویرایش SPFile توسط ادیتور متنی ممکن نیست. اغلب پارامترها را می توان پس از بالا آمدن سیستم توسط دستور ALTER SYSTEM تغییر داد. در صورتی که از Initialization Parameter File استفاده می کنید، این تغییرات تا زمان پائین آوردن Instance معتبر هستند و در داخل Initialization Parameter File منعکس نمی شوند ولی اگر از SPFile استفاده می کنید، با استفاده از آرگومان SCOPE می توان تغییرات در SPFILE منعکس نمود. برای مثال دستور زیر پارامتر JOB_QUEUE_PROCESSES را تنها روی Instance تغییر می دهد:</p>
<p dir="ltr" align="left">ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 COMMENT=&#8217;Change on Nov 29th &#8211; Ref 12345&#8242; SCOPE=MEMORY;</p>
<p>اما دستور زیر پارامتر را روی Instance در حال اجرا تغییر نمی دهد و آن را تنها روی SPFile دیسک تغییر می دهد. بدیهی است که این تغییرات در بالا آمدن بعدی Instance اعمال می شوند.</p>
<p dir="ltr" align="left">ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 COMMENT=&#8217;Change on Nov 29th &#8211; Ref 12345&#8242; SCOPE=SPFILE;</p>
<p>دستور زیر تغییرات روی پارامتر مذبور را هم روی Instance در حال اجرا و هم روی SPFile اعمال می کند</p>
<p dir="ltr" align="left">ALTER SYSTEM SET JOB_QUEUE_PROCESSES=50 COMMENT=&#8217;Change on Nov 29th &#8211; Ref 12345&#8242; SCOPE=BOTH;</p>
</p>
<p>در اوراکل 9i به بعد فایل SPFILE بر فایل Initialization Parameter File مقدم است. یعنی اگر برای مثال ORACLE_SID برابر test باشد و در مسیر ORACLE_HOME\dbs دو فایل با نامهای inittest.ora و spfiletest.ora وجود داشته باشند، فایل spfiletest.ora دارای اولیت بیشتری است. در واقع ترتیب جستجوی Parameter File پس از وارد کردن دستور startup به صورت زیر است:</p>
<ul>
<li>جستجوی فایل با نام spfile$ORACLE_SID.ora را در مسیر ORACLE_HOME/dbs
<li>جستجوی فایل با نام spfile.ora در همان مسیر
<li>جستجوی فایل با نام init$ORACLE_SID.ora در همان مسیر</li>
</ul>
<p>در صورتی که مایل باشیم می توان نام و مسیر Parameter File را به عنوان آرگومان دستور startup به آن اعلام کرد:</p>
<p dir="ltr" align="left">startup PFILE=&#8217;/app/oracle/product/9.2.0/dbs/some_pfile.ora&#8217;</p>
<p>نکته جالب آنکه معادل startup SPFILE=path این دستور وجود ندارد. برای بالا آوردن instance با یک SPFILE که نام آن به صورت spfile$ORACLE_SIDE نیست یا در مسیر پیش فرض قرار ندارد، باید به این صورت عمل کنیم که یک فایل متنی Parameter File می سازیم که تنها دارای یک خط است و در این خط عبارت زیر را وارد می کنیم:</p>
<p align="left">SPFILE = <em>some path to spfile</em></p>
<p>حال اگر مسیر فایل PFile فوق را به عنوان آرگومان PFILE دستور startup وارد کنیم، اوراکل به سراغ SPFile خواهد رفت.</p>
<p>&nbsp;</p>
<p><strong>2- Mount کردن دیتابیس</strong></p>
<p>قدم دوم یعنی Mount کردن دیتابیس، به این ترتیب انجام می شود که Instance از روی پارامتر CONTROL_FILES که از فایل Init Ora خوانده است، Control Fileهای دیتابیس را شناسائی کرده و آنها را باز می کند. Control Fileهای دیتابیس اطلاعات متادیتا مربوط به دیتابیس همچون نام و مسیر دیتا فایلها، کاراکتر سِت دیتابیس و &#8230; را در خود نگهداری می کنند. Instance از روی Control Fileهای دیتابیس، نام و مسیر Data Fileها و Redo Log Fileها را می خواند. در این مرحله دیتابیس آماده باز شدن است. توجه کنید که در این مرحله اوراکل نام و مسیر Data Fileها را می داند اما هنوز به سراغ آنها نرفته است. بنابراین اگر مشکلی برای فایلهای Data اتفاق افتاده باشد، اوراکل در این مرحله متوجه آن نمی شود. گاهی لازم است Instance بدون mount کردن دیتابیس بالا بیاید (برای مثال زمانی که بخواهیم یک دیتابیس را از ابتدا ایجاد کنیم). برای این منظور پارامتر nomount را می توان به عنوان آرگومان به دستور startup داد که به Instance دستور می دهد به سراغ مرحله mount و باز کردن دیتابیس نرود:</p>
<p align="left">STARTUP NOMOUNT</p>
<p>توجه کنید که در این حالت Instance کاملاً در حافظه بارگزاری می شود و پروسس ها نیز بالا می آیند (این مساله از طریق دستور ipcs و ps -aef | grep oracle قابل تحقیق است) اما instance به سراغ فایلهای دیتابیس نمی رود. به طریق مشابه دستور STARTUP MOUNT به Instance دستور می دهد که پروسه بالا آمدن را پس از mount کردن دیتابیس متوقف کند و به سراغ باز کردن دیتابیس نرود. نکته ای که باید به آن دقت شود آنستکه دستور startup تنها یکبار وارد می شود، لذا پس از بارگذاری Instance به صورت nomount دیگر نمی توان از همان دستور startup برای mount کردن دیتابیس و یا باز کردن آن استفاده کرد و باید از دستور alter database mount و alter database open برای mount کردن دیتابیس و سپس باز کردن آن استفاده کرد.</p>
<p>&nbsp;</p>
<p><strong>3- باز کردن دیتابیس</strong></p>
<p>مرحله پایانی باز کردن دیتابیس mount شده است. پس از باز کردن دیتابیس که به معنی خواندن و آزمایش کردن فایلهای Data است، کاربران می توانند به دیتابیس وصل شده و بر روی دیتا کار کنند. اگر Instance در هنگام باز کردن دیتابیس متوجه نبود یکی از فایها شود، رویه باز کردن دیتابیس با یک پیغام خطا خاتمه می یابد و این فایل باید توسط یک پروسه Backup Recovery برگردانده شود. در صورتی که Instance در حین باز کردن database متوجه شود که دیتابیس آخرین باری که بالا بوده Normal Shutdown نشده است (برای مثال به علت قطعی برق)، یک پروسه Instance Recovery به طور اتوماتیک اجرا خواهد شد. پروسه Instance Recovery توسط یکی از Background Processهای Instance به نام SMON اجرا می گردد و ممکن است حتی چند ساعت به طول انجامد. در طول این مدت دیتابیس برای کاربران قابل دسترسی نیست.</p>
<p>پس از بالا آمدن Instance آماده سرویس دهی به کاربران است. کاربران برای سرویس گرفتن از Instance، نخست باید به آن متصل شوند. اوراکل برای هر Session یک Server Process اختصاص می دهد. این Server Process وظیفه ارتباط بین کاربر و Oracle Instance را برعهده دارد. Server Process دستورات SQL را از کاربر گرفته و خود آنرا اجرا می کند. در این مدل که به آن Dedicated Server Model می گوییم به ازای هر کاربر یک Server Process بر روی سرور بالا می آید. مدل دیگر آنستکه یک Server Process بین چند کاربر به طور مشترک مورد استفاده قرار گیرد که به آن Shared Server Model گویند.</p>
<p>Oracle Instance مرکب از یک ساختار حافظه مشترک موسوم به SGA یا به طور کاملتر System Global Area و یک سری Background Process. حافظه SGA خود به چندین بخش کوچکتر تقسیم می شود:</p>
<ul>
<li>Shared Pool که خود شامل Library Cache و Data Dictionary Cache است.
<li>Database Buffer
<li>Redo Log Buffer
<li>Large Pool که وجود آن اختیاری و تصمیم گیری آن با DBA است.
<li>Java Pool که وجود آن نیز اختیاری بوده و تصمیم گیری آن با DBA است. </li>
</ul>
<p>Background Processها نیز دو دسته هستند:</p>
<ul>
<li>آن دسته از Background Processهای که وجودشان اجباری بوده و در هر ، صورت به همراه Instance بالا آورده می شوند که شامل SMON، RMON، DBWR، LGWR و CKPT می باشند.
<li>آن دسته از Background Processها که وجودشان در صورت استفاده از برخی قابلیتهای دیتابیس مورد نیاز است، همچون ARC یا Archiver که در صورت بردن دیتابیس به مود آرشیو، بالا خواهند آمد و به صورت پیش فرض اجرا نمی شوند. </li>
</ul>
<p align="center"><img style="border-width:0;" height="303" alt="Drawing2" src="http://oraclevaman.files.wordpress.com/2008/06/drawing2.jpg?w=400&#038;h=303" width="400" border="0"> </p>
<p align="center">&nbsp;</p>
<p><sup>1</sup>- با استفاده از دستور CREATE SPFILE=<em>some_path</em> FROM PFILE=<em>some_path</em>. برعکس این کار نیز ممکن است. یعنی ایجاد Initialization Parameter File از روی SPFile با دستور CREATE PFILE FROM SPFILE. مثال:</p>
<p dir="ltr" align="left">SQL&gt; create pfile=&#8217;/app/oracle/product/9.2.0/dbs/pfiletest.ora&#8217; from spfile=&#8217;/app/oracle/product/9.2.0/dbs/spfiletest.ora&#8217;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oraclevaman.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oraclevaman.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclevaman.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclevaman.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclevaman.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=11&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclevaman.wordpress.com/2008/05/15/lesson1_2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9e7fed5e97c47a3764e5ae3a6bd575ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">رامین</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/06/drawing2.jpg" medium="image">
			<media:title type="html">Drawing2</media:title>
		</media:content>
	</item>
		<item>
		<title>اجزای اصلی دیتابیس اوراکل</title>
		<link>http://oraclevaman.wordpress.com/2008/05/14/lesson1_1/</link>
		<comments>http://oraclevaman.wordpress.com/2008/05/14/lesson1_1/#comments</comments>
		<pubDate>Wed, 14 May 2008 17:30:03 +0000</pubDate>
		<dc:creator>رامین</dc:creator>
				<category><![CDATA[درس اول]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle Instance]]></category>
		<category><![CDATA[SGA]]></category>

		<guid isPermaLink="false">http://oraclevaman.wordpress.com/2008/05/14/%d8%a7%d8%b1%da%a9%d8%a7%d9%86-%d8%af%db%8c%d8%aa%d8%a7%d8%a8%db%8c%d8%b3-%d8%a7%d9%88%d8%b1%d8%a7%da%a9%d9%84/</guid>
		<description><![CDATA[اوراکل در ساده ترین حالت از حداقل یک Instance مقیم در حافظه RAM و یک دیتابیس واقع بر روی دیسک تشکیل شده است. Instance خود شامل یک سری Background Process و نیز یک فضای حافظه مشترک بین این پروسس هاست که به SGA موسوم است. بارگذاری Instance به معنی اختصاص مقداری از فضای RAM سیستم [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=6&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>اوراکل در ساده ترین حالت از حداقل یک Instance مقیم در حافظه RAM و یک دیتابیس واقع بر روی دیسک تشکیل شده است. Instance خود شامل یک سری Background Process و نیز یک فضای حافظه مشترک بین این پروسس هاست که به SGA موسوم است. بارگذاری Instance به معنی اختصاص مقداری از فضای RAM سیستم به عنوان فضای SGA و بارگذاری حداقل تعداد لازم از Background Processهای اوراکل است. Instance پس از بالا آمدن صحت دیتابیس را چک می کند، آنرا اصطلاحاً mount کرده و پس از بارگذاری کامل، اوراکل آماده سرویس دهی است.</p>
<p><span id="more-6"></span>
<p align="center"><a href="http://oraclevaman.files.wordpress.com/2008/05/drawing11.jpg"><img style="border-width:0;" height="301" alt="Drawing1" src="http://oraclevaman.files.wordpress.com/2008/05/drawing1-thumb1.jpg?w=404&#038;h=301" width="404" border="0"></a> </p>
<p>System Global Area: یا SGA که به آن Share Global Area نیز می گویند قسمتی از حافظه سیستم است که در اختیار یک Instance قرار می گیرد. اوراکل سعی می کند که تا جایی که ممکن است با دیسک (که در مقایسه به RAM بسیار کند است) کار نکند و یا کار با آن را به تاخیر بیندازد. لذا SGA شامل یک سری بافرهایی است که رکوردهای خوانده شده از دیسک، رکوردهای تغییر یافته، حالت Parse شده دستورات SQL کاربران، اطلاعات مربوط به جداول، اطلاعات مربوط به فایلهای دیتابیس و هر چیز دیگری را که ممکن باشد در آن بافرها نگهداری می کند. این بافرها به هنگام بالا آمدن Instance، از سوی سیستم عامل به آن اختصاص داده می شوند و به کل این فضا SGA گفته می شود.</p>
<p>Background Processes: اوراکل شامل یک سری پروسس ها است که حتی در زمان عدم ارتباط با کاربران باید حتماً بالا باشند. بارگذاری Instance به معنی بالا آمدن پروسسهای PMON، SMON، DBWR، LGWR، CKPT و در صورت نیاز پروسسهای دیگری است که وظایف پایه همچون خواندن بلاکها از دیسک، نوشتن بلاکهای تغییریافته به دیسک، تهیه LOG از تغییرات انجام شده روی دیتابیس و &#8230; را به دور از چشم کاربران (به همین دلیل Background Process خوانده می شوند) انجام می دهند. Oracle Instance دارای Background Processهای زیادی است که هر کدام وظایف گوناگونی دارند. در این میان 5 پروسس فوق الذکر دارای اهمیت پایه هستند و در هر حالت بارگذاری می شوند. دیگر پروسسها در صورت نیاز و در صورت استفاده از برخی از امکانات اوراکل بارگذاری می شوند که به آنها خواهیم پرداخت.</p>
<p>Database: دیتابیس مجموعه ای از فایلها است که اطلاعات واقعی در آنها نگهداری می شود. این فایلها در اوراکل به سه بخش عمده تقسیم می شوند:</p>
<ul>
<li>فایلهایی که خود دیتا را نگهداری می کنند
<li>فایلهایی که نحوه استفاده از فایلهای دیتا را مشخص می کنند. همچون اطلاعات مربوط به تعداد، مکان و نحوه دسترسی به فایلهای دیتا.
<li>فایلهای LOG </li>
</ul>
<p>در کنار Instance و دیتابیس یک سری پروسسها و فایلهای دیگر نیز وجود دارند که برای کارکرد سیستم لازم هستند ولیکن جزو بخشهای پایه اوراکل محسوب نمی شوند. برای مثال User Process و Server Process که در هنگام اتصال کاربران به سیستم نقش پیدا می کنند و یا فایلهای مربوط به پارامترهای اولیه سیستم (Parameter fileها).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oraclevaman.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oraclevaman.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclevaman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclevaman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclevaman.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=6&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclevaman.wordpress.com/2008/05/14/lesson1_1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9e7fed5e97c47a3764e5ae3a6bd575ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">رامین</media:title>
		</media:content>

		<media:content url="http://oraclevaman.files.wordpress.com/2008/05/drawing1-thumb1.jpg" medium="image">
			<media:title type="html">Drawing1</media:title>
		</media:content>
	</item>
		<item>
		<title>ًُSQL چیست</title>
		<link>http://oraclevaman.wordpress.com/2008/05/14/what_is_sql/</link>
		<comments>http://oraclevaman.wordpress.com/2008/05/14/what_is_sql/#comments</comments>
		<pubDate>Wed, 14 May 2008 16:25:21 +0000</pubDate>
		<dc:creator>رامین</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[DCL]]></category>
		<category><![CDATA[DDL]]></category>
		<category><![CDATA[DML]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[TCL]]></category>

		<guid isPermaLink="false">http://oraclevaman.wordpress.com/2008/05/14/what_is_sql/</guid>
		<description><![CDATA[SQL کوتاه شده Structured Query Language و آن را اِس کیو اِل و گاهی سیکوِل تلفّظ می کنند1. زبان SQL برای اولین بار در IBM در اوایل دهه 70 ایجاد شد. استانداردسازی زبان SQL بعدها و در سال 1986 توسط ANSI (انستیتو استاندارد ملی آمریکا) انجام شد. برای SQL هم استاندارد ANSI و هم ISO [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=3&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SQL کوتاه شده Structured Query Language و آن را اِس کیو اِل و گاهی سیکوِل تلفّظ می کنند<sup>1</sup>. زبان SQL برای اولین بار در IBM در اوایل دهه 70 ایجاد شد. استانداردسازی زبان SQL بعدها و در سال 1986 توسط ANSI (انستیتو استاندارد ملی آمریکا) انجام شد. برای SQL هم استاندارد ANSI و هم ISO تدوین شده است اما هر پایگاه داده ای دارای برخی قابلیتهای اضافی است که خاص آن پیاده سازی می باشد.</p>
<p><span id="more-3"></span>
<p>SQL یک زبان کامپیوتری است که اختصاصاً برای مشاهده و مدیریت دیتا در پایگاههای داده Relational طراحی شده است. زبان SQL اساساً یک زبان برنامه نویسی از نوع زبانهای Declarative همچون HTML است<sup>2</sup>. اگرچه زبانهای برنامه نویسی Imperative همچون PL/SQL بر اساس SQL ساخته شده اند و امروزه کاربرد بسیار گسترده ای یافته اند، لیکن SQL کماکان کارکرد خود را به عنوان یک روش استاندارد دسترسی به پایگاههای داده در محیطهای واسط مختلف حفظ نموده است.</p>
<p>نخستین استانداردسازی SQL، همانطوریکه گفته شد، در سال 1986 انجام شد و نتیجه آن به SQL-86 معروف است، بعداً نسخه های دیگری از این استاندارد نیز تهیه گردید که به SQL-89، SQL-92، SQL:1999، SQL:2003 و اخیراً SQL:2006 موسوم می باشند. قابلیتهای مرتبط با XML از SQL:2003 وارد استاندارد SQL گردید.</p>
<p>دستورهای SQL به طور سنتی در چهار دسته عمده تقسیم بندی می شوند که عبارتند از DDL، DML، DCL و TCL.</p>
<p>DDL آن دسته از دستورات SQL است که با ساختارهای نگهداری دیتا سر و کار دارند. برای مثال دستورهایی که ایجاد، تغییر و حذف جداول نگهدارای اطلاعات را باعث می شوند:</p>
<ul>
<li>CREATE: برای ایجاد یک Object در دیتابیس
<li>ALTER: برای تغییر یک ساختار در دیتابیس
<li>DROP: برای حذف یک Object در دیتابیس
<li>TRUNCATE: برای پاک کردن تمامی رکوردهای یک جدول و آزاد کردن فضای آن
<li>RENAME: برای تغییر نام یک Object </li>
</ul>
<p>DML شامل دستوراتی است که امکان تغییر اطلاعات موجود در جداول را به ما می دهند:</p>
<ul>
<li>SELECT: برای مشاهده یک دسته از اطلاعات
<li>INSERT: برای وارد کردن اطلاعات جدید در جداول
<li>UPDATE: برای تغییر اطلاعات موجود در جداول دیتابیس
<li>DELETE: برای پاک کردن کلیه رکوردهای یک جدول </li>
</ul>
<p>DCL شامل دستوراتی است که دسترسی کاربران به اطلاعات را کنترل می کنند:</p>
<ul>
<li>GRANT: برای اعطای امکان دستری
<li>REVOKE: برای گرفتن دسترسی اضافی </li>
</ul>
<p>TCL به آن دسته از دستورات اعطا می گردد که برای کنترل تراکنش ها کاربرد دارند:</p>
<ul>
<li>COMMIT
<li>SAVEPOINT
<li>ROLLBACK </li>
</ul>
<p>Query که در محدوده دستورات DML قرار می گیرد، رایجترین دستور SQL است که به معنی مشاهده یک مجموعه انتخابی از دیتای وارد شده در دیتابیس است. Query به ما امکان می دهد که</p>
<ul>
<li>یک مجموعه از جداول را از کل جداول دیتابیس انتخاب کنیم.
<li>از میان جداول انتخاب شده، یک مجموعه از ستونها را انتخاب کنیم.
<li>یک معیار را برای سنجیدن کلیه رکوردها جداول انتخاب شده، تعریف کنیم تا با مقایسه رکوردها با آن معیار، تنها تعدادی از رکوردها انتخاب شده و نمایش داده شوند.
<li>اطلاعات تکراری را طبقه بندی و ترکیب کنیم.
<li>اطلاعات را به صورتهای گوناگون ترکیب کنیم. </li>
</ul>
<p>برای مثال در query زیر</p>
<p>SELECT * FROM books WHERE price &gt; 100.0 ORDER BY title</p>
<p>کلمات SELECT، FROM، WHERE و ORDER BY جزو کلمات کلیدی SQL هستند. Query فوق کلیه ستونهای جدول books را به ازای رکوردهایی که فیلد ORDER آنها بیشتر از 100 باشد نمایش می دهد. اطلاعات قبل از نمایش بر حسب ستون title مرتب می شوند. </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><sup>1</sup>- اولین پیاده سازی SQL در IBM، سیکوِل نام داشت ولیکن چون سیکول قبلاً توسط یک شرکت هواپیماسازی انگلیسی ثبت شده بود، نام رسمی این استاندارد را اِس کیو اِل گذاشتند. با این حال اغلب، در محافل غیر رسمی تلفظ سیکوِل را نیز می شنویم.</p>
<p><sup>2</sup>- زبانهای Declarative بر خلاف زبانهای Imperative (همچون C، Fortran و BASIC) هدف را توصیف کرده و روش رسیدن به هدف را به نرم افزار واگذار می کنند. اما در زبانهای برنامه نویسی Imperative، برنامه نویس هدف را به طور مستقیم بیان نمی کند، بلکه یک روش (الگوریتم) را بیان می کند که هدف در اجرای این روش، مستطر است. به عبارت دیگر در زبانهای برنامه نویسی Imperative، برنامه نویس روش رسیدن به هدف را به سیستم می دهد در حالیکه در برنامه نویسی Declarative، برنامه نویس سعی می کند، هدف را برای سیستم توصیف کند و این سیستم است که روش رسیدن به هدف را انتخاب می کند.</p>
<p>&nbsp;</p>
<p>منابع: سایت <a href="http://en.wikipedia.org/wiki/SQL">wikipedia</a> و <a href="http://www.orafaq.com/wiki/SQL_FAQ">orafaq</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oraclevaman.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oraclevaman.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclevaman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclevaman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclevaman.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclevaman.wordpress.com&amp;blog=3725383&amp;post=3&amp;subd=oraclevaman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclevaman.wordpress.com/2008/05/14/what_is_sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9e7fed5e97c47a3764e5ae3a6bd575ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">رامین</media:title>
		</media:content>
	</item>
	</channel>
</rss>
