ترحيل قاعدة بيانات التطبيق

يزيل Oracle Autonomous Transaction Processing الحاجة إلى صيانة مضيف قاعدة البيانات والبرامج وتصحيحها وتحسينها، وبالتالي يوفر الوصول إلى مستوى مخطط قاعدة البيانات فقط. ولهذا السبب، تستند أدوات الترحيل المتاحة لترحيل قاعدة بيانات محلية إلى المعالجة الذاتية للمعاملات إلى مضخة البيانات، وهي أداة ترحيل على مستوى المخطط مضمنة مع Oracle Database.

حول ترحيل قاعدة بيانات التطبيق

تتكون عملية ترحيل قاعدة البيانات من تكوين نسخة مخطط قاعدة بيانات في قاعدة البيانات المصدر، وتحميلها إلى تخزين الكائنات في Oracle Cloud Infrastructure (OCI)، وتكوين قاعدة بيانات معالجة المعاملات الذاتية للاستيراد من تخزين الكائنات واستيراد نسخة مخطط قاعدة البيانات من Oracle Cloud Infrastructure Object Storage.

فيما يلي نظرة عامة على العملية:

  1. تصدير مخطط (مخططات) قاعدة البيانات إلى ملف نسخة محلي.
  2. نقل ملف النسخ إلى تخزين الكائنات باستخدام OCI CLI.
  3. إحضار OCID لقاعدة البيانات الذاتية.
  4. احصل على الحافظة للوصول إلى قاعدة البيانات المستقلة من قاعدة البيانات المصدر (أو مضيف بديل).
  5. تكوين نفق محلي لقاعدة البيانات المستقلة للتكوين.
  6. إحضار مقطع تصديق OCI لقاعدة البيانات الذاتية للوصول إلى Oracle Cloud Infrastructure Object Storage.
  7. تكوين صلاحيات الوصول إلى قاعدة البيانات المستقلة.
  8. استيراد ملف النسخ من Oracle Cloud Infrastructure Object Storage إلى قاعدة البيانات المستقلة.

تصدير مخطط قاعدة البيانات والبيانات

تصدير مخطط قاعدة البيانات والبيانات إلى ملف نسخ واحد.

  1. تكوين مجلد export لملف النسخة.
    لاحظ أننا نقوم بإنشاء نسخة ملف واحد، والتي قد تكون كبيرة للغاية في بعض الظروف. راجع خيارات أخرى لاستخدام مضخة البيانات لتكوين ملفات متعددة الأجزاء.
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. نقل ملف النسخ إلى رزمة Oracle Cloud Infrastructure Object Storage التي قمت بتكوينها سابقًا باستخدام واجهة سطر الأوامر Oracle Cloud Infrastructure (OCI).
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

إحضار OCID لـ Autonomous Database

إحضار OCID وIP لنقطة النهاية الخاصة وعنوان URL لنقطة النهاية الخاصة لقاعدة بيانات Oracle Autonomous Transaction Processing.

  1. في وحدة تحكم Oracle Cloud Infrastructure الطرفية، حدد Oracle Database، ثم معالجة العمليات الذاتية.
  2. حدد المقطع من قائمة المقاطع على الجانب الأيمن من الصفحة.
    المقطع هو المكان الذي قمت بتوزيع الموارد عليه.
  3. انقر على قاعدة البيانات التي قمت بتزويدها سابقًا للحصول على التفاصيل.
  4. نسخ OCID وIP لنقطة النهاية الخاصة وعنوان URL لنقطة النهاية الخاصة (اسم المضيف) وحفظها في ورقة ملاحظات لوقت لاحق.

إحضار ملف حافظة قاعدة البيانات

إحضار ملف حافظة قاعدة بيانات Oracle Autonomous Transaction Processing وتحديث الموقع عن طريق تعيين الدليل للإشارة إلى موقع الحافظة في الملف sqlnet.ora.

  1. استخدم واجهة سطر أوامر Oracle Cloud Infrastructure (OCI) للحصول على ملف حافظة قاعدة بيانات Autonomous Transaction Processing باستخدام OCID وكلمة السر.
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. فك ضغط الحافظة.
    unzip wallet.zip
  3. قم بتحرير ملف sqlnet.ora واستبدال قيمة الدليل لمطابقة موقع ملفات الحافظة غير المضغوطة.
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. قم بتعيين متغير البيئة TNS_ADMIN لمطابقة المجلد الذي تم فك ضغط الحافظة فيه.
    export TNS_ADMIN=$(pwd)

تكوين نفق محلي لـ Autonomous Database من خلال مضيف Bastion

تكوين نفق عن طريق تكوين عنوان IP العام لمضيف المقطع.

  1. احصل على IP العام لمضيف المقطع السفلي من مخرجات terraform.
    إذا تم توزيع خادم Apache Tomcat في شبكة فرعية عامة، فيمكنك استخدام IP العام لخادم Tomcat، وإلا فاستخدم عنوان IP العام للمضيف.
  2. تعريف IP الخاص بالشريحة السفلية لتكوين نفق.
    export BASTION_IP=Public IP of the bastion
  3. قم بتشغيل الأمر لتصدير مضيف قاعدة البيانات باستخدام عنوان IP لنقطة النهاية الخاصة لقاعدة البيانات Autonomous Transaction Processing وssh لمضيف قاعدة البيانات.
    DB_HOST هو IP لنقطة النهاية الخاصة التي تم تجميعها سابقًا.
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    عند المطالبة، أدخل نعم لإقرار المضيف الجديد.
  4. قم بتحرير ملف /etc/hosts للإشارة إلى مضيف نقطة النهاية الخاصة بقاعدة البيانات المستقلة إلى 127.0.0.1 (localhost).
    يقوم هذا بالبحث عن مضيف نقطة النهاية الخاصة في ملف tnsnames.ora.
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. تحقق من صحة نقطة الانتهاء.
    cat /etc/hosts
    وينبغي أن يكون الناتج مماثلا لما يلي:
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

إنشاء مقطع تصديق

تكوين مقطع لاستخدامه عند نقل بياناتك إلى Oracle Cloud Infrastructure Object Storage وفي قاعدة بيانات Oracle Autonomous Transaction Processing. سترى سلسلة مقطع التصديق فقط عند تكوينها، حتى يمكنك نسخ مقطع التصديق إلى موقع آمن على الفور.
  1. تسجيل الدخول إلى وحدة تحكم Oracle Cloud Infrastructure الطرفية
  2. انقر على الأيقونة مستخدم لفتح قائمة ملف التعريف، ثم انقر على إعدادات المستخدم.
    لاحظ اسم المستخدم بالكامل (قد يكون بريدك الإلكتروني أو بريدك الإلكتروني مسبوقًا بخدمة الدخول الموحد التي تستخدمها، في حالة تنشيطها).
  3. انقر على مقاطع التصديق، ثم انقر على تكوين مقطع.
  4. أدخل وصفًا ذا معنى لمقطع التصديق وانقر على إنشاء مقطع.
  5. انسخ المقطع واحفظه حتى تتمكن من استرجاعه لاحقًا.
    يتم عرض المقطع مرة واحدة فقط. عند إغلاق مربع الحوار، لن تتمكن من رؤية المقطع في وحدة التحكم الطرفية مرة أخرى.
  6. انقر على إغلاق.

تكوين بيانات صلاحية السحابة في Autonomous Database

أضف اسم مستخدم Oracle Cloud Infrastructure (OCI) وكلمة سر مقطع التصديق باعتبارهما الصلاحيات الافتراضية لقاعدة بيانات Oracle Autonomous Transaction Processing.

  1. باستخدام عميل SQLPLus الفوري، اتصل بقاعدة بيانات معالجة العمليات الذاتية البعيدة من خلال النفق الذي تم تكوينه سابقًا.
    sqlplus admin@atp_db_name_high
  2. في الموجه، أدخل كلمة سر المسئول لقاعدة بيانات معالجة المعاملات الذاتية.
    atp_admin_password الذي تم تكوينه في الملف terraform.tfvars.
  3. تأكد من تسجيل الدخول إلى موجه SQLPlus.
    SQL>
  4. قم بتكوين بيانات صلاحية سحابة OCI في قاعدة بيانات Autonomous Transaction Processing باستخدام الأمر التالي، باستخدام اسم مستخدم OCI وكلمة سر مقطع تصديق OCI.
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. تعيين الصلاحيات الخاصة بك على أنها الصلاحيات الافتراضية.
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. خروج من SQLPlus.
    SQL> exit

استيراد ملف النسخ إلى Autonomous Database

استخدم مضخة البيانات لاستيراد نسخة البيانات إلى قاعدة بيانات معالجة المعاملات الذاتية.

  1. حدد متغيرات البيئة للمنطقة (مثل us-ashburn-1) ومساحة الاسم والرزمة واسم الملف واسم قاعدة بيانات معالجة المعاملات الذاتية (مثل atpdb) وكلمة سر مسئول معالجة المعاملات الذاتية.
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. قم بتشغيل الأمر التالي:
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    ستفشل المحاولة الأولى مع حدوث خطأ: ORA-01950: no privileges on tablespace 'DATA'. انتقل إلى الخطوة التالية لإعطاء المستخدم الذي تم إنشاؤه من مخطط قاعدة البيانات حصة.

  3. منح المستخدم مساحة جدول غير محدودة.
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    يجب أن تظهر المخرجات التالية:
    Grant Succeeded
  4. قم بإسقاط الجداول التي تم تكوينها في الخطوة 2 للسماح بتكوين البيانات في التشغيل التالي.
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. قم بتشغيل الأمر التالي لاستيراد البيانات الآن بعد أن يكون لدى المستخدم حصة صالحة.
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    سترى أخطاء مرتبطة بالمستخدم موجودة بالفعل. وهذا أمر طبيعي لأنه تم تكوين الكائنات عندما قمنا بتشغيل الأمر للمرة الأولى في الخطوة 2.
تم ترحيل قاعدة البيانات.