در مطالب قبلی در مورد فایل های tnsnames.ora و listener.ora توضیح دادیم که فایل listener.ora بر روی سرور قرار دارد و پیکربندی های لازم برای اتصال کلاینت ها را توصیف می کند.  listener به طور معمول بر روی شبکه و از طریق پروتکل tcp و بر روی یک آدرس (آدرس ip یا نام fqdn) و یک شماره پورت (به صورت پیشفرض ۱۵۲۱) به درخواست کلاینت ها گوش می دهد. سپس درخواست دریافت شده به یک فرایند سرور (server process) تحویل می شود و فرایند سرور، درخواست را به اوراکل تحویل می دهد.

اوراکل را می توانیم به صورت dedicated server یا shared server تنظیم کنیم. در حالت dedicated server به ازای هر درخواست کاربر یک فرایند سرور پاسخ گو است ولی در حالت shared server به ازای هر چند درخواست کلاینت، یک فرایند سرور پاسخ گو است.

در کلاینت نیز فایل tnsnames.ora وجود دارد که اطلاعات لازم برای اتصال به پایگاه داده را ذخیره می کند. در این فایل SID یا نام instance که پایگاه داده را اداره می کند ذخیره شده است. همچنین ممکن است پایگاه داده اوراکل به صورت یک سرویس در فایل listener.ora ثبت شده باشد، پس در این حالت در فایل tnsnames.ora نام سرویس در پرامتر SERVICE_NAME ذخیره می شود.

اوراکل دو ابزار sqlplus و sql developer و همچنین oracle enterprise manager که oem نیز نامیده می شود را برای اتصال به پایگاه داده هدف و انجام امور مدیریتی و اجرای تمامی انواع دستورهای sql فراهم کرده است ولی می توانیم از طریق درایورهای برنامه نوسی از طریق زبان های برنامه نویسی جاوا، سی شارپ، پی اچ پی و پایتون نیز به پایگاه داده اوراکل متصل شویم.

اتصال از طریق sqlplus

sqlplus اصلی ترین برنامه ای است که برای ارتباط با پایگاه داده و اجرای دستورها از آن استفاده می شود. sqlplus به صورت یک ابزار خط فرمان همراه با اوراکل نصب می شود و در کنار oem یکی از اصلی ترین ابزارهایی است که مدیران برای مدیریت و پیکربندی پایگاه داده از آن استفاده می کنند.

در کنار اینکه می توانید دستورهای اوراکل مانند ایجاد کاربران، مشاهده و تنظیم و تغییر پارامترها، اجرای کوئری بر روی جداول دیتا دیکشنری و دیگر جدول ها را انجام دهید، خود sqlplus نیز دارای دستورهای خودش است. به طور مثال دستور clear screen خط فرمان sqlplus را پاک می کند. به طور کلی از sqlplus می توانیم برای موارد زیر استفاده کنیم.

۱ – اجرای دستورهای sql (کوئری ها و مدیریت پایگاه داده)

۲ – اجرای دستورهای pl/sql

۳ – اجرای دستورهای خود sqlplus

برای اتصال به اوراکل در ساده تر حالت مطابق زیر ابتدا دستور sqlplus را اجرا کنید تا وارد محیط آن شوید. سپس از شما درخواست می شود تا نام کاربری و پسورد را وارد کنید. در مطالب بعدی در مورد چگونگی ایجاد حساب های کاربری صحبت خواهیم کرد. اگر اطلاعات را به درستی وارد کنید، SQL> نمایش داده می شود که می توانید دستورهای اوراکل را اجرا کنید.

به طور مثال در کدهای بالا دستور select count(*) from employees; نشان داده شده است که تعداد کل کارمندان را نشان می دهد. در مطلب معماری اوراکل – اسکیما و اشیا پایگاه داده توضیح دادیم که به صورت معمول زمانی که توسط دستور create user یک حساب کاربری ایجاد می کنیم، یک اسکیما (schema) همنام با آن ایجاد می شود و اسکیما مفهوم منطقی است که شامل تمامی اشیایی می شود که تحت مالکیت یک کاربر هستند.

بنابراین در کدهای بالا کاربری از طریق sqlplus وارد شده است که مالک جدول employees است. جداول و نماها (views) دو نوع از اشیایی هستند که در اسکمیا قرار دارند. ولی ممکن است کاربری که وارد شده است، مالک جدول نباشد ولی مجوز اجرای دستور select بر روی جدول را داشته باشد. در مورد مجوزها و اعطای مجوزها در مطالب بعدی صحبت کرده ایم.

استفاده از EZCONNECT به جای tnsnames.ora

در کدهای بالا sqlplus از فایل tnsnames.ora برای اتصال به پایگاه داده استفاده می کند. در این فایل SID یا نام instance که پایگاه داده را اداره می کند قرار دارد. نکته مهمی که وجود دارد اینکه sqlplus یا هر برنامه کلاینت دیگری در واقع به instance وصل می شود که پایگاه داده را کنترل می کند.

EZCONNECT روشی است که از آن می توانیم برای اتصال به یک instance پایگاه داده استفاده کنیم. EZCONNECT دقیقا همان پارامترهایی را تعیین می کند که در tnsnames.ora وجود دارد ولی این پارامترها در زمان اجرای دستور sqlplus و در جلوی آن نوشته می شوند. کد زیر فرمت کلی آنرا که رشته اتصال (connection string) نیز نامیده می شود را نشان می دهد.

در رشته اتصال بالا، تنها نام کاربری و گذرواژه لازم است که با علامت slash یا / از هم جدا می شوند. اگر فرض کنیم که sqlplus را بر روی همان ماشینی اجرا کنیم که اوراکل نصب است، بنابراین تنها نام کاربری و گذرواژه کفایت می کند.

اگر بر روی ماشین دو instance وجود دارد می توانید به صورت زیر به یکی از آنها وصل شود. در واقع به جای service_name در فرمت بالا باید نام instance یا sid را باید تعیین کنیم.

اگر می خواهید به instance پایگاه داده ای وصل شوید که پیکربندی های آن بر روی tnsnames.ora وجود ندارد باید شماره پورت و آدرس آنرا تعیین کنید. اگر فرض کنیم اوراکل بر روی ماشین با آدرس 192.168.1.100 و بر روی شماره پورت پیشفرض باشد، از دستور زیر استفاده کنید.

توجه کنید در حالتی که پورت پیشفرض یعنی عدد ۱۵۲۱ را می توانید ننویسید ولی اگر شماره پورت دیگری باشد، نوشتن آن اجباری و ضروری است. فرض کنید بر روی سرور دو listener وجود دارد، پس هر یک بر روی دو پورت مجزا تنظیم شده اند، در این حالت می توانید کلاینت ها را دسته بندی کنید تا هر یک بر روی یکی از دو پورت درخواست ارسال کنند.