it-swarm.asia

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

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

32
Leigh Riffel

في المواقع التي عملت فيها ، يجب كتابة أي تغييرات يلزم إجراؤها على مثيل (مثيلات) الإنتاج كبرامج نصية للتغيير يتم تشغيلها في SQL * Plus ؛ بالإضافة إلى ذلك ، يجب تحديث البرامج النصية اللازمة لإعادة إنشاء جميع كائنات المخطط من البداية. يتم فحص جميع هذه البرامج النصية في التحكم في التغيير ، ويتم ترحيلها من هناك.

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

22
Jeffrey Kemp

لقد فكرت وقرأت الكثير عن هذا الموضوع. هذا هو موضوع واسع للتحكم في التكوين واستراتيجية إدارة التغيير. CMMI لديه مجال في هذا الموضوع. حتى في الشركات التي لديها اعتماد CMMI 3-5 ، فإنها في بعض الأحيان لا تتحكم في الإصدار بقواعد بياناتها.

يجب الإجابة على هذا السؤال مع مراعاة اتباع القيود .

  1. لديك حارس ويتم تنفيذ كل DDL من قبل هذا الحارس.
  2. يتمتع الأشخاص الآخرون بالقدرة على تنفيذ عبارات DDL.
  3. ما عليك سوى تسجيل التغييرات التي تم إجراؤها ولكنك لا تحتاج إلى مقارنة الاختلافات الشاسعة.
  4. يتم تصميم قاعدة البيانات الخاصة بك عن طريق أداة خارجية ثم يتم نشرها في قاعدة البيانات. يمكن أن تكون هذه الأداة الخارجية برامج DDL النصية في التحكم بالمصادر حتى. لكن النقطة الأساسية هي أنك تتحكم في المصدر ثم تنشر في قاعدة البيانات.
  5. لست بحاجة إلى معرفة التغييرات الآنية ولكن من وقت لآخر: أي كل ساعة أو يوميًا.
  6. لديك بنية خادم محددة: التطوير والاختبار والإنتاج. واستراتيجية اختبار جيدة.

الجواب 1

  • إذا كان 1 ، 4 ، 6 صحيحًا ، يمكنك استخدام عنصر تحكم مصدر خارجي. فمثلا
    • يحتوي Embercadero على أداة إدارة تغيير قاعدة البيانات ( http://www.embarcadero.com/products/db-change-manager-xe ). والتي لديها القدرة على عكس هندسة قاعدة بيانات (Oracle) ووضعها في التحكم في مصدرها. ثم يمكن لأي عدد من المطورين ، dba الوصول إلى هذا المخطط وإجراء تغييرات عليه.
    • يشبه Oracle SQL Designer هذا النهج.
    • وضعك لإنشاء نصوص برمجية الجدول للتحكم في المصدر (svn ، Mercurial إلخ) والحفاظ عليها أيضًا نفس الشيء.
    • http://www.liquibase.org منهج مؤتمت أعلاه.
    • لقد كتبت منشئ التعليمات البرمجية الذي أنشأ عبارات DAL (طبقة الوصول إلى البيانات) و DDL (إنشاء جدول). وضعناهم التحكم بالمصادر وحافظنا عليه هناك. أعتقد أن الحل المخصص مثل liquibase قد يعمل بشكل أفضل.

يعمل هذا الأسلوب بشكل جيد إذا كان لديك 6. يمكنك وضع عبارات DDL ، وهو أيضًا رمز ، في التحكم بالمصادر والحفاظ عليه. لن يقوم أحد بتغيير خوادم الاختبار والإنتاج دون مراعاة.

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

هذا نهج موجه للغاية للمطورين. ولكن عند تطوير وحدة جديدة لأول مرة ، فإنها تعمل بشكل جيد.

الإجابة 2 - إذا كانت 1 و 6 صحيحة:

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

- Red Gate Schema Compare supports Oracle
- Embercadero has similar tool
- https://github.com/carbonfive/db-migration
- http://www.sumsoftsolutions.com/svco/ (I have not used this product but I believe it belongs to this category.)
- Rails Active Migration (http://www.Oracle.com/technetwork/articles/kern-Rails-migrations-100756.html)

الفرق بين الإجابة 1 والإجابة 2 ، في الإجابة 1 ، تقوم بجمع عبارات DDL لقاعدة البيانات بأكملها وتخزينها. في الإجابة 2 ، تحتاج إلى تخزين كل نسخة من التغيير.

  1. بداية
  2. الإصدار 1
  3. الإصدار 2
  4. الإصدار 3
  5. ...

إذا وضعت عمودًا على جدول وقررت لاحقًا إزالته. ستظهر لك البرامج النصية هذا في answer2 بينما في answer1 سترى الإصدار الأخير فقط. وتحتاج إلى مقارنة V2 و V1 لمعرفة الاختلافات. أنا شخصياً أحب الإجابة 1 بشكل أفضل حيث يمكنني بسهولة مقارنة Start و V3 و V1 و V3. في الإجابة 2 ، أحتاج إلى البحث عن جميع التغييرات. أيضا في الإجابة 2 النصي في التحكم في المصدر يميل إلى أن يكون الانفجار الكبير ، النصي معقدة. من الصعب العثور على المعلومات.

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

الإجابة 4 إذا كان لديك 3 و 5. لاحظ أنه في هذه الحالة ليس لديك قيود 6 ، أي: ليس لديك تطوير ، اختبار ، خوادم المنتج. خادم الإنتاج فقط. بدلا من الزناد لتخزين التغييرات. يمكنك استخدام أداة خارجية للعثور على التغييرات وتخزين البرامج النصية لـ DDL في عنصر تحكم المصدر.

إذا كانت هذه الأداة قادرة على تسجيل من قام بالتغييرات ، فسيكون ذلك مفيدًا. لاحظ أنه في هذا الحل تفقد DDL الإضافي الذي يتم على فترات.

10
Atilla Ozgur

لقد عثرت للتو على برنامج تعليمي مثير للاهتمام حول استخدام Liquibase لإصدار Oracle.

6
Leigh Riffel

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

4
Leigh Riffel

لقد استخدمنا التحكم في إصدار المخطط لقواعد بيانات 11 جرام ، ولكن واجهنا بعض المشكلات مع البرنامج في 11.2. إذا لم يكن لهذه المشاكل التي ما زلنا نعمل عليها ، فسيكون منتجًا رائعًا.

4
Leigh Riffel

اعتدنا على العمل مع Oracle SQL Designer ، والذي (تم تخمينه) الذي تم استبداله بـ SQL Developer Data Modeler الآن. http://www.Oracle.com/technetwork/developer-tools/datamodeler/overview/index.html

كان هذا لطيفًا جدًا ، خاصة. القدرة على تعيين نطاقات للأعمدة وتوفير الكثير من الوقت في إنشاء أعمدة مشتركة (mtime و ctime وما إلى ذلك).

2
Sebastian Roth

نستخدم Oracle-ddl2svn مجموعة من الأدوات (التي أنا مؤلفها) لأتمتة تخزين مخطط Oracle DDL في SVN.

2
popalka

ألق نظرة على DBmaestro TeamWork التي قاعدة بيانات تفرض إدارة التغيير النهج.


الإفصاح: أعمل لدى dbMaestro

0
Uri

لم أستخدمه مطلقًا ، ولكن http://blog.gitora.com/ هو خيار آخر.

0
Leigh Riffel