it-swarm.asia

هل يمكنني تغيير SID لقاعدة بيانات Oracle؟

الخادم هو Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64 بت

هل هناك طريقة سهلة وسريعة لتغيير SIDs لقواعد بيانات الاختبار على الخادم؟

إسقاط وإعادة إنشاء قاعدة البيانات هو خيار بالنسبة لي. لكني أبحث عن شيء يتطلب وقتًا أقل.

الخيار الآخر لتعيين الأسماء في عملاء tnsnames.ora عرضة للأخطاء ، لأنه لا يتم إدارتها مركزيًا.

مقارنة بوقت إسقاط وإنشاء قاعدة بيانات على خادم SQL ، فإن مقدار الوقت المطلوب لإنشاء قاعدة بيانات Oracle جديدة أكبر من اللازم. علاوة على ذلك ، يمكنك إعادة تسمية مثيلات SQL Server. [عادة ما تعيد تسمية الخادم حيث يعمل SQL-Server ولديك بعض المشاكل حتى تعيد تسمية الخادم أيضًا].

18
bernd_k

منذ 9i dbnewid الأداة المساعدة (nid) يمكن استخدامها لتغيير اسم قاعدة البيانات (و DBID إذا لزم الأمر). إذا تم تغيير اسم قاعدة البيانات فقط ، فإن إعادة تعيين السجلات غير مطلوبة:

  • 1 قاعدة بيانات بدء التشغيل في وضع التحميل

    shutdown immediate
    startup mount
    
  • تشغيل 2 لتغيير اسم قاعدة البيانات:

    nid target=sys/[email protected] dbname=newname setname=YES
    
  • 3 اغلاق وبدء تشغيل قاعدة البيانات في وضع التحميل:

    shutdown immediate
    startup mount
    
  • 4 تغيير db_name في ملف spfile (أو في ملف pfile يقوم بتحرير الملف):

    alter system set db_name=newname scope=spfile;
    
  • 5 إعادة إنشاء ملف كلمة المرور:

    orapwd file=orapwnewname password=syspassword
    
  • 6 بدء تشغيل قاعدة البيانات

    startup
    
  • 7 خطوات لإعادة تسمية المشاركة:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim
    
13
Andrey Goryunov

تحتاج إلى إعادة إنشاء ملف التحكم

يصف هذا post بواسطة Kaunain Ahmed الخطوات اللازمة:

  1. القيام بما يلي: تغيير ملف تحكم النسخ الاحتياطي لقاعدة البيانات للتتبع ؛
  2. استخرج الأمر "إنشاء ملف تحكم" من ملف التتبع الخلفية-الوجهة-الوجهة.
  3. اغلاق DB.
  4. قم بتغيير اسم DB في init.ora وقم بتغيير init.ora
  5. قم بتغيير SID في/etc/oratab أو/var/opt/Oracle/oratab
  6. تغيير SID في البيئة الخاصة بك ومصدرها
  7. بدء تشغيل قاعدة البيانات لتحميل جبل حالة بدء التحميل
  8. إعادة إنشاء ملف التحكم مع العبارة من الموضع 2.
  9. قم بتغيير قاعدة البيانات إلى إعادة تسمية global_name إلى 10. قم بتغيير تكوين TNS وفقًا لذلك $ Oracle_HOME/network/admin/*. ora ابحث عن SID و GLOBAL_NAME

هناك أدوات أخرى المشار إليها في الموضوع.

إليك مشاركة بواسطة AskTom الذي يشير إلى العملية بمزيد من التفاصيل. في حين أن 10 جرام ، يجب أن يعمل.

17
Brian Ballsun-Stanton

نعم ، يمكنك ذلك وهو سهل للغاية أيضًا.

في Oracle ، يعد Oracle_SID مجرد اسم لـ Oracle Instance وليس له علاقة كبيرة بـ DBNAME. يمكن تقديم قاعدة بيانات باسم PROD باستخدام المثيلات مع أي اسم صالح. لا يوجد اتصال مباشر بين SID و DBNAME. يتم هذا الاتصال باستخدام المعلمات.

يتم تحديد ملف المعلمة على أنه init $ {Oracle_SID} .ora أو spfile $ {Oracle_SID} .ora في ملف المعلمة هو المعلمة db_name. هذا هو المكان الذي يتم فيه الاتصال بين Oracle Instance وقاعدة البيانات.

لذلك ، لا تحتاج إلى إعادة إنشاء ملف تحكم ، ولا تحتاج إلى استخدام nid ، فقط تأكد من أن ملف المعلمة الخاص بك يحمل الاسم الصحيح ، وقم بإسقاط Oracle Instance القديم وابدأ تشغيل Oracle Instance الجديد بعد تعيين Oracle_SID إلى اسم Oracle Instance الجديد. تم العثور على ملف المعلمة وملف كلمة المرور باستخدام $ {Oracle_SID} كجزء من الاسم.

إعادة إنشاء ملف التحكم مطلوب فقط عند تغيير DBNAME. مطلوب nid بعد عملية استنساخ حيث تحتاج إلى تغيير DBID لمنع الحوادث التي يمكن أن تضر النسخ الاحتياطية لقاعدة البيانات المصدر.

9
ik_zelf