الثلاثاء، 1 ديسمبر 2009

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

ماهي Oracle ؟


هي شركة مختصة في مجال قواعد البيانات تقدم مجموعة هائلة من المنتجات البرمجية في هذا المجال و تشمل على ثلاث فئات أساسية : نظام إدارة قواعد بيانات ، نظم تطوير تطبيقات لإستخلاص البيانات من نظام الإدارة ، نظم جاهزة تضمن تلبية حاجات السوق البرمجي ..
تضم الأوراكل مجالاً واسعاً من المنتجات :
1- أوراكل داتايبيس سيرفر Oracle Database Server : و هو نظام إدارة قواعد البيانات حيث يتم تخزين البيانات و إدارتها و تنظيم المستخدمين ... إلخ و هو محور بحثنا في هذه الدورة .
2- أوراكل ديفيلوبر تولز Oracle Developer Tools : و هي أدوات تمكنك من تصميم تطبيقات تعتمد على قاعدة بيانات أوراكل و تضم الأمر الشائعة التالية :
1- Oracle Forms Builder : و هو الأداة الأساسية لتصميم واجهات برامج كالتي نراها و لكن موجهة نحو تطبيقات مستعرض الإنترنت .
2- Oracle Reports : و هي أداة رائعة لإنتاج التقارير و هي تشابه كريستال ريبورت التي إعتاد عليها مطورو منصة .net .
3- Oracle Designer : و هو أداة رائعة تتيح لك تصميم قاعدة البيانات بأسلوب منهجي يعتمد على رسم كائنات Entity .
4- JAVA developer : و هي أداة تطوير برامج الجافا التي تعتمد على قاعدة البيانات أوراكل و هي مشابه لبيئة JBUILDER التي إعتاد عليها مطورو الجافا في بناء تطبيقاتهم ..
5- ORACLE provider for .net Developer : و هي مجموعة من الأدوات الموجهة لمطوري .net الذين يرغبون ببناء تطبيقاتهم إعتماداً على قاعدة بيانات أوراكل ..
3- Oracle application Server : و هو المنصة التي نقوم بعملية النشر لتطبيقات Oracle forms و Oracle reports عليها بحيث تصبح متاحة للجميع ، و هي تشبه مخدم الويب IIS لنشر صفحات ASP أو Apache لصفحات php ..
4-Oracle Collaboration Suite : و هي مجموعة من الخدمات المختصة بالإتصالات الصوتية أو الإلكترونية أو fax ......


ما هي SQL و PL?SQL ؟
SQL Structered Query Language : لغة الاستعلامات البنوية ..
هي لغة للتعامل مع نظم قواعد البيانات المختلفة فهي ليست خاصة بــOracle و إنما هي عامة و شاملة نجدها في الأكسس و في Mysql و في SQL Server ... إلخ ...
PL?SQL :
و هي لغة برمجة تستخدم لكتابة إجرائيات برمجية تخزن داخل القاعدة و تعتمد على SQL في التعامل مع البيانات و تعديلها ..




أوراكل سيرفر Oracle Server :
يتألف الأوراكل سيرفر Oracle server من مكونين أساسيين :
1- Oracle Instance : و هو "البرنامج " أو Software الذي يمثل النظام : مهمته إستقبال طلبات السمتخدمين و التعالمل مع القاعدة ... إلخ .
يتألف Oracle Instance من :
1- بنية ذاكرية : و تسمى SGA (System Global Area)
و تتألف من /
Shared pool ، library cache ، Data Dictionary ، Database Buffer Cache ، Redo Log Buffer Cache ..
2- مجموعة من العمليات الخلفية Background Process : : وظيفتها "السهر " على أمن القاعدة و منحها أداء متوازن و التدخل في حالات Crashes كإنهيار نظام التشغيل و إنقطاع التيار ...إلخ .
2- Oracle Database : و هي مجموعة من الملفات المتنوعة بين ثلاثة فئات :
1- Control File : و هو الملف الحيوي و أساس القاعدة : يحوي على التوصيف الكامل للقاعدة من ناحية تواجد ملفات البيانات Datafile و ملفات سجل الإعادة Redo log file ... إلخ و هذا ما سنوضحه خلال الدروس القادمة إن شاء الله .
2- Data file : و هي الملفات التي تخزن Data (البيانات ) ..
3- Redo Log file : و هي سجلات الإرجاع ( إعذروني على الترجمة السيئة ) وظيفتها تسجيل البينات المؤقتة التي تقوم بإجراء التعديلات عليها ، و من أجل أي عملية "إصلاح " قد تحدث بعد أي مشكلة ...


3- مجموعة من key file : و هي ملفات لإعدادات معينة :
1- parameter file : و هو ما تعاملنا معه في قسم إدارة المستخدمين (Spfile ) ، يضم قيم معينة لتحديد سلوك Oracle instance (لم يفهم أحد شيئاً ؟؟؟ سنوضح الأمور في وقتها ) ..
2- password file : يستخدم لإختبار صلاحية المستخدمين الذين يتمتعون بصلاحيات DBA .
3- Archived log files : هي نسخ من Redo log files تسخدم في حالة إسترجاع نسخ إحتياطية ...
أعلم أن كلامي حالياً غامض بشكل كبير ، و لكن سيتوضح كل شيء بوقته فالصبر ثم الصبر ....


إنشاء القاعدة :


سنتعلم في هذا الجزء كيف نقوم بإنشاء قاعدة أوراكل ، و لكي ننشىء القاعدة يجب أن نعود لما تحدثنا عنه في الفقرة القادمة و نتحدث عن :
1- Control file :
كما قللت : هو الملف الأساسي للقاعدة ، و لا قاعدة بدونه ، لماذا ؟
السبب أن Oracle Instance يتعرف على القاعدة عن طريق هذا الملف ، أي عند تشغيل النظام و في مرحلة نسميها mount يقوم Instance بقراءة هذا الملف لكي ؟؟؟
لكي يعرف أين الملفات التي تخزن البيانات Data الخاصة بالجدوال التي نتعامل معها .، أين سجلات الإرجاع .. إلخ هل وصلت الفكرة .. أتمنى ذلك .
بما أن هذا الملف هو مهم لهذه الدرجة فيجب دوماُ أن نقوم بعملية نسميها multiplex أي الإحتفاظ بأكثر من نسخة منه في عدة أقسام .. لماذا ؟؟ ببساطة إذا حدث أي شيء لهذا الملف : حذف أو عطب ... إلخ ضاعت كل القاعدة و لن يستطيع Oracle instance التعامل معها .. لذلك نحتفظ بأكثر من نسخة فإذا حذث أي شيء لأي نسخة فتوجد نسخة أخرى للتعامل معها ...
يتم تحديد مسار Control file داخل ملف parameter file (Spfile , Pfile ) ....
2- Redo log :
و هي ملفات الإرجاع ... شو يعني ؟؟
كلنا يعرف برنامج وورد مثلاً : يمكنك التعامل مع المستند بأن تكتب ما تشاء و تحذف ما تشاء و في النهاية يمكنك التراجع عن ما فعلته .. صحيح ؟؟؟
و كذلك بالنسبة لقاعدتنا العزيزة : يمكنك القيام بحذف سجلات و إضافة سجلات و تعديل سجلات ...إلخ ماذا لو أرادت مؤسسة الكهرباء ممزاحتك و قطعت لك الكهرباء ؟؟؟ و كل هذه التعديلات كانت مجرد لعب عيال ؟؟؟
إن Oracle instance في هذه الحالة يستخدم هذه الملفات لإعادة كل شيء لطبيعته السابقة ...
3- Data file
: و هنا موضع الفرس .. و أخيراً : ملفات تخزين البيانات ، أي جميع البيانات التي تضعها في الجداول المختلفة تجدها في هذه الملفات ...
إذاً ما نفهمه من الكلام السابق القاعدة في أوراكل ليست كما في أكسس ملف واحد يمكنك نقله إينما كان ووضعه ثم العمل عليه ، إضافة إلى ذلك كثير من المطورين سألون : هل أنا مضطر إلى تنصيب أوراكل عندما أريد أن يعمل برنامجي على جهاز آخر و يكفي أن أنقل بعض الملفات ؟ الجواب : لا ... يجب أن يوجد : Oracle Instance و Database files و هذا لا يتم إلا بتنصيب Oracle Server ...


الآن : كفانا من الكلام النظري و لننشء قاعدة جديدة :
سنتخدم في إنشاء القاعدة أداة رائعة و هي Database Configuration Assistants ) : DBCA ) : تضمن هذه الأداة إنشاء قاعدة جديدة أو إزالة قاعدة بيانات موجودة أو تعديل قاعدة بيانات ... إلخ .
لنفذ الخطوات التالية :
1- من
start->programs ->Oracle10g->Configuration and Migration Tools -> Database Configuration Assistants .
تظهر الواجهة مرحبة بنا على طريقة أوراكل ( بدون القهوة العربية ) نختار Next .
2- نختار الخيار الأول Create Database .
3- تظهر لنا أنواع من قواعد البيانات دعوني أشرحها :
1- Data Ware House : من أروع الأنواع التي أحب التعامل معها ( بفعل خبرتي العملية ) .. هذه النوع موجه نحو القواعد التي تحوي على كميات ضخمة من البيانات التي تضمن سرعة خارقة في جلب البيانات من جدوال قد تحوي بلايين من السجلات ... لهذا النوع أبحاث كثيرة نظراً لأهميته البالغة
2-Transaction Processing : و هي موهة للقواعد التي تخضع لضغط عالي من التعديلات و الإدخالات الجديدة و تضم القليل من عمليات إحضار البيانات ..


3- General Purpose : موجهة إلى القواعد العادية ذات الغرض العام ( كما في حالتنا مثلاً ) ...


لذلك نختار General Purpose ثم التالي ..
4- لدينا قيمتين :
1- اسم القاعدة : Global Database Name ..
2- SID : اسم instance الذي سيتعامل مع هذه القاعدة ..
يمكن أن يختلف الإسمين عن بعضهما :
مثال : في عملي لدي شبكة دومين Aledari.com لذلك أستطيع تسمية القاعدة بالشكل : Accounting.aledari.com بينما اسم Instance لدي هو AccInst ..
للتذكير فقط : في الوضع الإفتراضي فإنك عندما تنصب أوراكل فإنه ينشئ قاعدة بيانات و Instance اسميهما متطابقين أي orcl ...
لنتفق على اسم واحد لإستعماله :
Global Database Name : DBACLASS.arabteam.com
SID : DBACLASS
ثم Next ..
5- يوجد عدد من الخيارات :
لنتأكد من أن الخيار Configure the database using enterprise manger مفعلاُ حين أن Enterprise Manager هي أداة رائعة تمكننا من إدارة القاعدة بواجهة تفاعلية ممتازة ..
ثم Next ..
6- يطلب منا وضع كلمة السر واحدة للمستخدمين :Sys , System , SYSMAN أو أن نضع لكل مستخدم كلمة مرور خاصة به ...
ضع ما تشاء ثم Next ..
7- نختارFile System ( أي نظام الملفات الحالي الذي يستخدمه نظام التشغيل ) ... ثم Next ..
8-نختار توضع ملفات القاعدة :
1- use file allocations from Template : هنا يجب وجود إعدادات مسبقة قمنا بنجهيزها من قبل داخل Template ..
2- Use Common Location for all Database Files : هنا نحدد مسار مجلد ما ليكون الحاوي لجمييع ملفات القاعدة ..
3- Use Oracle-Manged Files : هناك طريقة نسميها OMF و هي طريقة Standard تتبعها أوراكل في تسمية الملفات الخاصة بالقاعدة أي أن DBA يتنحى جانباً و تقوم أوراكل بتسمية الملفات و تحديد مواقعها بدلاً عنه ...
لنختر الخيار الثاني ثم Next ..
9 – تظهر لنا خيارات النسخ الإحتياطي للقاعدة Backup سواء بالنسبة إلى Flash Recovery ( من أروع الإضافات التي شهدها الإصدار 10g ) أو Archiving Redo log ..
نضغط على Next ..
10-تظهر واجهة يمكننا إختيار Sample Schema لتثبيت مخططات مثل Scott-hr ...
نختار Next ..
11- نحدد بارامترات خاصة ب Oracle instance ... ما يهمنا هنا هو characterset و هي الترميز الذي سيتم إستخدامه في تخزين البيانات داخل القاعدة و هو يلعب دوراً كبيراً في مسألة تخزين البيانات العربية أو لغات الشرق الأقصى مثل اليابانية و غيرها ... المهم بالنسبة لنا أن يكون هذا الترميز مناسباً للبيانات العربية لذلك من القسم Database Character Set يمكننا :
1- إختيار Using Unicode : من أجل الترميز Unicode الذي يلائم لغتنا العربية ..
2- إختيار Choose from a list of character set : و بوسعنا إختيار هنا AR8MSWIN1256 من أجل العربية ...
من الخيارين Default Language و Default Data Format نحدد بهما لغة الرسائل و تنسيق التاريخ ...
ثم Next ..
12- تظهر واجهة مهمة : إضغط على الزر File Allocation Variable : ستجد هناك مجموعة من المسارات المخزنة داخل متحولات : Oracle_Base .. Oracle Home .. SID .. إلخ يجب أن تحفظ هذه المسارات عن ظهر قلب لأنها مواقع الملفات التي سنتعامل معها لاحقاً ...
إخرج من هذه الواجهة ثم next ..
13- تظهر لك خيارات :
create Database : من أجل إنشاء قاعدة جديدة و هذا ما نريده ..
save As Database Template : أي نحفظ الإعدادات التي نقد نستعملها لاحقاً في إنشاء قاعدة أخرى ...
نضغط على زر finish ( و أخيراً ) للبدء في إنشاء القاعدة ....




عندما ينتهي يظهر لك واجهة تخبرك عن أمور هامة و يجب حفظها و أولها مسار Enterprise Manager
الذي سيكون في الغالب على الشكل :


http://pc_name:5501\\em


إكتب هذا المسار على الحيط أو على جبينك أو على الشاشة أو مكان ما تريد ... المهم لا تنساه ....
يمكنك الضغط على الزر Password Management لكي ترى Users الذين تم إنشاءهم إفتراضياُ و بذلك يمكنك تغيير كلمات سرهم أو فيتح حساباتهم المقفلة بشكل إفتراضي .. إفعل ماشئت ثم إضغط على الزر Ok ثم Exit و بذلك يكون قد أصبح لديك قاعدة جديدة ... " ألف مبروك تتربى في دلالك و عزك " ....


ملاحظة هامة جداً جداً : مما رأينا نستطيع إنشاء أكثر من قاعدة بيانات بتكرار الخطوات التي ذكرناها بحيث في كل مرة يتم إنشاء قاعدة بالإضافة إلى Instance الخاص بها و هكذا ....
و السؤال الذي يطرح نفسه : كيف نحدد من هي القاعدة التي نتعامل معها عند تشغيل تطبيق مثل SQL plus مثلاً ...
الجواب :
نذهب إلى المسار التالي :


Oracle _Home \ Network\admin\tnsnames.ora




سأضع لكم ما يحويه tnsnames.ora في جهازي :


Accounting =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Accounting.aledari.com
)
)
DBCLASS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBCLASS.arabteam.com)
)
)




بحيث تأخذ الشكل التالي :


Connection_Host=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC_NAME "اسم الجهاز الذي يحوي القاعدة " )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =GLOBAL_DATABASE_NAME)
)


كما تلاحظون فلدي قاعدتين : Accounting و DBCLASS التي قمنا بإنشاءها ...
ما يهمنا هو connection Host (سلسة المضيف ) أي عندما أريد أن أسجل الدخول على SQL PLUS و التعامل مع قاعدتنا DBCLASS سأكتب


connection Host DBCLASS




أما إذا أردت الدخول على القاعدة الثانية Accounting :


connection Host Accounting




أدوات الإدارة في Oracle10g :
فعلاُ يمكننا أن نقول أن شركة أوراكل قد خطت خطوة رائعة مع إصدارها 10g بأن توجهت إلى مديري القواعد و أمدتهم بعدد من الأدوات التي سهلت العمل كثيراً ، فمثلاً كنت مضطر إلى أن أحفظ مجموعة ضخمة من التعليمات لإنشاء مكونات القاعدة مثل الفضاءات الجدولية و المقاطع segments و الإمتدادات Extents .. بالإضافة إلى تعليمات إنشاء المستخدمين و حفظ الصلاحيات ... إلخ لذلك فإن دليل المديرين كان لا يفارق حقيبتي ...
الآن : وفرت أواركل أداة هي Enterprise Manager التي طورتها عن الإصدار 9i و أصبحت هذه الأداة تعمل عبر مستعرض الانترنت بالاستفادة من مكونات Application Server (ليس موضوعنا الآن ) ..
بالإضافة إلى Enterprise Manager ظهرت iSQL PLUS بأدائها المطور عن الإصدار 9i ...
بالإضافة إلى أدوات أخرى سنتعرف عليها لاحقاً بعون الله ...
الآن لنعد إلى الأداتين لنتعلم كيف نقوم بتشغيلها و إغلاقها ( ملاحظة كل التعليمات التالية يتم تنفيذها عبر محرر الأوامر Dos أو Shell الخاص بــlinux (نظام أوراكل المفضل ) ) :
1- ISQL PLUS :
لتشغيل الأداة :


isqlplusctl start




لإيقافها :


isqlplusctl stop




كيف نستعرضها :
تتذكرون المسار الذي طلبت منكم حفظه على الجبين ...إلخ ؟؟؟ اكتبه بالشكل التالي :


http://pc_name:port/isqlplus




مثلاً ( في العادة ) :


http://localhost:5560/isqlplus/




إذا نسيته : يمككنك الذهاب إلى المسار التالي :


Oracle_home\install\portlist.ini




ستجد " iSQL*Plus HTTP port number =5560 " ....
2- Enterprise Manager :
و هي الأداة التي سنستعملها كثيراً خلال دورتنا ...
لتشغيل الأداة :


emctl start dbconsole




لإيقافها :


emctl stop dbconsole




لإظهار حالتها :


emctl status dbconsole




لأخذ العلم لمحبي الويندوز :
الأداتين السابقتين يتم إنشاء Services خاصة بها تجدونها في Services داخل Administrative Tools .. و لا داعي لتشغيلها لأن تشغليها يتم أتوماتيكياً عند بدء التشغيل ..
لتشغيل الأداة عبر المستعرض : تماماً كما فعلنا مع ISQL PLUS :


http://pc_name:port/em




مثلاً ( في العادة ) :


http://localhost:5500/em




إذا نسيته : يمكنك الذهاب إلى المسار التالي :


Oracle_home\install\portlist.ini




ستجد Enterprise Manager Console HTTP Port (dbclass) = 5500" " ..
عند تشغيلها ستظهر لنا واجهة لتسجيل الدخول ، من الآن و لآخر الدورة نحتاج إلى المستخدم SYS من أجل ما نريد تنفيذه ، لذلك نضع :


User Name : SYS
Password : oracle
Connect AS : SYSDBA




بعد تسجيل الدخول : نرى ما كنا نحتاج إلى آلاف الأكواد و التعليمات التي كنا مضطرين لكتابتها داخل SQL PLUS ....
ما يهمنا الآن هو الضغط على Administration لتظهر لنا صفحة سنتعامل معها دائماً ....


ماهو المتنصت Listener :
طبعاً لسنا في عالم الجاسوسية و ليس في عالم سي أي إيه و إنما نحن في عالم أوراكل ..
ما رأيك لو كان لديك شبكة تضم مجموعة من المستخدمين و يريدون استخدام أوراكل .. هل ستنصب أوراكل داتابيس Oracle Database على كل جهاز ؟؟؟ طبعاً لا ز و لماذا لا ؟ لأنك قد تريد أن يتشارك هؤلاء على قاعدة واحدة و يقومون بالتعديل و الإضافة مثلاً على جدول واحد ...
الحل :
أن تقوم بتنصيب Oracle Database على الجهاز الرئيسي أو أي جهاز آخر ... و البقية ؟؟؟ تقوم بتنصيب مايسمى Oracle Client (يوجد مع نفس قرص Oracle Server و تقوم بإختياره ضمن خيارات التنصيب ) .. فعلياً الأوراكل الكلاينت ليس سوى عبارة عن مجموعة من برامج SQL PLUS و بقية الأدوات التي تتيح لك الإتصال بالأوراكل داتابيس Oracle Database ... ما دخل المتنصت بكل هذا الكلام ؟؟؟
المتنصت هو إداة تقوم بالإستماع على المنفذ Port لكي تستقبل طلبات المستخدمين من الأجهزة الأخرى على الشبكة الراغبين بفتح جلسة session مع الأوراكل سيرفر ... فالمتنصت ضروري جداً في حالة كون القاعدة منصبة على جهاز في شبكة و ترغب من الجميع الإتصال بها .... هل وصلت الفكرة ؟؟؟؟
يمكن أن يتواجد أكثر من متنصت واحد و ذلك إذا كان عدد أجهزة الشبكة كثيرة .. و السؤال كيف نتعامل مع المتنصت ؟؟
إضافة متنصت جديد :
1- من Start->Programs->oracle10g->migration and configuration tools->Net Configuration Assistant
2- تظهر واجهة نختار منها Listener Configuration ثم Add ..
3- نضع اسم Listener ..
4-نضع البروتكول Protocol الذي نريد أن يستمع إليه المتنصت : في العادة ً نختار tcp لشبكات الويندوز و حتى شبكات Linux ، من يريد التوسع فإن الأخوة في منتدى الشبكات يمكن أن يسهموا في ذلك ...
5- نختار port الذي نريد للمتنصت أن يعمل عليه ، عند اختياره يجب عليك سؤال مدير النظام لأن هذا المدير قد يكون قد أغلق Ports من أجل حماية السيرفر .. في العادة أختار منفذ أوراكل الافتراضي 1521 ...
5-يسألنا هل نريد أن نقوم بإعداد متنصت آخر : نشكره على ذلك و نقول له لا ... ثم Next ..
6-يطلب منا هل نريد تشغيل متنصتنا الجديد .. يمكن أن نختاره ثم نضغط Next ..
7- يظهر رسالة إنتهاء العمل .... نضغط على التالي ثم نخرج من الواجهة ...
سهلة أليس ذلك ؟ ...
للعلم : فإن أوراكل عند تنصيبه فإنه ينشئ متنصب إفتراضي يسميه Listener يتنصت على port : 1521 ..
الآن :
ماذا لو أردت عدم إستقبال أي مستخدم للإتصال عبر الشبكة ؟؟؟ ماذا تفعل ؟؟؟
ببساطة تغلق المتنصت listener ، كيف ؟؟
من محرر الأوامر أو Shell :


lsnrctl stop listner_name;




ماذا لو أردنا إعادة تشغيله :


lsnctl start listner_name




ما لو أردنا معرفة حالته :


lsnctl status listener_name;




انتهينا ....
لنرى الآن Enterprise Manager ما الذي سيعرضه لنا حول Listener :
1- إفتح Enterprise Manager و سجل الدخول بالمستخدم Sys as sysdba كما تحدثنا البارحة .
2- من القسم General ستوف تشاهد اسم المتنصت إضغط عليه كما ترى في الصورة .




3- ستظهر لك صفحة جديدة تعرض لك الخيارات الخاصة بالتعامل مع المتنصت ، يمكنك الضغط على زر Stop لإيقاف listener أو يمكنك الضغط على زر edit لتعديل البارامترات الخاصة به كما ترى في الصور ..


ملاحظة هامة جداً : إن Enterprise Manager يحتاج دوماً إلى وجود listener .....
بعد جميع هذه العمليات أصبح السيرفر جاهزاً .. ما رأيكم بالمتابعة و تجهيز بقية اجهزة الشبكة ؟؟؟
ما أتفقنا عليه أنه في أجهزة الكلاينت نحتاج إلى تنصيب أوراكل كلاينت Oracle Client و هذا ما تستطيع تنصيبه في نفس القرص الخاص بالأوراكل سيرفر Oracle Server سواء الإصدار 10g أو حتى 9i (لن تجده في قرص Oracle Database ) ...
بعد تنصيبه يجب أن نخبر التطبيقات المختلفة أين ستوجد القاعدة ، و السؤال كيف ؟؟
يتم ذلك بواسطة ما يسمى Local Net Services Naming الذي نستخدمه لكي نحدد طرق الإتصال بالقاعدة ... دقيقة واحدة : هل يذكر أحد أين استعملناه ؟؟؟ هل يذكر أحد tnsnames.ora ؟؟؟ آمل أنك تذكرتموه ...
فعلياً فإن tnsnames.ora يحوي Local Net بالبنية التالية :


Connection_Host=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC_NAME "اسم الجهاز الذي يحوي القاعدة " )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =GLOBAL_DATABASE_NAME)
)




الآن لنتقل إلى الخطوات العملية التي يجب تنفيذها على أجهزة client :
1- نقوم بتشغيل Net Configuration Assistant ...
2- من الواجهة نختار كما في الصورة :
مشاركة بالصور


3- تظهر واجهة نختار منها add .
4-نضع اسم Service Name .. تتذكرون Global Name الذي وضعناه مع اسم SID ؟؟؟ هذا هو .. في مثالنا نضع dbclass.arabteam.com ..
5- نضع اسم البرتوكول الذي سنعتمد عليه ... ضع TCP ..
6- ضع اسم الجهاز الذي يحوي القاعدة و رقم port الذي يعمل عليه المتنصت ...
7- تظهر واجهة يسأل فبها هل نريد تجربة الإتصال .. طبعاً نختار Yes ثم تظهر واجهة تبين لنا نجاح الإتصال أم عدمه .. إضغط على زر change Login و ضع كلمة المرور لــSYS أو System ثم Ok إذا نجح الإتصال فمبروك إذا لم ينجح تأكد من إعدادات الشبكة لديك ....المهم يجب أن تظهر الصورة التالية :




8- عند الإنتهاء يطلب منك اسم NET SERVICE NAME و هو الاسم الذي ستعامل معه مستخدموك في برامجهم أي عندما سيسجلون الدخول إلى برامج Sql Plus سيضعون في Connection String ما تضعه أنت في NET SERVICE NAME .... وصلت الفكرة ؟؟ ...


ما معنى إغلاق القاعدة أو تشغيلها ؟
في الدروس السابقة تحدثنا عن أن الأوراكل سيرفر الذي نتعامل معه مؤلف من قسمين : Oracle instance و القاعدة Oracle Database .. رأينا أن Instance هو فعلياً برنامج Software يستجيب لطلباتنا و يقوم بتنفيذها و يعبد إلينا النتائج إضافة إلى وظائفه الأخرى في الحفاظ على القاعدة .... إلخ .. أما القاعدة فقد وجدنا أنها عبارة عن ملفات فيزيائية تفتح و تدار من قبل Oracle instance ..
بكلمات مبسطة جداً :
ما معنى إغلاق القاعدة ؟
المعنى أنك أولاً تغلق ملفات القاعدة المفتوحة ثم تقوم بإيقاف Oracle instance ...
ماذا عن تشغيلها ؟
يعني التشغيل أنك أولاً تقوم بتشغيل Oracle Instance الذي يقوم بفتح ملفات القاعدة ...
لنتحدث عن العمليات التي تحدث عند تشغيل Instance و أرجو من الجميع فهمها بشكل جيد :
تتوزع العمليات بين ثلاثة مراحل :
المرحلة الأولى nomount :
1- يقوم أولاً بقراءة ملف البارمترات Parameters File .. هذه البارامترات على سبيل المثال تذكر ما سم القاعدة التي سيتعمل معه instance و أين هو Control file الخاص بالقاعدة ما هو حجم الذاكرة التي سيحجزها .. إلخ ( سيكون لنا جولة مع هذه البارامترات لا حقاً ) ...
2-يقوم بحجز الذاكرة .
3- يشغل Background process ..
4-يفتح ملف alertSID.log و هو أهم ملف يعتمد عليه مدير القاعدة لكي يكتشف الأعطال و المشاكل الذي تحدث للقاعدة إضافة إلى معلومات مهمة جدا سنراها لاحقاً ..... يوجد هذا الملف في المسار التالي :


Oracle home\admin\dbclass\bdumb\alert_dbclass.log






المرحلة الثانية : Mount :


يقوم بقراءة ملف Control File لكي يحدد أين توجد ملفات البيانات Data files و ملفات الإرجاع Redo Files .... إلخ و لكنه لا يتأكد من وجود تلك الملفات ..
هذه المرحلة مهمة جداً لأن عملية أخذ النسخ الاحتياطية و إصلاح ملفات البيانات و ملفات الإرجاع يتم في هذه المرحلة ... كما سنرى لاحقاً .


المرحلة الثالثة : Open :


يقوم بفتح ملفات البيانات Data files و ملفات الإرجاع Redo log في هذه المرحلة .. نجاح هذه المرحلة يعني أن القاعدة قد أصبحت جاهزة تماماُ لإستقبال الطلبات ...


إذاً سألخص ما تحدثت عنه :
تتم مراحل التشغيل وفق ثلاث مراحل تضم المرحلة الأولى قراءة ملف البارامترات ، الثانية قراءة ملف Control File ، الثالثة فتح ملفات البيانات و ملفات الإرجاع لتصبح القاعدة جاهزة ....
يمكن لمدير القاعدة أن يحدد أي مرحلة يريد قاعدته أن تعمل بها و ذلك تبعاً للعملية التي يريد تنفيذها و سأذكر أمثلة فقط :
1- إذا كانت هناك مشكلة في Control file فيقوم بتشغيل القاعدة في مرحلة no mount ..
2- إذا كانت هنالك مشلكلة في ملفات البيانات أو ملفات الإرجاع أو أراد أخذ نسخة إحتياطية للقاعدة فإنه يقوم بتشغيل القاعدة في وضع Mount ..
الصورة التالية ستوضح ما تحدثنا عنه :


يتم أمر التشغيل كالتالي :
1- تسجيل الدخول أولاً بالحساب SYS AS SYSDBA على برنامج SQLPLUS .
2- تنفيذ الأمر :


startup Level_name;




لشتغيل القاعدة مثلاً في وضع No Mount :


startup nomount;




لتشغيل القاعدة في وضع Mount :


startup mount;




لتشغيل القاعدة لتصبح في الوضع الطبيعي :


startup;






ما ذا لو أردنا الإنتقال بين المراحل ؟


1- نشغل القاعدة بالوضع nomount :


startup nomount;




2- للإنتقال إلى الوضع mount :


alter database mount;




3- للإنتقال إلى الوضع النهائي :


alter database open;






إنتبه : لا يمكنك الانتقال بالعكس أي أن تعود من مرحلة open إلى مرحلة mount أو من Mount إلى nomount ، عليك أن تغلق القاعدة ثم تنتقل إلى المرحلة التي تريد ...


إغلاق القاعدة :


يتم إغلاق القاعدة بعكس العمليات التي تنفذ ضمن عملية التشغيل :
1- يتم إغلاق ملفات البيانات Data files ومسجلات الإرجاع Redo Files ..
2-يتم إغلاق ملف Control file ..
3- يتم تحرير الذاكرة و إيقاف Background Process و إنهاء instance ( و يأخذ الجهاز نفساً عميقاً بعد أن أزال عن كاهله الأوراكل الغليظ  ... ) ...
قبل أن أبدأ بشرح الإغلاق دعوني أتحدث عن موضوع مهم :
المناقلات Transactions :
تعني المناقلة مجموعة التعديلات بواسطة تعليمات DML التي يجريها المستخدم ضمن جلسته الحالية ... و هذه التعديلات تكون مؤقتة يمكن التراجع عنها أو تثبيتها بحسب رغبة المستخدم ..
يمكنك تجربة المناقلة ببساطة :
نفذ بعض تعليمات insert أو update أو delete على جدول ما ثم نفذ التعليمة التالية :


rollback;




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


commit;




لنعد إلى إغلاق القاعدة :
لإغلاق القاعدة تحتاج إلى تنفيذ التعليمة التالية :


SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]




لنبدأ بالشرح :
1- Normal :
و هو الخيار الإفتراضي حيث ينتظر النظام جميع المستخدمين لكي ينتهوا من عملهم مع القاعدة و يقوموا بإغلاق اتصالاتهم (تسجيل الخروج من SQLPLUS أو إغلاقه أو حتى إغلاق البرامج التي تتعامل مع الأوراكل ) ... هذا الأمر يحفظ جميع المناقلات و لن يسبب لك أي مشكلة عند تشغيل القاعدة مرة أخرى .. و لكن له سيئة ضخمة : لو كان لديك موظف يتناول فطوره و يدردش على الهاتف أو مع زميله و ماذا متصلاً مع القاعدة فعندها سوف تتنظر حتى ينتهي( أو تطرده ) لكي تغلق القاعدة ...
جربوا هذه المسألة :
1-شغل SQLPLUS و سحل الدخول مثلاً بالحساب Scott ..
2- شغل نسخة أخرى من SQLPLUS و سجل الدخول بالحساب SYS AS SYSDBA ...و نفذ التعليمة :


shutdown normal;




فتجد أنه ينتظر ...
3- أغلق نسخة SQLPLUS التي استعملتها مع Scott فستجد أنه بدأ بإغلاق القاعدة عند النسخة الثانية ....


2- Transactional :
هنا ينتظر النظام المستخدمين الذي أجروا تعديلات على القاعدة و لم يثبتوا تعديلاتهم بعد ، أما أولئك المستخدمين الذين لم يجروا أي تعديلات أو ثبتوا تعديلاتهم فإنه مباشرة يقوم بقطع إتصالاتهم مع القاعدة ..
لننفذ السيناريو التالي :
1-افتح نافذة SQLPLUS و سجل الدخول بالحساب Scott ثم نفذ تعليمة update أو delete أو insert على أي جدول تريد و لا تقم بعملية التثبيت ...
2- افتح نافذة SQLPLUS جديدة و سجل الدخول بالحساب SYS AS SYSDBA ثم حاول إلاق القاعدة بالتعليمة التالية :


shutdown transactional;




ستجد أنه ينتظر ...
3- نفذ تعليمة تثبيت التعديلات في نافذة scott :


commit;




ستجد إن عملية الإغلاق في نافذة SYS قد بدأت و سوف تنتهي بإغلاق القاعدة ...
4- حاول تنفيذ أي تعليمة في نافذة scott فإنها ستفشل و سيعطيك إحدى الرسائل : Oracle not available أو Shutdown in progress .....


3-Immediate :
هنا لن ينتظر أحد ، بل سيقوم بالتراجع عن التغييرات لدى المستخدمين الذي لم يثبتوا تعديلاتهم بعد ثم سيقطع الإتصال مع الجميع و يغلق القاعدة ....
نفذ السيناريو التالي :
1- افتح نافذة SQLPLUS و سجل الدخول بالحساب Scott ثم نفذ تعليمة update مثلاً :


update emp set sal=0 ;




لا تقم بالتثبيت ..
2- - افتح نافذة SQLPLUS جديدة و سجل الدخول بالحساب SYS AS SYSDBA ثم حاول إغلاق القاعدة بالتعليمة التالية :


shutdown transactional;




ستجد أنه لن ينتظر و سيقوم بإغلاق القاعدة مباشرة ..
3- أعد تشغيل القاعدة :


startup normal;




4-سجل الدخول مرة أخرى في نافذة scott ثم نفذ تعليمة select :


select sal from emp;




ستجد أن الأمور قد عادت إلى طبيعتها و أن التعديل الذي جعلنا فيه sal=0 قد تم التراجع عنه ...


4- ABORT :
و هو أسوء خيار قد تلجأ إليه ، فهو يقوم بعملية إغلاق قسري للقاعدة دون المرور بالخطوات التي تحدثنا عنها سابقاً ، هذه العملية ستؤدي إلى آثار سلبية يتم إصلاحها بواسطة عملية نسميها Instance Recovery عند تشغيل القاعدة مرة أخرى ، لذلك لا تلجأ إليه إلا إذا كنت مضطراً إلى هذه العملية ....


كيف نستطيع استخدام Enterprise Manager في موضوعنا هذا ؟؟


1- شغل Enterprise Manager و سجل الدخول بالحساب SYS AS SYSDBA ..
2- من القسم General إضغط على الزر shutdown كما في الصورة :


3- تظهر لك صفحة :


ضع في القسم Host Credentials معلومات مستخدم النظام (ويندوز أو linux ) و في القسم Database Credentials ضع اسم المستخدم Sys و كلمة سره ...ثم إضغط على زر ok ..
بالنسبة لسمتخدمي الليونكس فالأمر تمام أما بالنسبة لسمتخدمي الويندوز فسوف تظهر الرسالة التالية :


مع العلم أنك قد وضعت كلمة السر صحيحة تماماً .... ما العمل ؟؟؟
يجب عليك أن تعطي الصلاحية للمستخدم الذي تعمل عليه بأن يقوم بتسجيل الدخول كــpatch jop .. كيف يتم ذلك ؟؟؟
إدخل على Local Security Policy داخل Administrative Tools في لوحة التحكم ... إختر كما في الصورة :




بالنقر المزدوج ستجد النافذة التالية ... قم بإضافة المستخدم الذي تعمل عليه (لقد قمت بإضافة مجموعة Administrators في جهازي .. ) من الزر Add :


الآن كرر الخطوات من 1-3 مرة أخرى ... يجب أن ينجح الأمر و تظهر الصورة التالية


لا حظ أن الخيار الافتراضي هو إغلاق immediate ..
يمكنك الضغط على زر Advanced Options لتغير الخيار إلى Abort أو Transactional أو normal كما تحدثنا سابقاً ...


كيف نقوم بإعادة تشغيلها ؟؟؟
1-شغل الأداة Enterprise Manger و سجل الدخول بالحساب SYS AS SYSDBA ..
2- سيظهر لك زرين فقط .. إضغط على Startup ..
3- سيظهر لك الواجهة :


التي تعاملنا معها سابقاً ... سجل المعلومات نفسها ..
4-ستظهر لك صفحة يخبرك فيها أنه سيشغل القاعدة في وضع open .. يمكنك تغيير هذا الخيار بالضغط على زر advanced Options و تحديد مرحلة mount أو nomount ..
5- إضغط على زر ok عندما تنتهي ..
6- سيبدأ تشغيل القاعدة عند الإنتهاء سيطلب منك إعادة تشغيل الدخول و عندما تفعل ذلك ستجد أن قاعده البيانات قد أصبحت جاهزة للعمل .

0 التعليقات:

إرسال تعليق

Bookmark and Share

أقسام المدونة

2015 (1) أبراج (44) اتصالات (113) أحياء (1) اخبار (136) اخطاء (1) ادسنس (2) ادعيه (7) أزواق (1) إستخراج (1) إسرائيل (7) اسرار (1) أعشاب (19) أعياد (1) أغانى (7) أفريقيا (1) أفكار (2) أفلام (4) إقتصاد (19) الأردن (2) الأرض (12) الاسره (1) الأطفال (33) الإلكترونيه (3) الألوان (1) الأنبياء (1) البحرين (1) البشرة الدهنيه (1) البيئة (14) الترتيب (1) الجزائر (2) الجن (1) الربح (7) الرجل (40) الرسول (12) الزواج وأنواعه (31) السعوديه (10) الشبكة (9) الشعر (30) الشمس (6) الشوربات (19) الشيطان (2) الصيف (1) الصين (2) ألعاب (3) العالم (19) العراق (3) العنكبوتيه (1) الفراسه (6) القمر (4) القنوات الأجنبية (3) الكويت (1) الله (20) ألمانيا (2) المرأه (96) المغرب (2) المنصورة (2) الهجرة (7) الهند (2) الهيدروجين (1) أمثال (1) أمراض_الجسم​ (1) أمريكا (10) إنجلترا (1) أوراكل (4) أوروبا (1) إيران (2) إيميلات (5) باكستان (1) بترول (1) بحث (4) برامج (29) برمجة (6) بريطانيا (2) بسكلته (5) بشرتك (10) بطاقات (1) بناء (1) بنوك (2) بورصة (23) تاريخ (45) تحب (3) تحضير (1) تخسيس​ (1) ترددات (15) تركيا (1) تركيب (1) تساقط (8) تطوير المواقع (29) تعريفات (16) تعليم (43) تفاحة​ (1) تفاحة_فى_اليوم​ (1) تكنولوجيا (44) تلوث (3) توقعات (12) تونس (1) تونس. سفارات (1) ثورة (1) جمال (4) جوال (1) جوجل (19) حذف الباتش (1) حساسية (2) حشرات (1) حقائق (1) حقيقه ام خيال (23) حقيقه_وخيال​ (1) حكم (1) حيوانات (5) خضروات (8) خلق (2) دبى (2) دليل (2) دورات أمن المعلومات (19) دورة (4) ديكور (1) دين (120) ذهب (2) رسائل (1) رمز (1) رمضان (9) روسيا (3) رياضه (14) زراعه (9) زيادة (1) سامسونج (1) سفارات (5) سلامة (1) سندوتشات (2) سوريا (1) سويسرا (1) سيارة (6) شخصيات (64) شخصيتك (18) شركات (32) شعر (5) شمس (3) صحتك (289) صلصه (5) صناعة (1) صور (11) طائرات (2) طاقة (3) طاقه المستقبل (1) طاقه حره (2) طب (1) طب_ولا_عك​ (1) طيور (18) عسكرى (25) عسل (1) علاج (70) علم البصريات (6) علماء (1) علوم (18) عيد (1) عيون (17) غاز (2) فتاوى (1) فرنسا (2) فضاء (16) فلسطين (12) فلك (12) فليسطين (3) فوائد (10) فواكة (8) فواكة_وخضروات​ (1) فودافون (4) فوركس (3) فيديو (9) فيس بوك (2) قاعدة البيانات (2) قتال (6) قصص (12) قطر (4) قمر العربسات (2) قيام الليل (1) كاريكتير (3) كتب (12) كربوهيردات​ (1) كمال اجسام (1) كمبيوتر (84) كوبا (1) كوريا (1) كيتو​ (1) كيمياء (23) لغة (1) لهجات (1) ليبيا (1) لينكس (2) مجموعة (1) محرك (4) مسجات (1) مشروعات (4) مصر (111) مطبخك (214) معادن (1) معلومات (29) مقاتلات (1) مقالات (31) مكونات (2) منتجات زراعيه (1) مهارات (1) مواقع (61) موبايل (1) موضه (2) مياه (4) نشيد (1) نصائح (8) نظم (6) نكت (8) نوكيا (15) هندسه (5) هواتف (54) وصايا (1) وظائف (9) ويندوز (3) يوتيوب (5) AdSense (4) AdWords (1) call center (2) ebay (2) Egypt (1) HSPA (2) ORACLE (2) qmax (1) search (1) seo (3) Wikipedia (2)

 
;