الاثنين، 5 أبريل 2010

الكتاب العربى لإدارة قاعدة البيانات اوركل ممتاز مبسط ورائع الجزء الاول مكونات قاعدة البيانات أوركل

الكتاب العربى لإدارة قاعدة البيانات اوركل ممتاز مبسط ورائع الجزء الاول مكونات قاعدة البيانات أوركل وإنشاء قاعدة البيانات أوركل
المقدمة


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

هذا الكتاب يقول لك هكذا تنجز مهامك فى إدارة قاعدة البيانات بأسط الطرق وبأقل جهد ودون تًكلف او تعقيد ، حاولت أن اتناول فيه المادة العلمية بإسلوب سهل بسيط ؛ فكنت احياناً أجمع عدة مواضيع فى فصل واحد لارتباطهما فى الفكرة والمضمون ، واحياناً اقدم واحياناً اُرجئ الى حيث تكون المعلومة افيد واقيم.

أما الجانب العملى فكان له اوًفر الحظ والنصيب ، فقد طرحته فى شكلين ، الاول كتابة النصوص العملية فى قوالب بحيث يستطيع القارئ نسخها وتنفيذها او تعديلها متى شاء ، والثانى صور لتنفيذ النصوص على محرر الSQL*PLUS لتثبت لك الفكرة بأكثر من طرح.

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

وقبل البدء لى عندك طلب ايها القارئ ، دعوة خالصة منك أن يعفو الله عنى فإنى لا أعلم أحد عنده من الذنوب مثل ما لدى ولكن أسأل الله أن يديم علينا ستره فى الدنيا والاخره.









كتبه أبى صلاح ميرغنى (لباشا)










































































عند الحديث عن قواعد البيانات لابد من البدء عن مكونات قاعدة البيانات وطريقة عملها حتى يتسنى لنا بعد ذلك الحديث عن التفاصيل التى لا يمكن إستيعابها حتى نفهم تكوينها وطريقة عملها أولاً .


ً



















قاعدة البيانات اوركل تتكون من جزئين رئيسيين وهما Oracle Instance و Oracle Database وسنتحدث عن كل منها بالتفصيل فيما بعد .










Oracle Instance 1.1:
وهى تتكون من جزئين رئيسيين كما فى الشكل اعلاه :-
• Memory Structure
• Background Processes




Memory Structure 1.1.1:

وهى تتكون لحظة فتح الInstance وهى عبارة عن جزء من الذاكرة يتم تخصيصه لعمل قاعدة البيانات اوركل وهى تتكون من جزئيين :-

1-(SGA) System Global Area
2- Program Global Area (PGA)

System Global Area (SGA) 1.1.1.1:


وتسمى ايضاً Shared Global Area وهى جزء من الذاكرة يخصص للمعلومات التى تكون مشتركة ومتاحة لجميع مستخدمى قواعد البيانات ، وتحتوى على معلومات التحكم التى تستخدم من قبل الOracle Server وهى تتكون فى الVirtual Memory وتتكون لحظة فتح الInstance ، ومقاس هذه الذاكرة يتحدد بواسطة المتغير SGA_MAX_SIZE فى ملف المتغيرات (Parameter File) ، وهى ذاكرة Dynamic أى يمكن تغيير مقاسها دون إغلاق قاعدة البيانات وهى تتكون من قسمين :-
1- Mandatory Memory
2- Optional Memory




: Mandatory Memory
1- Shared Pool: ويتم التحكم فى مقاس هذه الذاكرة بواسطة المتغير SHARED_POOL_SIZE ، وتحتوى على جزئين :
1- Library Cache
2- Data Dictionary Cache
2- Database Buffer Cache : ويتم التحكم فى مقاس هذا الجزء من الذاكرة بواسطة المتغير DB_CACHE_SIZE .

وهكذا باقى اجزاء الذاكرة يتم التعديل بنفس الطريقة السابقة .
3- Redo Log Buffer ويتم تحديد مقاس هذا الجزء من الذاكرة بواسطة المتغير LOG_BUFFER .

: Optional Memory
1- Large Pool
2- Java Pool
3- Streams Pool







والجدول أدناه يوضح أجزاء الذاكرة SGA :

Simple Descriptions Areas Of Influence Size Controlled By SGA Component
Oracle need to allocate & deallocate memory as SQL or Procedural Code is executed based on the individual needs of users sessions and in accordance to the LRU algorithm Library cache
*Shared SQL Areas
*Private SQL Areas
*PL/SQL Procedures and Packages
*Various Control Structure


SHAREAD_POOL_SIZE Shared Pool

Oracle 6 thru 10g
Highly accessed memory structure that provide information on object structure to SQL statements being parsed

Dictionary Cache
* Row Cache

Holds changes made to data and allows for reconstruction of data in the case of failure * Redo entries LOG_BUFFER Redo Log Buffer

Oracle 6 thru 10g
Holds copies of data requested by SQL and reduces requests to disk by having data in memory
You may have many different buffer caches that help segregate on usage patterns * Write List
* LRU List DB_2K_CACHE_SIZE
DB_4K_CACHE_SIZE
DB_8K_CACHE_SIZE
DB_16K_CACHE_SIZE
DB_32K_CACHE_SIZEDB_KEEP_CACHE_SIZE
DB_RECYCLE_CACHE_SIZE Database Buffer Cache


Oracle 6 thru 10g
For large memory allocations * Shared server
* Oracle XA
I/O Server Processes
Backup & Restore LARGE_POOL_SIZE Large Pool


Form Oracle 8i
Memory available for the java memory manager to use for all things Java *Run stats
*Methods
*Classes
*Session code
Data in JVM JAVA_POOL_SIZE Java Pool

From Oracle 8i
New to Oracle 10g
Memory available for Stream Processing *Stream activity STREAMS_POOL_SIZE Streams Pool

From Oracle 10g
يمكن معرفة مقاس الSGA بالنظر فى ملف المتغيرات (Parameters File) ، او عن طريق كتابة الامر التالى :-
SQL> SHOW SGA

Related Views:
* V$SGA




Program Global Area (PGA) 1.1.1.2:
وتسمى أيضاً Process Global Area وهو جزء من الذاكرة يتكون خارج الInstance وهو يحتوى على معلومات خاصة للServer Process الحالى ويتكون هذا الجزء من الذاكرة لحظة إنشاء الServer Process وتنتهى لحظة إنتهاء الServer Process . وهذا الجزء ليس متاحة لباقى المتصلين أى لكل Server Process فى قاعدة البيانات PGA خاصة به تحتوى على معلومات خاصة به .وهى تحتوى على ثلاثة أجزاء :-
1- Private SQL Area
2- Session Memory
3- SQL Work Area





1.1.2 Background Processes





وقبل الحديث عن ال Background Processes لا بد من الذكر بأن هناك ثلاثة انواع من الProcesses :-

1- User process :- وهو يبدأ العمل عندما يطلب المستخدم الإتصال بقواعد البيانات عن طريق احد ادوات قواعد البيانات .
2- Server Process :- ويتم انشاؤه لحظة الاتصال بالInstances بعد طلب ال User Process الاتصال بقواعد البيانات فيتم التحقق من المستخدم فلحظة الاتصال هى لحظة إنشاء الServer Process وهو يكون بين الUser Process والInstance ، فلكل User Process فى قاعدة البيانات Server Process خاص به هذا إذا كنا نعمل فى بيئة الDedicated Server أما إذا كنا نعمل فى بيئة الShared Server فالأمر يختلف قليلاً ، عموماً سنناقش هذا الامر لاحقاً .
3- Background Processes: - وهو موضوع نقاشنا فى هذه الفقرة وهى عبارة عن معالجات تعمل فى قاعدة البيانات بحيث تقوم بمهام مختلفة تبدأ العمل لحظة فتح الInstance ، وتنقسم الى قسمين:-

1- Mandatory: لا بد من عملها لحظة فتح الInstance .
2- Optional : وبدونها تستطيع الInstance العمل وهذا النوع يعمل فى بعض الاحوال التى يتم فيه تهيئة قاعدة البيانات للعمل على خيارات معينة .





Mandatory Processes 1.1.2.1:
ولا يمكن لقاعدة البيانات العمل دون هذه ال Processes ، وهى:-

1- System Monitor (SMON) :
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 1 ، ويقوم بعمل الاسترجاع (Recovery) إذا حصل مشكلة فى الInstance ، واذا كنا نعمل على البيئة (RAC) Real Application Clusters وهى عمل اكثر من Instance فى قاعدة البيانات الواحدة فإن الSMON فى الInstance السليمة يستطيع عمل Recovery للInstance الاخرى التى حدث فيها مشكلة .

كذلك يستطيع الSMON عمل تنظيف للSegments المؤقتة التى لم يتم استخدامها من فترة طويلة .

2- Process Monitor (PMON) :
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 1 ، ويقوم بعمل Recovery للProcess إذا حصلت مشكلة فى الUser Process ، كذلك يقوم تنظيف الDatabase Buffer Cache لإتاحة المصادر فى هذا الجزء من الذاكرة للProcess ، وكذلك يقوم بتسجيل المعلومات حول الInstance والDispatcher Processes ، وايضاً يقوم بعمل اختبار للDispatcher Processes والServer Processes ويقوم بعمل إعادة تشغيل فى حالة وجود مشكلة فيهم .

3- Log Writer (LGWR) :
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 1 ، ويقوم بعمل كتابة للبيانات الموجودة فى الRed Log Buffer ويكتبها فى الRedo Log Files ، ويقوم بهذه العملية فى الاحوال الاتية :-
1- لحظة عمل Commit .
2- كل ثلاث ثوانى .
3- عندما يمتلئ ثلث الRedo Log Buffer .
4- لحظة عمل DBWn ،سنناقش هذا لاحقاً .
كذلك االLGWR يقوم بكتابة التزامن للRedo Log Groups فإذا حدثت مشكلة فى Redo log File فإن الLGWR يقوم بإرسال خطأ لملف Alert Log .
ملاحظة : يجب الانتباه إلى أنه لحظة عمل Commit فإن الLGWR يقوم بكتابة البيانات المثبتة وغيرها الموجودة فى الRedo log Buffer إلى الRedo Log File .
نستفيد من عملية الLGWR فى الاسترجاع إذا حصلت مشكلة فى الInstance .


4- Database Writer (DBWn):
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 20 ، ويقوم بكتابة البيانات الموجودة فى الDatabase Buffer Cache للDatafiles ، ويمكن تهيئة قاعدة البيانات لتعمل بأكثر من DBWn حسب الحاجة واقصلى عدد 20 .والمتغير الذي يتحكم فى عدد هذا الProcess هو DB_WRITER_PROCESSES .

ويعمل هذا الProcess بكتابة البيانات الموجودة فى الDatabase Buffer Cache للDatafiles فى الحالات الاتية :-
1- لحظة حدوث الCheckpoint وسنتحدث عن ذلك لاحقاً .
2- كل ثلاث ثوانى .
3- لحظة حدوث الLog Switch وسنتحدث عنه لاحقاً .
4- لحظة إغلاق قاعدة البيانات .
5- لحظة وصول الBlock للقيمة المحددة .
6- لحظة إمتلاء الBuffer .
7- عند عمل الاتى :-
* Tablespace Offline
* Tablespace Read Only
* Table Drop or Truncate
* Tablespace Begin Backup











5- (CKPT) Checkpoint Process:

وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 1 ، ويقوم بالتأكد من أن كل التعديلات التى تتم على البيانات فى الBuffer تم كتابتها وتثبيتها فى الDatafiles ومن ثم يقوم بعمل تزامن كامل لكل الDatafiles ويقوم بعمل تعديل للDatafiles headers ؛ والControl files يتم تعديله عند اخر SCN ، بحيث يتم تزامن كامل لقاعدة البيانات ونضمن أنه يمكن استرجاع قاعدة البيانات فى حال حدوث مشكلة .
ويتم عمل الCKPT فى الحالات التالية :-
1- لحظة حدوث Log Switch.
2- عند وصول الزمن المحدد فى المتغير LOG_CHECKPOINT_TIMEOUT
3- عند ما يصل عدد الBLOCKS المحدد فى المتغير LOG_CHECKPOINT_INTERVAL
4- عند وصول عدد الBuffer المحدد فى المتغير FAST_START_IO_TARGET .
5- عند تنفيذ الاوامر التالية :-
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER SYSTEM CHECKPOINT;



6- Recover (RECO) :
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 1 ، وستخدم هذا الProcess لمعالجة مشكلة العمليات الموزعة المعلقة نتيجة مشكلة فى الشبكة او النظام ، فبعد فترة محددة يقوم الProcess بمحاولة الاتصال عن بعد ومحاولة اكمال العملية أو التراجع عنها .




Optional Processes 1.1.2.2:
ويمكن لقاعدة البيانات العمل دون هذه الProcesses ولكثرة هذه الProcesses سنتطرق لاهمها :-
1- Archiver (ARCn) :
وأقصى عدد لهذا الProcess فى قاعدة البيانات هو 10 ، ويقوم بكتابة الOnline Red log Files فى ملف الارشيف (Archive Log Destination) بعد حدوث الLog Switch ، هذا الProcess يعمل إذا كانت قاعدة البيانات تعمل فى النمط Archive Log Mode , يتم التحكم فى عدد هذا الProcess عن طريق المتغير LOG_ARCHIVE_MAX_PROCESSES .

2- Recovery Writer(RVWR):
هذا الProcess تم استحداثه فى الاصدارة Oracle 10g نستفيد من هذا الProcess عند عملية الFlashback Database ، سنناقش هذا الموضوع لاحقاً .

3- Lock Monitor (LMON).
4- Lock Manager DAEMON .
5- (LCKn) Lock Process .
6- Block Server Process (BSPn) .
7- َQueue Monitor (QMNn) .
8- Event Monitor (EMNn) .
9- ٍShared Server Processes (Snnn) .
10-Memory Manager (MMAN) .
11-Parallel Execution slaves (Pnnn).
12- Trace Writer (TRWR) .
13- DMON .
14- Dispatcher (Dnnn) .
15- MMON .
16- Wakeup Monitor Process (WMON) .
17- Memory Monitor Light (MMON) .
18- RBAL .
19- ARBx .
20- ASMB .
21- Change Tracking Writer (CTWR) .
22- Job Queue Monitoring (CJQn) .





Oracle Database 1.2:

وهو الجزء الثانى من مكونات قاعدة البيانات اوركل كما ذكرنا سابقاً :-
Oracle Database server = Oracle Instance + oracle Database
ويحتوى هذا الجزء من مجموعة من الملفات :-
1- Control files :-
وهو الملف المسؤل عن التزامن فى قاعدة البيانات بجانب انه يحتوى عن المعلومات الاساسية عن قاعدة البيانات كإسم قاعدة البيانات وبدونه لا تعمل قاعدة البيانات إذ أنه يحتوى على مسارات ملفات قاعدة البيانات وإذا تمت إضافة ملف فى قاعدة البيانات يتم تحديث الControl file اوتومتيكياً .

2- Redo log files :-
ويستخدم هذا الملف حتى نستطيع عمل إسترجاع لقاعدة البيانات (Recover) فى حالة حدوث مشكلة فى قاعدة البيانات ، إذ أنه يحفظ التغيرات التى تحدث فى قاعدة البيانات .
يتم تحديد هذا الملف عند فتح قاعدة البيانات عن طريق الParameter file ، ولحمايته من الفقدان يجب استخدام اكثر من نسخة من هذا الملف عن طريق تحديد هذه النسخ فى ملف الParameter file .

3- Database files :-
وهو المخزن الحقيقى للبيانات فى قاعدة البيانات أى أنه يحتوى على الجداول والمناظير والمراجع (Table & Views & Indexes ) والكائنات الاخرى .

4- Archived redo log files :-
وهو عبارة عن نسخة من ال Redo log files ونحتاجه أيضاً عند عمل إسترجاع لقاعدة البيانات (Recover) .

5- الملفات الأخرى:-
* Parameter file ويستخدم لعمل تهيئة للOracle Instance لحظة تشغيلها
* Password fileويسمح هذا الملف للمستخدمين الأتصال بقاعدة البيانات عن
بعد كمدراء لقاعدة البيانات ، وليس لتخزين كلمات السر للمستخدمين فى قاعدة البيانات كما يتصور البعض .

ليست هناك تعليقات:

إرسال تعليق