دليل إدارة وتشغيل قواعد بيانات أوراكل الفهرس

بنية قاعدة بيانات الأوراكل الفعلية

قاعدة بيانات أوراكل Oracle Database هي مجموعة من الملفات تودي وظائف محددة . ولكن بشكل منطقي هي مجموعة من مستخدمي الأوراكل Oracle accounts users ( Schemas ) . كل مستخدم معرف بواسطة إسم مستخدم وكلمة مرور Username and Password , وكل إسم مستخدم هو وحيد ولا يتكرر في نفس قاعدة البيانات وكل مستخدم يملك Ownes مجموعة من الكينونات Objects مثل الجداول وغيرها . للوصول إلي تلك الكينونات يجب الأتصال connect بالمستخدم الذي يملك ذلك المكون Object , ولا يمكن التعامل مع قاعدة البيانات دون الأتصال بمستخدم . جميع الكينونات التي ينشئها المستخدم تصبح مملوكه له ولا يمكن للمستخدم ان يقوم بإنشاء كينونتين بنفس الأسم , بمعني أن مسميات الكينونات لا يمكن أن تتكرر لنفس المستخدم , ولكن يمكن استخدام اسماء متشابهة داخل مستخدمين مختلفين .

والآن نحاول أن نتعرف علي المكونات الأساسية لقاعدة البيانات , فكما ذكرنا سابقاّ , فإن قاعدة البيانات تحوي عدد من الملفات وأهم هذه الملفات هي :

مستخدم الأوراكل Oracle User يختلف عن مستخدم نظام التشغيل Opearting System User

والآن نحاول أن نتعرف علي المكونات الأساسية لقاعدة البيانات , فكما ذكرنا سابقاّ , فإن قاعدة البيانات تحوي عدد من الملفات وأهم هذه الملفات هي :

ملفات قاعدة البيانات Database files

يتم إستخدام هذه الملفات في تخزين البيانات المتعلقة بكينونات المستخدم , مثل الجداول التي يتم تخزين بياناتها في ملفات قاعدة البيانات , ولاسترجاع بيانات الجدول يتم قراءة تلك البيانات من هذه الملفات . وعليه فإن هذه الملفات تحوي البيانات التي تديرها قاعدة البيانات .

لا يقوم مبرمج قاعدة البيانات بالتعامل مع تلك الملفات مباشرة , وإنما يتم التعامل مع تلك الملفات من خلال مسمي منطقي لها يسمي الجدول الفراغي Tablespace , بحيث يحوي كل جدول فراغي علي ملف واحد أو أكثر من ملفات قاعدة البيانات . ولتوضيح ذلك نفترض أن لدينا ثلاثة ملفات من ملفات قاعدة البيانات هي data1.dbf , data2.dbf , info1.dbfوكان لدينا الجدول الفراغي Data وهو يحوي data1.dbf و data2.dbf

بالإضافة الجدول الفراغي Info وهو يحوي الملف info1.dbf , فإنه يمكننا أن ننشي جدول علي الجدول الفراغي Data أو Info ولكن لا يمكننا استخدم الملفات مباشرة كما هو موضح في الشكل التالي :

الجداول الفراغية وملفات قاعدة البيانات

ملفات التحكم Control Files

كل قاعدة بيانات تحوي ملف تحكم واحد ( عادة يتم إنشاء ثلاثة نسخ لحالات الفقدان ) يتم فيه تسجل البيانات الأساسية عن قاعدة البيانات مثل تاريخ الإنشاء ومواقع ملفات قاعدة البيانات وملفات الأرجاع وغيرها من البيانات الأساسية المتعلقة بقاعدة البيانات .

ملفات الإرجاع Redo Logs

ملفات الإرجاع هي ملفات تستخدم لتخزين البيانات بشكل مؤقت إلي حين كتابتها في ملفات قاعدة البيانات بشكل نهائي , حيث أنه لن يكون من المناسب كتابة التعديلات التي يجريها المستخدم علي كينوناته مباشرة ومع كل عملية تعديل , وإنما يتم تجميع تلك التعديلات في تلك الملفات إلي حين امتلاء تلك الملفات أو تجميعها لفترة محدده , ومن ثم كتابتها إلي ملفات قاعدة البيانات . في لحظة تفريغ ملفات الإرجاع في ملفات قاعدة البيانات يجب أن تستمر قاعدة البيانات في تلقي التعديلات ولذا فإنه يجب وجود ملفين أو أكثر من ملفات الإرجاع في كل قاعدة البيانات , ليتم استخدامهم بشكل متناوب كما في الشكل التالي

حركة سجلات الإرجاع

ملفات الأرشفة Archive log files

عند تشغيل قاعدة البيانات بالنمط Archivelog , فإن قاعدة البيانات تقوم بعمل نسخة من كل redo log لحظة كتابته في ملفات قاعدة البيانات , كل ملف يتم إنشاؤه يسمي Archive log ويمكن استخدامه كنسخ احتياطي لحركة البيانات يمكن أن يستخدم لاحقاً في استرجاع قاعدة البيانات في حالات الطوارئ , أو لتحديث قاعدة البيانات الاحتياطية الجاهزة standby database كما هو موضح بالشكل إدناه :

ملفات الإرجاع

ملف الوسائط Parameters file

هو ملف يحوي قائمة بوسائط إعدادات قاعدة البيانات , تتم قراءته عند تشغيل قيم قاعدة البيانات , وتؤثر القيم المحددة فيه في إداء قاعدة البيانات , ويمكن من خلاله التحكم في أداء قاعدة البيانات . يتكون ملف الوسائط الأبتدائية من قيم لا يمكن تعديلها بعد تشغيل قاعدة البيانات وقيم أخري يمكن تعديلها.

ملفات المتابعة و التنبيه Trace and alert file

كل عملية خادم Server process يمكن أن تقوم بتسجيل ملفات متابعة (trace files) توضح حالتها , فعندما يحدث خطأ داخلي فإن قاعدة البيانات تقوم بتسجيل الخطأ مع معطيات أخري تساعد في فهم الإشكالية إن وجدت .

يتم استخدام بعض البيانات الموجودة في ملفات المتابعة في تحسين أداء التطبيقات وفي معرفة كيفية أداء المكونات المختلفة . البيانات الموجود في ملفات المتابعة تكون أحيانا معده لمدير قاعدة البيانات dba , وأحيانا أخري تكون معده لاستخدام الدعم الفني للأوراكل , ويمكن إرسالها إلي مركز الدعم الفني بناء علي ترخيص الأوراكل المستخدم .

أما ملف التنبيه (aler file) فهو ملف واحد يتم فيه تسجيل نوعية خاصة من المعلومات المعدة لاستخدام مدير قاعدة البيانات , وتشمل إما بيانات توضيحية مثل بيانات عن زمن وعملية كتابة ملفات الأرشفة أو رسائل تنبيه مثل رسائل الحاجة إلي زيادة الذاكرة أو رسائل أخطاء قاعدة البيانات .

يجب علي مدير قاعدة البيانات مراجعة هذه الملفات بصفة دوريه والتأكد من عدم وجود مشاكل , كما يمكنه تحسين أداء قاعدة البيانات بإنشاء ملفات متابعة لوظائف معينة يحددها هو ومن ثم تحليل تلك الملفات

في حالة تفعيل المتابعة لجملة أو عبارة معينة في قاعدة البيانات (sql statment) يجب التأكد من إيقاف المتابعة بعد الحصول علي النتائج , وذلك أن قاعدة البيانات ستستمر في بناء ملفات المتابعة لتلك الجملة كلما تم تنفيذ تلك الجملة

ملفات النسخ الإحتياطي Backup files

ليتم استرجاع ملفات قاعدة البيانات يجب وجود نسخ احتياطية من تلك الملفات , وهذه الملفات هي ملفات النسخ الاحتياطي وهي يمكن أن تنتج بواسطة أكثر من طريقة أو أسلوب .

بنية قاعدة بيانات الأوراكل المنطقية

يمكن النظر إلي قاعدة البيانات من عدة أوجه بناء علي وظائفها فإن حاولنا تفصيل قاعدة البيانات من الناحية البنيوية المنطقية لفهم وظيفة تخزين البيانات فإنها تكون كما هو موضح بالشكل التالي :

المكونات المنطقية لقاعدة البيانات

الجدول الفضائي Tablespace

تتكون قاعدة البيانات من جدول فضائي ((tabelspace واحد أو أكثر وهي وحدات تخزين منطقية , وكل جدول فضائي يحوي بشكل فعلي ملف أو أكثر يسمي ملف بيانات (Datafile) , وهي ملفات تابعة لنظام التشغيل المستخدم .

أولا : أنواع الجداول الفضائية

  • System tablepace

يتم فيه تخزين بيانات عن المكونات الموجودة في قاعدة البيانات من جداول وفهارس وغيرها , فمثلا أسماء الجداول التي يقوم المستخدم بإنشائها وأسماء وأنواع الحقول يتم تخزينها في هذا الجدول الفضائي . بالإضافة إلي ذلك فإنه يحوي فهارس النظام و برامج قاعدة البيانات PL/SQL programs وغيرها من المكونات نذكر منها علي سبيل الذكر لا الحصر الأتي :

  • Database Procedures
  • Database Functions
  • Database Triggers
  • User tablespace

يستخدم هذا الجدول الفضائي في تخزين بيانات هياكل التخزين المختلفة التي ينشئها المستخدم , فحين يقوم مستخدم ببناء جدول فإن بيانات ذلك الجدول يتم تخزينها في هذا النوع من الجداول الفضائية . لبناء جدول فضائي فإننا نقوم بكتابة الأمر التالي

create tablespace ts_something logging datafile '/dbf1/ts_sth.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local;

  • Temporary tablespace

يتم استخدامه تخزين البيانات بشكل موقت المؤقت للبيانات وذلك لإنجاز عمليات معينة مثل الترتيب والتجميع , فعندما يتم الاستعلام عن البيانات باستخدام group by أو order by فإنه يتم إسترجاع البيانات وتجميعها أو ترتيبها في الجدول الفضائي من النوع Temporary بشكل مؤقت إلي حين إكمال عبارة الاستعلام

عند بناء جدول أو فهرس بإستخدام عبارة create table أو عبارة create index يمكن تحديد الجدول الفضائي (tablespace) الذي سيتم فيه تخزين بيانات تلك الهياكل حسب الصيغة التالية :
CREATE TABLE table-name …. TABLESPACE tablespace-name
CREATE INDEX index-name …. TABLESPACE tablespace-name

  • القطع Segments

القطعة هي المساحة التي تحوي بيانات هيكل بيانات معين يمكن أن يكون جداول أو فهارس أو غيره , فمثلا المساحة من الجدول الفضائي التي تحوي بيانات جدول معين تسمي قطعة الجدول (the table segment).

القطعة تكون ضمن جدول فضائي واحد , ولا يمكن أن تمتد قطعة واحدة بين أكثر من جدول فضائي , ويمكن أن نجد داخل

  • tables
  • indexes
  • termporary segments
  • rollback segments
  • الإمتدادات Extends

كل قطعة من القطع أعلاه تحوي علي إمتداد واحد أو أكثر , والأمتداد هو مجموعة متراصة من كتل البيانات .

  • كتل البيانات Datablocks

هي الوحدات الأساسية في تخزين البيانات , فكل سطر في جدول يخزن بياناته في كتله (block) واحدة أو أكثر , الشكل التالي يوضح مكونات كل كتله

بنية كتل البيانات (data block)

الأجزاء header,table directory,row directory تسمي row header أما الجزئين emptyp space و row data فتسمي row data .

في بعض الحالات لا تكفي كتلة بيانات واحدة لتخزين كل السطر وذلك بسبب أن البيانات المدخلة أو المعدلة أكبر من سعة الكتلة , ففي حالة أن البيانات المدخلة أكبر من سعة كتلة البيانات فإن السطر يتم تخزينه في أكثر من كتله واحدة علي شكل سلسلة من كتل وحينها تعرف هذه الحالة بالمصطلح block chain .

أما في حالة التعديل ببيانات اكبر من سعة الكتلة فإن السطر بالكامل يتم ترحيله إلي كتله جديد بمساحة أكبر ويتم حجز الكتلة القديمة وتوضيح أن البيانات في هذه الكتلة تم ترحيلها إلي موقع آخر وذلك لأنه لا يمكن تعديل معرف البيانات rowid المرتبط بالسطر الذي تم تعديله , وفي هذه الحالة فإن هذا السطر يوصف بأنه تم ترحيله وهو ما يسمي إصطلاحاً row megration.

في حالة وجدود row chain أو migration فإن ذلك يؤثر سلبا علي أداء الإستعلامات , وذلك أن النظام سيحتاج لان يبحث في عدد أكبر من كتل البيانات .

ذكرنا سابقا بأن معرف السطر لا يتغير في حالة حدوث سلسلة أو ترحيل للسطر , ولفهم معرف السطر بشكل جيد فإننا نورد ما يلي

  • معرف السطر rowid هو العنوان الفعلي للسطر , فكل سطر في الجدول يجب أن يكون له معرف سطر وحيد لا يتكرر مع غيره من السطور.
  • صيغة معرف السطر هي 000000FFFBBBBBBRRR بحيث

000000 هو رقم المكون (object number)

FFF هو رقم ملف البيانات ( Datafile )

BBBBBB هو رقم كتلة البيانات (Data block) التي تحوي السطر , وهو مرتبط برقم ملف البيانات (Datafile) , بمعني أنه يجب استخدامها كليهما وذلك أن نفس الرقم الكتلة يمكن أن يوجد في ملفي بيانات مختلفين .

RRR هو رقم السطر .

المثال التالي يمكنك من معرفة بيانات التخزين بناء علي معرف السطر :

SELECT ROWID ,
SUBSTR(ROWID,1,6) "OBJECT",
SUBSTR(ROWID,7,3) "DAT",
SUBSTR(ROWID,10,6) "BLOCK",
SUBSTR(ROWID,16,3) "ROW"
FROM EMP;