গত তিনটি সংখ্যায় ওরাকল ডাটাবেজের বেসিক আর্কিটেকচার এবং বিভিন্ন স্টার্টআপ ও শাটডাউন মোডে এটা কিভাবে কাজ করে, তার বর্ণনা দেয়া হয়েছিল। এ সংখ্যায় আলোচনা করা হয়েছে কন্ট্রোল ফাইল এবং লগ ফাইল সম্পর্কিত বিষয় নিয়ে।
কন্ট্রোল ফাইল
কন্ট্রোল ফাইল একটি ছোট বাইনারি ফাইল। ডাটাবেজ স্টার্ট এবং সার্থকভাবে পরিচালনার জন্য কন্ট্রোল ফাইল অত্যাবশ্যকীয়। একটি কন্ট্রোল ফাইল শুধু একটি ওরাকল ডাটাবেজের সাথে সম্পর্ক স্থাপন করে। ডাটাবেজ ওপেন হওয়ার আগে কন্ট্রোল ফাইল রিড করে নির্ধারণ করা হয় কোন ভ্যালিড স্টেটে ডাটাবেজকে ব্যবহার করা হবে।
কন্ট্রোল ফাইল ক্রমাগত আপডেট হতে থাকে। তাই একে লেখার জন্য সবসময় প্রস্ত্তত থাকতে হয়। এর মধ্যে সংরক্ষিত তথ্য শুধু সার্ভার মাধ্যমে আপডেট হয়ে থাকে। কোনো ডিবিএ অথবা প্রান্ত ইউজার এই ফাইল এডিট করতে পারে না।
কোনো কারণে একে অ্যাক্সেস করতে না পারলে ডাটাবেজ ঠিকমতো ফাংশন করতে পারবে না। যদি কন্ট্রোল ফাইলের সব কপি নষ্ট বা হারিয়ে যায়, তাহলে অবশ্যই ডাটাবেজ ওপেন করার আগে একে রিকোভার করতে হবে।
কন্ট্রোল ফাইল যা ধারণ করে
০১. ডাটাবেজের নাম এবং আইডেন্টিফায়ার।
০২. ডাটাবেজ তৈরির সময়।
০৩. টেবিল স্পেসের নাম।
০৪. সব ডাটা এবং অনলাইন রিডু লগ ফাইলের নাম এবং লোকেশন।
০৫. বর্তমান অনলাইনের রিডু লগ ফাইলের সিকোয়েন্স নম্বর।
০৬. চেক পয়েন্টের তথ্য।
০৭. সূচনা এবং সর্বশেষ আনডু সেগমেন্ট।
০৮. ব্যাকআপের তথ্য।
কন্ট্রোল ফাইলের মাল্টিপ্লেক্সিং
ন্যূনতম বিপদের হাত থেকে কন্ট্রোল ফাইলকে রক্ষা করার জন্য এর বেশ কিছু কপি বিভিন্ন ফিজিক্যাল লোকেশনে কপি করে রাখা হয়। এর মূল উদ্দেশ্য যাতে পরে ডাটাবেজ ওপেন করার সময় কন্ট্রোল ফাইল করাপ্ট করলেও এর মধ্য থেকে কাউকে ব্যবহার করে কোনোরূপ রিকোভার না করে ইনস্ট্যান্সকে ওপেন করা যায়।
একটি কন্ট্রোল ফাইল আট বার মাল্টিপ্লেক্সিং করা যায়, ০১. ডাটাবেজ তৈরি করার সময়, ০২. পরে সংযুক্ত করে।
SPFile ব্যবহার করে কন্ট্রোল ফাইল মাল্টিপ্লেক্সিং
ধাপ-
০১. ALTER SPFILE কমান্ড দেয়া
SQL> ALTER SYSTEM SET control files =
‘$HOME/ORADATA/u01/ctrl01.ctl’,
‘$HOME/ORADATA/u02/ctrl02.ctl’ SCOPE=SPFILE;
০২. ডাটাবেজ শাটডাউন করা
SQL> shutdown normal
০৩. কপি কমান্ড দিয়ে সংযুক্ত করা
$ cp $HOME/ORADATA/u01/ctrl01.ctl
$HOME/ORADATA/u02/ctrl02.ctl
০৪. ডাটাবেজ স্টার্টআপ করা
SQL> startup
PFile ব্যবহার করে কন্ট্রোল ফাইল মাল্টিপ্লেক্সিং
ধাপ-
০১. ডাটাবেজ শাটডাউন করা
SQL> shutdown normal
০২. কপি কমান্ড দিয়ে নতুন কন্ট্রোল ফাইল তৈরি
$ cp control01.ctl .../DISK3/control02.ctl
০৩. পি ফাইলে কন্ট্রোল ফাইলের নাম সংযুক্তকরণ
CONTROL_FILES = (/DISK1/control01.ctl,
/DISK3/control02.ctl)
০৪. ডাটাবেজ স্টার্টআপ করা
SQL> startup
কন্ট্রোল ফাইলের তথ্য সংগ্রহ
০১. V$CONTROLFILE :
ইনস্ট্যান্সের সাথে সম্পর্কযুক্ত সব কন্ট্রোল ফাইলের নাম এবং স্ট্যাটাস।
০২. V$PARAMETER :
সব প্যারামিটারে লিস্ট এবং স্ট্যাটাসের অবস্থান।
অনলাইন রিডু লগ ফাইল :
অনলাইন রিডু লগ ফাইল সরবরাহ করে থাকে রিডুসংক্রান্ত সব ট্রানজেকশনের তথ্য।
সব ট্রানজেকশন সিকুয়েন্সিয়ালি রিডু লগ বাফারে লেখা হয়। তারপর এগুলো ফ্ল্যাশ হয়ে অনলাইন রিডু ফাইলে সংরক্ষিত হয়। যদি কোনো কারণে ইনস্ট্যান্স ওপেন হতে ব্যর্থ হয় (যেমন- মিডিয়া ফেইলিয়র), তবে রিডু লগ ফাইল থেকে ডাটা রিকোভারি করা হয়ে থাকে।
গঠন :
ডাটাবেজ অ্যাডমিনিস্ট্রেটর অনলাইন রিডু ফাইল বেশ কিছু কপি করে রাখে, যাতে পরে ওখান থেকে ডাটা রিকোভারি করতে পারে।
গ্রুপ :
একই ধরনের রিডু লগ ফাইলের সেটকে বলা হয় রিডু লগ ফাইল গ্রুপ।
কমপক্ষে দুইটি গ্রুপ থাকা একটি ডাটাবেজের জন্য বাধ্যতামূলক।
মেম্বার :
একটি গ্রুপের প্রতিটি লগ ফাইলকে বলা হয় লগ মেম্বার। এদের একটি স্বতন্ত্র সিকুয়েন্স বা ক্রমসংখ্যা থাকে। এদের আকার একই রকম হয়ে থাকে। ওরাকল সার্ভার প্রতিটি লগ রাইট করার সময় একটি নাম্বার অ্যাসাইন করে থাকে। বর্তমান সিকুয়েন্স নাম্বার কন্ট্রোল ফাইলে এবং প্রতিটি ডাটা ফাইলের হেডারে সংরক্ষিত থাকে।
কিভাবে রিডু লগ ফাইল কাজ করে
ওরাকল সার্ভার সিকুয়েন্সিয়ালি সব পরিবর্তন রিডু লগ বাফারে ধারণ করা হয়। রিডু লগ বাফার হতে এই পরিবর্তিত তথ্য LGWR প্রসেস কারেন্ট অনলাইন রিডু লগ ফাইলে সংরক্ষণ করে।
নিম্নলিখিত পরিস্থিতিতে LGWR প্রসেসে এই কাজ করা হয়ে থাকে-
০১. যখন কোনো ট্রানজেকশন সংঘটিত হয়ে থাকে।
০২. এক-তৃতীয়াংশ লগ বাফার পূর্ণ হলে।
০৩. এক মেগাবাইটের বেশি ডাটা পরিবর্তিত হলে ।
০৪. প্রসেস পরিবর্তিত ডাটা ব্লগ ডাটা ফাইলে লেখা লাগে।
গ্রুপ সংযুক্তকরণ
ALTER DATABASE ADD LOGFILE GROUP 3
(‘$HOME/ORADATA/u01/log3a.rdo’,
‘$HOME/ORADATA/u02/log3b.rdo’)
SIZE 1M;
গ্রুপে অনলাইন রিডু লগ ফাইল সংযুক্তরকণ
ALTER DATABASE ADD LOGFILE MEMBER
‘$HOME/ORADATA/u04/log1c.rdo’ TO GROUP 1,
‘$HOME/ORADATA/u04/log2c.rdo’ TO GROUP 2,
‘$HOME/ORADATA/u04/log3c.rdo’ TO GROUP 3;
গ্রুপ ড্রপ করা
ALTER DATABASE DROP LOGFILE GROUP 3;
গ্রুপ মেম্বার ড্রপ করা
ALTER DATABASE DROP LOGFILE MEMBER
‘$HOME/ORADATA/u04/log2c.rdo’;
অনলাইন রিডু লগ ফাইলের অবস্থান অথবা নাম বদলানো :
নিম্নলিখিত ধাপগুলো অনুসরণ করে রিডু লগ ফাইলের অবস্থান অথবা নাম পরিবর্তন করা যায়।
ডাটাবেজ শাটডাউন করা
SQL> shutdown immediate
নতুন লোকেশনে লগ ফাইল কপি করা
মাউন্ট মোডে ডাটাবেজ ওপেন করা
SQL>CONNECT /as SYSDBA
SQL> STARTUP MOUNT
ALTER DATABASE RENAME কমান্ড দেয়া
ALTER DATABASE RENAME FILE
‘$HOME/ORADATA/u01/log2a.rdo’
TO ‘$HOME/ORADATA/u02/log1c.rdo’;
ডাটাবেজ ওপেন করা।
SQL> ALTER DATABASE OPEN;
মেম্বার এবং গ্রুপের তথ্য সংগ্রহ করার জন্য আমরা দুটি ভিউ ব্যবহার করতে পারি :
০১. V$LOG
০২. V$LOGFILE
নিম্নলিখিত কোয়ারি দিয়ে আমরা কন্ট্রোল ফাইল থেকে রিডু লগ ফাইলের তথ্য জানতে পারি :
SQL> SELECT group#, sequence#, bytes, members, status 2 FROM v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
1 688 1048576 1 CURRENT
2 689 1048576 1 INACTIVE
2 rows selected.
কজ ওয়েব
ফিডব্যাক : ifthekhar@infobizsol.com