سؤال

كنت بحاجة إلى تغيير SID لقاعدة بيانات Oracle XE (وليس اسم الخدمة) لمطابقة قاعدة بيانات الإنتاج.

عندما حاولت البحث عبر الإنترنت، كانت معظم الصفحات تصف تغيير اسم الخدمة أو إضافته من خلال tnsnames.ora؛هذا ليس ما كنت بحاجة إلى القيام به.

هل كانت مفيدة؟

المحلول

ال Asktom تحتوي المقالة على الإجابة، ولكن التنسيق والإسهاب يجعل من الصعب متابعتها، لذا إليك ملخصًا:

[XE_HOME] يعني المكان الذي تم تثبيت Oracle XE فيه.عادة هذا هو C:\oraclexe\app\oracle\product\10.2.0\server.

تأكد من حصولك على امتيازات المسؤول وإلا سيفشل الإجراء.

  1. تكوين SPFILE (يمكنك إزالة الملف القديم إذا أردت)
    1. copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
    2. copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
    3. يحرر [XE_HOME]\database\initNEW_SID_NAME.ora:يجب أن يحتوي على سطر واحد مثل هذا: SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
  2. إيقاف الخدمة واستبدال الخدمة القديمة بخدمة جديدة:
    1. sqlplus / as sysdba وتنفيذ shutdown
    2. lsnrctl stop
    3. oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
    4. oradim -delete -sid XE
    5. lsnrctl start
  3. تحديث خاصية البيئة ORACLE_SID (إعدادات النظام > خيارات متقدمة > البيئة)
  4. إجبار Oracle على التسجيل مع المستمع
    • sqlplus / as sysdba وتنفيذ alter system register;

يمكنك التحقق من تغيير SID عن طريق تنفيذ الاستعلام التالي: select instance_name from v$instance;

نصائح أخرى

الجواب ، واضطررت للذهاب من خلال الكثير من جوجل فو للوصول الى ذلك.

لقد واجهت بعض المشاكل في الحل الذي نشره يوهانس، لذا كان عليّ القيام ببعض الخطوات الإضافية.عند محاولة الاتصال بـ Oracle (الخطوة 4) عن طريق القيام بذلك sqlplus / كما sysdba أنا أخذت:

ERROR: ORA-12560: TNS:protocol adapter error

الحل لهذا كان تنفيذ السطر التالي:

oradim -start -sid NEW_SID_NAME

بعد ذلك، كان الاتصال بـ / يعمل بشكل جيد، ولكن محاولة الاتصال بـ NEW_SID_NAME بالنظام أو الموارد البشرية سببت لي مشكلة أخرى:

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

لقد تأكدت من ذلك مع الاستعلام select instance_name from v$instance; أن المستمع سيكون NEW_SID_NAME، وكذلك فعل.لكن الجري lsnrctl status في سطر الأوامر أو الاستعلام select name from dba_services; لم يُظهر NEW_SID_NAME كمستمع.كان حل هذه المشكلة هو تنفيذ الجملة التالية على sqlplus:

alter system set service_names='NEW_SID_NAME';

ربما سوف تحتاج إلى التنفيذ alter system register; بعد هذا أيضا.

بعد القيام بهذه الخطوتين، يمكنني الاتصال بـ NEW_SID_NAME بالنظام والموارد البشرية.

نأمل أن يساعد

في الإصدار 11g كل الحلول السابقة لم تنجح...أحصل دائمًا على الخطأ التالي عند محاولة القيام بـ sqlplus / كما sysdba :

خطأ:أورا-12560:TNS: خطأ في محول البروتوكول

لحسن الحظ، وجدت برنامجًا نصيًا للقيام بما أردت القيام به ضمن [XE_HOME]\config\scripts.يُسمى البرنامج النصي XE.bat وسيعمل على إنشاء قاعدة بيانات جديدة من البداية ويطلب منك كلمة مرور النظام طوال العملية.إذن ما فعلته هو:

  1. إيقاف الخدمة الحالية وإزالتها إن وجدت:

أوراديم -حذف -sid XE

  1. وقف المستمع
  2. قم بتكوين SPFILE كما أوضح يوهانس
  3. قم بعمل نسخة من السكربت XE.bat، يمكنك تسميته كما تريد
  4. قم بتحرير نسخة البرنامج النصي على النحو التالي:

    1. قم بتغيير السطر "تعيين ORACLE_SID=XE" إلى "تعيين ORACLE_SID=NEW_SID_NAME"
    2. قم بتغيير المكان الذي ترى فيه "-sid XE" إلى "-sid NEW_SID_NAME"
    3. قم بتحديث السطر الذي يستدعي فيه الأمر "orapwd.exe" للإشارة إلى ملف يسمى PWDNEW_SID_NAME.ora بدلاً من PWDXE.ora
    4. قم بتحديث السطر الذي يردد spfileXE.ora في initXE.ora ليردد spfileNEW_SID_NAME.ora إلى initNEW_SID_NAME.ora (قد يجعل هذا الجزء الخطوة 3 عديمة الفائدة ولكني أفضل القيام بذلك على أي حال، فقط في حالة...)
  5. تنفيذ البرنامج النصي...سيطالبك بكلمة مرور النظام عدة مرات

أدخل القيمة لـ 1:

أو

أدخل القيمة لـ 2:

هذا كل شيء، قاعدة البيانات الجديدة التي تحتوي على NEW_SID_NAME الخاص بك أصبحت قيد التشغيل!!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top