ওরাকল সার্ভার ক্লায়েন্টের কাছে একটি সার্ভিস হিসেবে চিহ্নিত হয়ে থাকে। এই ডাটাবেজ এক বা একাধিক সার্ভিসের সাথে সম্পর্কিত থাকতে পারে। ডাটাবেজ অনেক সার্ভিস হিসেবে উপস্থাপিত হয় এবং সার্ভিসগুলোর অনেক ডাটাবেজ ইনস্টল হিসেবে বা বাস্তবায়িত হয়। ক্লায়েন্ট ডাটাবেজ সার্ভিসের সাথে কানেক্ট হবার জন্য কানেক্ট ডেসক্রিপ্টর ব্যবহার করে। কানেক্ট ডেসক্রিপ্টর ডাটাবেজ লোকেশন এবং ডাটাবেজ সার্ভিস নেম দেয়। মূলত কানেক্ট ডেসক্রিপ্টরের অ্যাড্রেসের অংশটিতে লিসেনারের প্রটোকল অ্যাড্রেসটি থাকে। ডাটাবেজ সার্ভিসের সাথে ক্লায়েন্ট কানেক্ট হবার আগে ডাটাবেজ সার্ভারের ভেতরের লিসেনার সার্ভিসের সাথে কানেক্ট হয়ে থাকে। যখন লিসেনার ক্লায়েন্টের মাধ্যমে কোনো কানেকশন রিকোয়েস্ট পায়, তখন লিসেনার ওই কানেকশন ডাটাবেজ সার্ভারে স্থানান্তরিত করে। একবার এই সংযোগ স্থাপিত হলে ক্লায়েন্ট ও সার্ভার সরাসরি যোগাযোগ রক্ষা করে। এ ছাড়াও কানেক্ট ডেসক্রিপ্টর ক্লায়েন্টের মাধ্যমে খোঁজ করা ডাটাবেজ সার্ভিস নেম নির্ধারণ করে দেয়। ওরাকল ডাটাবেজ ডাইনামিক্যালি লিসেনারে কিছু প্রয়োজনীয় তথ্য রেজিস্ট্রি করে দেয়, যাতে লিসেনার জানতে পারে কোন সার্ভিসের জন্য কানেকশন রিকোয়েস্ট পাঠানো হচ্ছে। যে প্রক্রিয়ায় এই রেজিস্ট্রি করা হয় তাকে বলা হয় সার্ভিস রেজিস্ট্রেশন। এ ছাড়াও সার্ভিস রেজিস্ট্রেশন লিসেনারকে সরবরাহ করে ডাটাবেজ ইনস্ট্যান্স সংক্রান্ত তথ্য, তবে ইনস্ট্যান্সের মাধ্যমে প্রয়োজনীয় সার্ভিস হ্যান্ডেলার। সার্ভিস ও হ্যান্ডেলার ওরাকল ডাটাবেজের প্রতি একটি কানেকশন পয়েন্টারের মতো কাজ করে। এটা ডিসপ্যাচার অথবা ডেডিকেটেড সার্ভার হতে পারে।
ওরাকল নেট কনফিগারেশন মেথড
কনফিগার সংক্রান্ত তথ্যসমূহ লোকালাইজড কনফিগারেশন ফাইল অথবা সেন্ট্রালাইজড রিপজিটরিতে সংরক্ষণ করা হয়। লোকালাইজড ম্যানেজমেন্ট নেটওয়ার্ক অ্যাড্রেসের তথ্য tnsnames.ora ফাইলে সংরক্ষণ করা হয়। অপরদিকে সেন্ট্রালাইজড ম্যানেজমেন্টে কমপিয়েন্ট ডিরেক্টরি সার্ভার অথবা নেম সার্ভারে সংরক্ষণ করা হয়।
নেমিং মেথড :
ডাটাবেজ সার্ভিসের সাথে যখন কোনো ক্লায়েন্ট সংযোগ স্থাপন করতে চেষ্টা করে, তখন এই ক্লায়েন্ট কানেক্ট ডেসক্রিপ্টর সংক্রান্ত বিষয়ে নেমিং মেথডের মাধ্যমে তার সিদ্ধান্ত নেয়। ওরাকল নেট পাঁচ ধরনের নেমিং মেথডকে সাপোর্ট করে।
০১. হোস্ট নেমিং :
ইউজারকে তার বর্তমান নেম রিসল্যুশন সার্ভিসের ভেতর থেকে টিসিপি/আইপি এনভায়রনমেন্টে এনাবল করে।
০২. লোকাল নেমিং :
প্রতিটি ক্লায়েন্টের tnsnames.ora ফাইলে নেটওয়ার্ক অ্যাড্রেস লোকেট করা হয়।
০৩. ডিরেকটরি নেমিং :
সেন্ট্রাল ডিরেকটরি সার্ভারে ডাটাবেজ সার্ভিস অথবা নেট সার্ভিস স্টোর করা হয়।
০৪. ওরাকল নেম ৫ :
এক্সটারনাল নেম, ছোট অর্গানাইজেশনগুলো যেখানে অল্পসংখ্যক ডাটাবেজ থাকে যেখানে লোকাল অথবা হোস্ট নেমিং ব্যবহার হয়।
ওরাকল নেট কনফিগারেশন ফাইল
কনফিগারেশন মডেলের ওপর ভিত্তি করে নেটওয়ার্ক কমপিউটারে নিম্নলিখিত ফাইলসমূহকে কনফিগার করতে হয়।
Idap.ora :
এটা ডাটাবেজ সার্ভারে অবস্থান করে। ক্লায়েন্ট কমপিউটারকে সেন্ট্রালাইজ ম্যানেজমেন্ট ফিচারের জন্য কনফিগার করতে হয়। এই ফাইলে ডিরেক্টরি সার্ভারকে অ্যাক্সেস করার মতো প্রয়োজনীয় তথ্যসম্বলিত প্যারামিটার থাকে।
listener.ora :
ডাটাবেজ সার্ভারে অবস্থান করে। নিম্নলিখিত বিষয়সমূহ এতে অন্তর্ভুক্ত থাকে। ০১. প্রোটকল অ্যাড্রেস, ০২. ডাটাবেজ, নন-ডাটাবেজ সার্ভিস, ০৩. লিসেনারের জন্য ব্যবহারযোগ্য কন্ট্রোল ফাইল।
names.ora :
ওরাকল নেম সার্ভারে অবস্থান করে, ধারণ করে লোকেশন, ডোমেইনের তথ্য এবং নেম সার্ভারের জন্য অপশনাল কনফিগারেশন প্যারামিটার।
tnsnames.ora :
লোকাল নেমিং মেথডের জন্য এ ফাইলকে ব্যবহার করা হয়। ক্লায়েন্ট প্রান্তে অবস্থিত এই ফাইলে সার্ভিস নেম অন্তর্ভুক্ত থাকে।
sqlnet.ora :
ক্লায়েন্ট ও ডাটাবেজ সার্ভারে অবস্থান করে।
কনফিগারেশন ফাইলসমূহ ইউনিক্সে $ORACLE_HOME/network/admin এবং উইন্ডোজে
% ORACLE_HOME%/network/admin তৈরি হয়ে থাকে।
বেসিক ওরাকল নেট কনফিগারেশন :
চিত্র-১
ওরাকল নেট প্রতিষ্ঠা করার জন্য ক্লায়েন্ট এবং সার্ভার প্রান্তে আলাদা আলাদাভাবে কিছু ফাইলকে কনফিগার করা হয়ে থাকে। ক্লায়েন্ট প্রান্তে sqlnet.ora এবং tnsnames.ora Ora এবং সার্ভার এন্ডে listener .ora ফাইলটি কনফিগার করা হয়ে থাকে (চিত্র-১)।
সার্ভার সাইড কনফিগারেশন :
সার্ভার প্রান্তে listener.ora ফাইলটি কনফিগার করা হয়ে থাকে। এই ফাইলটি কনফিগার করার আগে অবশ্যই আমাদের বিস্তারিতভাবে জানতে হবে লিসেনার প্রসেস সম্বন্ধে। ওরাকল সার্ভার ক্লায়েন্ট অ্যাপ্লিকেশন থেকে প্রাথমিক কানেকশন লিসেনারের পেয়ে থাকে। মূলত লিসেনার এক বিশেষ প্রসেস, যা কোনো নোডে অবস্থান করে এক বা একাধিক ডাটাবেজের পক্ষ হতে ইনকামিং কানেকশন গ্রহণ করে থাকে। এর চারিত্রিক বৈশিষ্ট্যসমূহ নিম্নরূপ :
০১. লিসেনার প্রসেস একাধিক ডাটাবেজের জন্য লিসেন করতে পারে।
০২. লোডের ভারসাম্যের জন্য একাধিক লিসেনার একটি ডাটাবেজের জন্য কাজ করতে পারে।
০৩. মাল্টিপল প্রটোকল সাপোর্ট করে।
০৪. ওরাকল নেটে লিসেনারের ডিফল্ট নেম Listener
০৫. ওরাকল 9i-এর জন্য এর আগের ভার্সনের লিসেনার কাজ করবে না। যদিও 9i-এর লিসেনার এর আগের ডাটাবেজে কাজ করে।
কানেকশন মেথড :
যখন কোনো ক্লায়েন্ট সার্ভারে কানেকশন রিকোয়েস্ট পাঠায়, তখন লিসেনার অবশ্যই নিম্নলিখিত যেকোনো একটি কাজ করে থাকে।
০১. সার্ভার প্রসেস তৈরি করে এবং তা কানেকশনের জন্য একে পাস করে দেয়।
০২. ওরাকল শেয়ার্ড সার্ভার কনফিগারেশন।
০৩. ডিসপ্যাচার অথবা সার্ভার প্রসেসের কাছে কানেকশন রিডাইরেক্ট করা হয়।
স্পোন এবং বিকুইদ কানেকশন
চিত্র-২
লিসেনার কানেকশন প্রসেস গ্রহণ করার সাথে সাথে ডেডিকেটেড প্রসেস সৃষ্টি করে এবং তা সার্ভার প্রসেসকে দিয়ে দেয়। যদি ওসব নেটওয়ার্ক এন্ড পয়েন্টের ইনহেরিটেন্সকে সাপোর্ট করে, তবেই এই মেথড কাজ করবে। যখন লিসেনার ডেডিকেটেড সার্ভার প্রসেস তুলে নেয় এবং কানেকশন সার্ভার প্রসেসকে দান করে তখন ওই সেশনকে বলা হয় বিকুইদ সেশন। নিম্নলিখিত ইভেন্টসমূহ সে সময় ঘটে থাকে (চিত্র-২)।
০১. লিসেনার ক্লায়েন্ট কানেকশন রিসিভ করে।
০২. লিসেনার ডেডিকেটেড সার্ভার প্রসেস সৃষ্টি করে এবং তা লিসেনার হতে কানেকশন রিকোয়েস্ট পায়।
০৩. এরপর ক্লায়েন্ট সরাসরি ডেডিকেটেড সার্ভারের সাথে সংযুক্ত হয়।
সরাসরি হ্যান্ড অফ কানেকশন
এই প্রক্রিয়ায় লিসেনার ডিসপ্যাচার নামের এক ধরনের সার্ভিস হ্যান্ডেলার ব্যবহার করে, যা ক্লায়েন্ট রিকোয়েস্টকে নির্দেশনা দিতে পারে। যখন কোনো ক্লায়েন্ট রিকোয়েস্ট পাঠায়, তখন লিসেনার নিম্নলিখিত যেকোনো একটি কাজ করে থাকে।
০১. ডিসপ্যাচারের কাছে সরাসরি কানেকশন তুলে দেয়।
০২. ক্লায়েন্টের জন্য একটি রিডাইরেক্ট মেসেজ ইস্যু করে (ডিসপ্যাচারের, অ্যাড্রেস সম্বলিত)। এরপর ক্লায়েন্ট লিসেনারের সাথে নেটওয়ার্ক সেশন টার্মিনেট করে এবং ডিসপ্যাচারের সাথে নেটওয়ার্ক সেশন তৈরি করে। তবে যখনই সম্ভব হয়, তখন লিসেনার সরাসরি হ্যান্ড অফ ব্যবহার করে। তবে রিডাইরেক্ট মেসেজ তখনই ব্যবহার করা হবে, যখন ডিসপ্যাচার লিসেনারের সাপেক্ষে রিসেটে অবস্থান করে।
সরাসরি হ্যান্ড অফ কানেকশনে নিম্নলিখিত ইভেন্টসমূহ ঘটে থাকে।
০১. লিসেনার ক্লায়েন্ট কানেকশন রিকোয়েস্ট রিসিভ করে।
০২. লিসেনার সরাসরি ওই রিকোয়েস্ট ডিসপ্যাচারকে হস্তান্তর করে।
০৩. এরপর ক্লায়েন্ট সরাসরি ডিসপ্যাচারের সাথে সংযোগ স্থাপন করে।
রিডাইরেক্ট সেশন
চিত্র-৩
যখন কানেকশন কোনো প্রক্রিয়ায় স্থাপিত হতে না পারে তখন রিডাইরেক্ট সেশন তৈরি হয়ে যায় (চিত্র-৩)। এই ধরনের কানেকশনে নিম্নলিখিত ধাপ ঘটে থাকে।
০১. ক্লায়েন্ট কনফিগার করা প্রটোকলের মাধ্যমে লিসেনারের সাথে সংযোগ স্থাপন করে এবং লিসেনারকে একটি কানেক্ট প্যাকেট পাঠায়।
০২. লিসেনার এসআইডি ডিফাইন করা আছে কি না, তা চেক করে। যদি তাই হয় তবে লিসেনার নতুন একটি থ্রেড অথবা প্রসেস সৃষ্টি করে, যা নতুন কানেকশনের জন্য কাজ করে থাকে। একটি আইপিএল কানেকশন তখন স্থাপিত হয় নতুন থ্রেড অথবা প্রসেসের সাথে ওই লিসেনারের।
০৩. ফ্রি ইউজার ডিফাইন টিসিপি/আইপি পোর্ট থেকে ওই থ্রেড একটি পোর্টকে বাছাই করে এবং এই তথ্য লিসেনারকে দেয়।
০৪. রিডাইরেক্ট প্যাকেটের ভেতর লিসেনার নতুন পোর্টকে ইনসার্ট করে ক্লায়েন্টকে পাঠায় এবং অরিজিনাল টিসিপি প্যাকেটকে রিসেট করবে।
০৫. রিডাইরেক্ট অ্যাড্রেস অনুসারে নতুন টিসিপি কানেকশন স্থাপিত হবে এবং ওই কানেক্ট প্যাকেট ডেডিকেটেড সার্ভার প্রসেসে ফরওয়ার্ড করে দেবে।
০৬. সবক্ষেত্রে ইনকামিং কানেকশনকে গ্রহণ করবে এবং একটি Accept মেসেজ পাঠাবে।
সার্ভিস কনফিগারেশন এবং রেজিস্ট্রেশন
দুই উপায়ে লিসেনার কনফিগার হয়ে থাকে-
০১. ডাইনামিক, ০২. স্ট্যাটিক।
ডাইনামিক সার্ভিস রেজিস্ট্রেশন : listener.ora ফাইলের প্রয়োজন হয় না।
স্ট্যাটিক সার্ভিস কনফিগারেশন : ১. listener.ora ফাইলের দরকার হয়। ২. oracle ওরাকল এন্টারপ্রাইজ ম্যানেজার এবং অন্য সব সার্ভিসের দরকার হয়।
listener.ora :
স্ট্যাটিক সার্ভিসে লিসেনারের জন্য এই ফাইল কনফিগার রা অত্যাবশ্যক। লিসেনার ফাইলে নিম্নলিখিত কনফিগারেশন ইনফেরমেশন ধারণ করে : ০১. লিসেনারের নাম, ০২. লিসেনারের অ্যাড্রেস, ০৩. যে ডাটাবেজ লিসেনার ব্যবহার করে এবং ০৪. লিসেনারের প্যারামিটার।
নিচে একটি লিসেনারকে কনফিগার করার প্রক্রিয়া দেখানো হলো-
1. LISTENER =
2. (ADDRESS_LIST =
3. (ADDRESS= (PROTOCOL= TCP)(Host= stc-sun02)(Port= 1521))
)
4. SID_LIST_LISTENER =
5. (SID_LIST =
6. (SID_DESC =
7. (ORACLE_HOME= /home/oracle)
8. (GLOBAL_DBNAME = ORCL.us.oracle.com)
9. (SID_NAME = ORCL)
)
10. ...sample additional SID description ...
)
একটি ডিফল্ট লিসেনার ফাইলে নিম্নলিখিত প্যারমিটারসমূহ থাকে :
লিসেনারের ডিফল্ট নেম LISTENER
ADDRESS_LISTপ্যারামিটার কথা লিসেনার কোন আড্রেস ব্লক লিসেন করবে- তা নির্দিষ্ট করা থাকে।
Port= 1521 TCP/IP প্রটোকলের ডিফল্ট পোর্ট।
SID_LIST_LISTENERগুলো কোন কোন SID ডিফাইন করতে হয়।
ডিফাইন করা হয় যদি একাধিক SID প্রত্যয়ন করা হয়।
প্রতিটি ডিফাইন SID -র জন্য SID_DESC প্যারামিটার ডিফাইন করতে হয়।
ওরাকল হোম লোকেশন সার্ভিস আইডেনটিফাই করে ।
গ্লোবাল ডাটাবেজের নাম থাকে।
লিসেনার কোন SID-এর অনুকূলে কানেকশন গ্রহণ করবে তা বলা থাকে।
লিসেনার কন্ট্রোল ইউটিলিটি কমান্ড লাইন অথবা LSNRCTL প্রম্ট ইস্যু করা হয়।
ইউনিক্স কমান্ড লাইন সিনট্যাক্স :
$ lsnrctl
প্রম্ট সিনট্যাক্স
LSNRCTL>
স্টার্টিং লিসেনার
LSNRCTL> START [listener_name]
or
$ lsnrctl start [listener_name]
স্টর্টিং লিসেনার
LSNRCTL> STOP [listener_name]
or
$ lsnrctl stop [listener_name] (চলবে)
কজ ওয়েব
ফিডব্যাক : ifthekhar@infobizsol.com