Highlight

تحويل ترميز قواعد بيانات أوراكل


طرق تحويل ترميز قواعد بيانات أوراكل وأخطارها

 

 

تنقسم عملية تحويل أو ترقية أو ترحيل Migration قاعدة بيانات أوراكل تعمل بترميز Charsetالى اخر الى قسمين :

  1. عمل مسح للبياناتData Scanning

ونقصد به عملية تخديد نوع الترميز الذى سيتم الانتقال اليه والمشاكل التى يمكن أن تحدث وكيفية معالجتها بالأضافة لحل مشكلة الحذف لبعض الحروف التى يمكن أن تحدثCharacter Truncation.

  1. عمل ترحيل للبيانات Database Migration

وهى عملية تطبيق الأوامر على البيانات لأجراء التحويل.

وتتم عملية تحويل البيانات بطريقتين ( لكن يجب ان يتم التأكد من عدم وجود هذه الحالات القادمة قبل تطبيق احدى خطوات التحويل).

تنبيه :

حالات يجب الحذر لها :

 

  1. عملية تحويل الحروف التى نتجت عن عملية تصدير او استيراد

تعتبر أداة التصدير والأستيرادExport and importمن الأدوات التى تستخدم أحيانا لتحويل ترميز بيانات من قاعدة بيانات الى اخرى لكن يجب الأنتباه الى أن هذه العملية يمكن أن تسبب عملية تخريب للبيانات أو حذف غير منتظم لمعظمها أو جزء منها ولذلك يجب التأكد من أن الترميز الهدف هو ترميز متكامل من الترميز المصدرSupersetأى انه يحتوى على كل الحروف التى يحتويها الترميز المصدر .

مثلاً : لنقل ان هناك قاعدة بيانات Aوهى تحتوى البيانات المراد تحويلها الى قاعدة بيانات بترميز مختلف وهى B , هنا يشترط أن يحوى ترميز قاعدة بيانات Bكل حروف قاعدة بينات Aلأن اى حرف غير موجود سيتم عرضه أو تحويله الى ?أو ¿وهذا ببساطه معناه حدوث تخريب للبيانات وأستحالة تحويلها أو ارجاعها الى حالتهاالأولى .

 

 

A —————-A
B——————B
C——————C

D——————-¿

 

لاحظ ان المجموعة باليمين لاتحتوى الحرفDلذلك تم استبداله بالحرف ¿وهذا مايحدث فى عملية التحويل.

 

مثلا لايمكن تحويل بيانات قاعدة بينات تعمل على الترميز AMERICAN_AMERICA.WE8MSWIN1252 وهو الترميز الأساسى لجهاز وندوز بضبط اللغة الأنجليزية كلغة أساسية بغض النظر عن وجود العربية ام لاء. الى الترميز ARABIC_SUDAN.AR8MSWIN1256لان الترميز الأخير لايحتوى جميع الحروف التى هى بالترميز الأول .

يمكن أستخدام ترميز أقوى وشامل مثل UTF-8فهو يحتوى جميع اللغات تقريباً.

  1. البيانات المتضررة الناتجة من ضبط غير صحيح لأحد الأجهزة على الشبكةClient

طريقة أخرى يمكن أن تحدث ضياع أو تخريب للبيانات وهى تصدير بيانات غير معلومة بقاعدة البيانات والذى السبب الرئيسى فى حدوثه هو الضبط الخاطى لجهاز على الشبكة يتم أدخال البيانات منه الى السيرفرالذى يحتوى قاعدة البيانات .ونقصد بالضبط هو ضبط قيمة ال NLS_LANGعلى الريجسترى الخاص بالجهاز.
بوضوح أكثر نعلم ال
Code pageلأى نظام وندوز يعمل بالأنجليزية كلغة أساسية هو AMERICAN_AMERICA.WE8MSWIN1252فاذا تم ضبط القيمة بالريجسترى ظبطاً صحيحا فان السيرفر سيتمكن من تخزين البيانات عليه بالشكل الصحيح أما اذا تم ضبط ملف الNLS_LANGبطريقة تخالف ضبط ال Code pageفان البيانات لن يتم تخزينها على السيرفر بالطريقة الصحيحة مامن شأنه ان يؤدى الى تلفها .

مثال أذا كان ضبط قاعدة البيانات هوUTF8وضبط قيمة الريجسترى لجهاز وندوز يستخدم اللغة الأنجليزية هىUTF8فى حين يفترض ان يتم ضبط ال NLS_LANGب American_america.we8mswin1252كما ذكرنا وبالتالى فانه عندما يتم ارسال اى بيانات من الClientالى السيرفرفان السيرفر لن يقوم بتحويل ترميز البيانات وسيخزنها كما هى استنادا الى ضبط ال NLS_LANGالذى يشير الUTF8اى ان ضبط قاعدة البيانات تماثل ضبط جهاز الأدخال وبالتالى سيتم تخزين البيانات بطريقة خاطئة .

 

الان بعد ان علمنا هاتان الحالتان نعد الى طرق تحويل البيانات Data Migration .

الطريقة الأولى :

  1. تحويل ترميز البيانات عن طريق أداة التصدير والأستيراد Export andimport utility

طبعا بعد وضع ماتم ذكره فى الحسبان عن مخاطر عدم الأهتمام بالتوافق بين الترميزين.

بالأضافة للأنتباه لبعض الحقول التى تحمل نوع البيانات Character حيث ربما تحتاج الى توسيع قبل انتقالها الى ترميز اخر واهمال هذا الموضوع يؤدى الى حذف فى بعض البيانات.

الطريقة الثانية:

  1. تحويل ترميز البيانات عن طريق الأمر ALTER DATABASE CHARSET

تعتبر هذه الطريقة أسرع طريقة لتحويل الترميز وليس البيانات ( الترميز وليس البيانات) انتبه !!!

لذا فهى تستخدم فقط اذا تأكدنا من أن الترميز الثانى المراد الأنتقال اليه يحتوى كل الحروف الموجودة فى الترميز المصدر الأول ويسمى Superset , بالأضافة لأن هذه الطريقة لاتستخدم فى حالة تحويل الترميز من لغة تعل على Singlebyteالى اخرى تستخدم Double byte

 

جملة التحويل :

ALTER DATABASE [db_name] CHARACTER SET new_character_set;

 

ولعملية التحويل نتبع:

1- أغلاق قاعدة البيانات Shutdown immediate

2- قم بعمل نسخ كامل لقاعدة البيانات لأن عملية التحويل لايمكن التراجع عنها.

3- طبق الجمل التالية

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE CHARACTER SET new_character_set;

SHUTDOWN IMMEDIATE; — or SHUTDOWN NORMAL;

STARTUP;

 

 

يتبع ملف التحقق من امكانية تحويل الترميز قبل البدء وكيفية استخدام الأداة Scannerلتحقيق ذلك.

 

 

تعليق واحد

comments user
صالح الحنشلي

بارك الله فيك.

هذا الموقع يستخدم خدمة أكيسميت للتقليل من البريد المزعجة. اعرف المزيد عن كيفية التعامل مع بيانات التعليقات الخاصة بك processed.

You May Have Missed