الانتقال إلى المحتوى

Creating Control File


Moawia.Mohammed

Recommended Posts

CREATING CONTROL FILE 

 

 

 

السلام عليكم ورحمة الله تعالى وبركاتة ، اللهم صل وسلم وبارك على سيدنا محمد وعلى آله وصحبه أجمعين ...
 
 يواجه الكثير منا مشاكل مع ال control file لا سيما في المراحل البدائية من التعلم ، الطريقة الموضحة أدناه ليست حل أمثل

 

لمشاكل ال control file فيجب أن لا نلجأ إليها مباشرة عندما نواجه مشكلة مع الcontrol file فأحياناً تكون المشكلة بسيطة جداً

 

ويمكن تداركها ، هذه الطريقة نستخدمها في إحدى الحالات أدناه :

 

  • فقدان جمــــيع نسخ ال control files  ، وعدم وجود backup control file   "طبعاً لتفادي الكثير من المشاكل يجب ان يكون لديك ع الأقل ثلاثة نسخ من ال control file مختلفة المواقع  " . 
  • ​  تريد تغيير اسم ال database . " مثلاً لتفادي تطابق أسم الداتا بيز مع أخرى على distributed environment "
  • وأحياناً لتغيير قيم معينة مثل "تغير قيمة أقصى عدد من الآتي : redo log files - data files - instances  ..." .

​​ 
 

الصيغة العامة لانشاء الملف موضحة بالمثال التالي :


 مثال رقم : 1

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\APP\ORACLEO\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'E:\APP\ORACLEO\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'E:\APP\ORACLEO\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512
DATAFILE
'E:\APP\ORACLEO\ORADATA\ORCL\SYSTEM01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\SYSAUX01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\UNDOTBS01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\USERS01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\EXAMPLE01.DBF',
'H:\APP\ORACLEO\FLASH_RECOVERY_AREA\ORCL\SYSAUX02.DBF',
'H:\APP\ORACLEO\FLASH_RECOVERY_AREA\ORCL\TESTTAB01.DBF'
CHARACTER SET WE8MSWIN1252
;  

 المثال يوضح عملية انشاء الملف حسب العوامل التالية :

 

  • لانريد تغير إسم ال database > بالتالي استخدمنا الأمر REUSE .

 

  • توفر ال online redo files وصلاحيتها > وبالتالي استخدمنا الأمر NORESETLOGS وهو الأمر المعني بإخبار أوراكل ليتسخدم الملفات الموجود تحت العبارة LOGFILE  "مثال رقم 1". "يعني بإختصار استخدم ملفاتي القديمة"

 

  • عمل أرشفة لل redo log files قبل إستخدامها > وبالتالي استخدمنا الأمر ARACHIVELOG . كما يمكن تفعيل الarchive mode لاحقاً ، عن طريق alter database .

 

مثال رقم : 2

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\APP\ORACLEO\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'E:\APP\ORACLEO\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'E:\APP\ORACLEO\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512
DATAFILE
'E:\APP\ORACLEO\ORADATA\ORCL\SYSTEM01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\SYSAUX01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\UNDOTBS01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\USERS01.DBF',
'E:\APP\ORACLEO\ORADATA\ORCL\EXAMPLE01.DBF',
'H:\APP\ORACLEO\FLASH_RECOVERY_AREA\ORCL\SYSAUX02.DBF',
'H:\APP\ORACLEO\FLASH_RECOVERY_AREA\ORCL\TESTTAB01.DBF'
CHARACTER SET WE8MSWIN1252
; 
 

المثال يوضح عملية إنشاء الملف حسب العوامل التالية : 

 

  • نريد تغيير إسم ال DATABASE إلى "RAN" مثلاً ، عوضاً عن "ORCL" > وبالتالي استخدمنا الأمر SET عوضاً عن REUSE . 

 

  • عدم توفر ال online redo files > وبالتالي استخدمنا الأمر RESTLOGS وهو المعني باخبار الأوراكل ليقوم بتجاهل الملفات الموجود تحت عبارة LOGFILE  وطالما اننا قد استخدمنا الأمر SET صار استخدام RESETLOGS  ضرورياً "تغيير إسم الداتا بيز ليس بالأمر السهل " . وتباعاً يجب فتح ال DATABASE باستخدام الأمر OPEN RESETLOGS . 

 

  • لا نريد عمل أرشفة قبل الإستعمال  > وبالتالي استخدمنا الأمر NOARCHIVELOG ، وهو  الإعداد الإفتراضي "يمكن تجاهل كتابتها" .

 

 

 

ملحوظة :-الأمر RESETLOGS أمر خطير جداً يجب التعامل معه بمسؤولية ، فهو يقوم بعمل تهيئة لل LOGS و إعادة ضبط الرقم المتسلسل "LOG SEQUENCE NUMBER" . اي ستبدأ عملية التسجيل من جديد . 

 

 

 

الآن كيف نعمل SCRIPT ليقوم بعمل الكنترول فايل عوضاً عنا ؟ 

 

إنشاء ملف trace من ال control file مع تحديد موقع إنشاء الملف "لتسهيل الوصول " :

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 'H:\ctl.sql';

نقوم بفتح الملف بإستخدام ال notebad  ، داخل الملف سنجد بعض الملاحظات المرفقة وتوضيح لحالتي ال RESETLOGS و ال NORESETLOGS , "ملاحظات جميلة جداً وشاملة ، ارجوك قم بقراءتها" .

 

- قم بمسح جميع الملاحظات وكل شئ يبدأ بالعلامة -- ، وإختار اي الوضعين تحتاج لتطبيقة "RESETLOGS OR NORESETLOGS" . 

 

وقم بحذف الآخر.

 

- انتبه ، لاتترك أي سطر فارغ بعد العبارة ولاحقتها ،،، خاصةً عند حذف العبارة "-- standyby log file" .

 

طبعاً يمكن نسخ احد الأمثلة أعلاه (1و2) والتعديل عليها ، إذن ما ضرورة انشاء ملف trace ؟ انشاء ملف ال trace سيقوم بإعفائك

 

من كتابة قيم المتغيرات ومواقع الملفات وكل هذه الخيارات ، لذا من الأفضل ان تقوم بهذه الخطوة ومن ثم تعدل بما يناسبك من

 

المثالين 1 و 2 .

 

 

- لمن لا يعرف طريقة إستخدام ال scripts ادخل على sql بحساب sys وقم بكتابة مسار الإسكربت مسبوقاً بعلامة @ على النحو التالي : 

 

SQL> @H:\ctl.sql

والله ولي التوفيق ،

 
رابط هذا التعليق
شارك

مشكلتي هي اني نزلت الموضوع الأول ولم حبيت أعدل عليه لم أستطع ، ولم أجد الخيار تعديل ، التعديل كان لنسياني تنيهاً مهماً ، بس المسؤولية العلمية تحتم علي إعطاء معلومة كاملة أو الإشارة لما انتقص منها  ، المهم الآن الموضوع التاني موجود بالمنتدى وياريت تتكرمي وتقومي بحذفه علشان اللبس الممكن يسببو مع مرور الوقت على المستخدمين ، بلغت عن الموضوع بنفسي لكن نظراً لغياب تيم الإشراف عن المنتدى "لا ألومهم طبعاً ، فالدنيا مشاغل " لا اتوقع ان اجد رداً عاجلاً ، ولاحظت انك ماشاء الله أكثر المشرفين نشاطاً ، ربنا يزيدك نشاط ، فقلت أكلمك وربما اجد عندك حل ، وهل توجد طريقة تمكن العضو من حذف موضوع قام بكتابته ؟ وشكراً جزيلاً لإهتمامك وسرعة الإستجابة  

رابط هذا التعليق
شارك

أشكر حرص حضرتك على إيصال المعلومة بشكل مكتمل لتعم الفائدة للجميع جزاك الله خيراً لفعل الخير 

وأشكر حضرتك للحرص على ان يكون المنتدى منظم ومنسق وموحد المعلومات 

قد أبلغت الإدارة بالموضوع 

والله يوفق الجميع

رابط هذا التعليق
شارك

مشكورة اخ ميسم ، المشكلة اتحلت والحمد لله ، جزاك الله كل خير ، مشكور يا feco407 على التفاعل الجميل 

رابط هذا التعليق
شارك

الرجاء من ذوي الخبرة مساعدتي في حل هذه المشكلة مع الشكر الجزيل

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[274], [81308], [84640], [], [], [], [], [], [], []

رابط هذا التعليق
شارك

الاخ قيس,

لا ادري ماذا حدث معك ليتسبب في هذه المشكلة فأرجو ارسال تاريخ الحالة وال log file..

 

من البحث عن مشاكل مشابهة لمشكلتك فقد تحتاج الى عمل Recovery

connect / as sysdba
shutdown immediate;
startup mount;
alter database recover;
alter database open;
رابط هذا التعليق
شارك

مشكور أخي العزيز على ردك السريع

فقد قمت بتطبيق ال recovery  ولكن الخطأ استمر

ولأحيطك علما هو اني قمت بفتح clone من فيرجن 4 لينكس الى 6

فظهرت هذه المشكلة علما اني طبقت جميع خطوات الترقية من فيرجن 10 ال 11 وكانت ناجحة

على فيرجن 4 لينكس وعند الانتقال الى 6 ظهرت هذه المشكلة؟؟؟؟؟؟؟

فداتا بيز في حالة mount ولكنها ليست open

رابط هذا التعليق
شارك

الرجاء من ذوي الخبرة مساعدتي في حل هذه المشكلة مع الشكر الجزيل

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],

[274], [81308], [84640], [], [], [], [], [], [], []

 

 

السلام عليكم أخ قيس ، أولاً لمن يكون عندك مشكلة معينة ياريت لو تفرد ليها موضوع منفصل لتجنب اللبس وفصل المشاكل والمواضيع عن بعضها البعض ،،،

 

ثانياً الخطأ العندك هو عبارة عن مشكلة مطقية في ال control file ، أمامك خيارين:

 

 - إتباع الخطوات المذكورة في البوست ، وانشاء control file  من جديد بإستخدام الأمرNORESETLOGS 

 

SQL>Startup mount ;

 

- نفذ ال query التالي : 

 

select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=b.group# and b.status='CURRENT';

 

"لمعرفة ال log  الحالي " ، اكتب البيانات المخرجة على ملف text لا ستخدامها لاحقاً .

 

- SQL>startup mount;

 

- SQL>recover database using backup controlfile until cancel;

 

-حيسالك من ال log ، حتدخل ال log location من ملف text "الخطوة الأولى " .

 

-SQL> Alter database open resetlogs ;

 

إختار الطريقة الأفضل والأسهل بالنسبة لك ،

 

والله ولي التوفيق ،

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية