إنشاء قاعدة بيانات Oracle في VM Azure

ينطبق على: ✔️ أجهزة Linux الظاهرية

توضح هذه المقالة كيفية استخدام Azure CLI لنشر جهاز ظاهري Azure (VM) من صورة معرض سوق Oracle لإنشاء قاعدة بيانات Oracle Database 19c. بعد نشر الخادم، يمكنك توصيل الخادم عبر SSH لتكوين قاعدة بيانات Oracle.

المتطلبات الأساسية

  • إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

  • Azure Cloud Shell أو Azure CLI.

    يمكنك تشغيل أوامر Azure CLI في هذا التشغيل السريع بشكل تفاعلي في Azure Cloud Shell. لتشغيل الأوامر في Cloud Shell، حدد Open Cloudshell في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. حدد نسخ لنسخ التعليمات البرمجية، ولصقها في Cloud Shell لتشغيلها. يمكنك أيضا تشغيل Cloud Shell من داخل مدخل Microsoft Azure. يستخدم Cloud Shell دائما أحدث إصدار من Azure CLI.

    بدلا من ذلك، يمكنك تثبيت Azure CLI محليا لتشغيل الأوامر. تتطلب الخطوات الواردة في هذه المقالة الإصدار 2.0.4 من Azure CLI أو أحدث. قم بتشغيل az version لمشاهدة الإصدار المثبت والمكتبات التابعة، ثم قم بتشغيل ترقية az للترقية. إذا كنت تستخدم تثبيتا محليا، فسجل الدخول إلى Azure باستخدام الأمر az login .

إنشاء مجموعة الموارد

أنشئ مجموعة موارد باستخدام الأمر az group create. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.

ينشئ المثال التالي مجموعة موارد تسمى rg-oracle في موقع شرق الولايات المتحدة.

az group create --name rg-oracle --location eastus

إشعار

ينشئ هذا التشغيل السريع Standard_DS2_v2 SKU VM في منطقة شرق الولايات المتحدة. لعرض قائمة وحدات SKU المدعومة حسب المنطقة، استخدم الأمر az vm list-skus .

إنشاء جهاز ظاهري

إنشاء جهاز ظاهري (VM) باستخدام الأمر az vm create .

ينشئ المثال التالي جهازا ظاهريا يسمى vmoracle19c. كما أنه ينشئ مفاتيح SSH، إذا لم تكن موجودة بالفعل في موقع مفتاح افتراضي. لاستخدام مجموعة معينة من المفاتيح، يمكنك استخدام --ssh-key-value الخيار مع الأمر .

az vm create \
    --name vmoracle19c \
    --resource-group rg-oracle \
    --image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
    --size Standard_DS2_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --public-ip-address-allocation static \
    --public-ip-address-dns-name vmoracle19c

بعد إنشاء الجهاز الظاهري، يعرض Azure CLI معلومات مشابهة للمثال التالي. لاحظ قيمة الخاصية publicIpAddress . يمكنك استخدام عنوان IP هذا للوصول إلى الجهاز الظاهري.

{
  "fqdns": "",
  "id": "/subscriptions/{snip}/resourceGroups/rg-oracle/providers/Microsoft.Compute/virtualMachines/vmoracle19c",
  "location": "eastus",
  "macAddress": "00-0D-3A-36-2F-56",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.64.104.241",
  "resourceGroup": "rg-oracle"
}

إنشاء قرص لملفات بيانات Oracle

إنشاء قرص جديد وإرفاقه لملفات بيانات Oracle ومنطقة استرداد سريعة (FRA) باستخدام الأمر إرفاق قرص az vm.

ينشئ المثال التالي قرصا باسم oradata01.

az vm disk attach \
    --name oradata01 --new \
    --resource-group rg-oracle \
    --size-gb 64 --sku StandardSSD_LRS \
    --vm-name vmoracle19c

فتح منافذ للاتصال

في هذه المهمة، يجب تكوين بعض نقاط النهاية الخارجية لمستمع قاعدة البيانات لاستخدامها عن طريق إعداد مجموعة أمان شبكة Azure (NSG) التي تحمي الجهاز الظاهري.

  1. إنشاء NSG للجهاز الظاهري باستخدام الأمر az network nsg create . ينشئ هذا الأمر vmoracle19cNSG NSG للقواعد للتحكم في الوصول إلى الجهاز الظاهري:

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. إنشاء قاعدة NSG باستخدام الأمر az network nsg rule create . ينشئ هذا الأمر قاعدة السماح ل Oracle NSG لفتح نقطة النهاية للوصول عن بعد إلى قاعدة بيانات Oracle:

    az network nsg rule create \
        --resource-group rg-oracle \
        --nsg-name vmoracle19cNSG \
        --name allow-oracle \
        --protocol tcp \
        --priority 1001 \
        --destination-port-range 1521
    
  3. إنشاء قاعدة NSG ثانية لفتح نقطة النهاية للوصول عن بعد إلى Oracle. ينشئ هذا الأمر قاعدة allow-oracle-EM NSG:

    az network nsg rule create \
        --resource-group rg-oracle \
        --nsg-name vmoracle19cNSG \
        --name allow-oracle-EM \
        --protocol tcp \
        --priority 1002 \
        --destination-port-range 5502
    
  4. حسب الحاجة، استخدم الأمر az network public-ip show للحصول على عنوان IP العام لجهازك الظاهري:

    az network public-ip show \
        --resource-group rg-oracle \
        --name vmoracle19cPublicIP \
        --query "ipAddress" \
        --output tsv
    

إعداد بيئة الجهاز الظاهري

  1. إنشاء جلسة SSH مع الجهاز الظاهري. <publicIPAddress> استبدل الجزء بقيمة عنوان IP العام لجهازك الظاهري، مثل 10.200.300.4:

    ssh azureuser@<publicIPAddress>
    
  2. بدّل إلى المستخدم الأساسي:

    sudo su -
    
  3. حدد موقع أحدث جهاز قرص تم إنشاؤه تريد تنسيقه للاحتفاظ بملفات بيانات Oracle:

    ls -alt /dev/sd*|head -1
    

    الإخراج مشابه لهذا المثال:

    brw-rw----. 1 root disk 8, 16 Dec  8 22:57 /dev/sdc
    
  4. كمستخدم الجذر، استخدم parted الأمر لتنسيق الجهاز.

    1. أولا، قم بإنشاء تسمية قرص:

      parted /dev/sdc mklabel gpt
      
    2. بعد ذلك، قم بإنشاء قسم أساسي يمتد على القرص بأكمله:

      parted -a optimal /dev/sdc mkpart primary 0GB 64GB	
      
    3. وأخيرا، تحقق من تفاصيل الجهاز عن طريق طباعة بيانات التعريف الخاصة به:

      parted /dev/sdc print
      

      الإخراج مشابه لهذا المثال:

      Model: Msft Virtual Disk (scsi)
      Disk /dev/sdc: 68.7GB
      Sector size (logical/physical): 512B/4096B
      Partition Table: gpt
      Disk Flags:
      Number   Start    End      Size     File system   Name     Flags
      1        1049kB   64.0GB   64.0GB   ext4          primary
      
  5. إنشاء نظام ملفات على قسم الجهاز:

    mkfs -t ext4 /dev/sdc1
    

    الإخراج مشابه لهذا المثال:

    mke2fs 1.42.9 (28-Dec-2013)
    Discarding device blocks: done                            
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    3907584 inodes, 15624704 blocks
    781235 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2164260864
    477 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
         4096000, 7962624, 11239424
     Allocating group tables: done                            
     Writing inode tables: done                            
     Creating journal (32768 blocks): done
     Writing superblocks and filesystem accounting information: done   
    
  6. إنشاء نقطة تحميل:

    mkdir /u02
    
  7. تحميل القرص:

    mount /dev/sdc1 /u02
    
  8. تغيير الأذونات على نقطة التحميل:

    chmod 777 /u02
    
  9. أضف التحميل إلى ملف /etc/fstab :

    echo "/dev/sdc1               /u02                    ext4    defaults        0 0" >> /etc/fstab
    

    هام

    يقوم هذا الأمر بتحميل ملف /etc/fstab بدون UUID معين، والذي يمكن أن يمنع إعادة التشغيل الناجحة للقرص. قبل محاولة إعادة تشغيل القرص، قم بتحديث إدخال /etc/fstab لتضمين UUID لنقطة التحميل.

  10. قم بتحديث ملف /etc/hosts بعنوان IP العام واسم مضيف العنوان. قم بتغيير الجزءين <Public IP> <VMname> و ليعكسا القيم الفعلية:

    echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
    
  11. أضف اسم مجال الجهاز الظاهري إلى ملف /etc/hostname . يفترض الأمر التالي إنشاء مجموعة الموارد وVM في منطقة eastus :

    sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
    
  12. افتح منافذ جدار الحماية.

    نظرا إلى تمكين SELinux بشكل افتراضي على صورة Marketplace، نحتاج إلى فتح جدار الحماية لحركة المرور لمنفذ الاستماع إلى قاعدة البيانات 1521، ومنفذ Enterprise Manager Express 5502. تشغيل الأوامر التالية كمستخدم أساسي أيضاً:

    firewall-cmd --zone=public --add-port=1521/tcp --permanent
    firewall-cmd --zone=public --add-port=5502/tcp --permanent
    firewall-cmd --reload
    

إنشاء قاعدة البيانات

تم تثبيت برنامج Oracle بالفعل على صورة Marketplace. إنشاء نموذج قاعدة البيانات كما يلي.

  1. التبديل إلى لمستخدم oracle:

    sudo su - oracle
    
  2. بدء تشغيل وحدة استماع قاعدة البيانات:

    lsnrctl start
    

    يتشابه الإخراج مع المثال التالي:

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-OCT-2020 01:58:18
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                20-OCT-2020 01:58:18
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    The listener supports no services
    The command completed successfully
    
  3. إنشاء دليل بيانات لملفات بيانات Oracle:

    mkdir /u02/oradata
    
  4. تشغيل مساعد إنشاء قاعدة البيانات:

    dbca -silent \
        -createDatabase \
        -templateName General_Purpose.dbc \
        -gdbname oratest1 \
        -sid oratest1 \
        -responseFile NO_VALUE \
        -characterSet AL32UTF8 \
        -sysPassword OraPasswd1 \
        -systemPassword OraPasswd1 \
        -createAsContainerDatabase false \
        -databaseType MULTIPURPOSE \
        -automaticMemoryManagement false \
        -storageType FS \
        -datafileDestination "/u02/oradata/" \
        -ignorePreReqs
    

    يستغرق إنشاء جهازاً ظاهرياً بضع دقائق.

    يتشابه الإخراج مع المثال التالي:

         Prepare for db operation
        10% complete
        Copying database files
        40% complete
        Creating and starting Oracle instance
        42% complete
        46% complete
        50% complete
        54% complete
        60% complete
        Completing Database Creation
        66% complete
        69% complete
        70% complete
        Executing Post Configuration Actions
        100% complete
        Database creation complete. For details check the logfiles at: /u01/app/oracle/cfgtoollogs/dbca/oratest1.
        Database Information:
        Global Database Name:oratest1
        System Identifier(SID):oratest1
        Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/oratest1/oratest1.log" for further details.
    
  5. تعيين متغيرات Oracle:

    قبل الاتصال، تحتاج إلى تعيين متغير ORACLE_SIDالبيئة :

    export ORACLE_SID=oratest1
    

    يجب عليك أيضا إضافة ORACLE_SID المتغير إلى oracle ملف المستخدمين .bashrc لتسجيل الدخول في المستقبل باستخدام الأمر التالي:

    echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
    

أتمتة بدء تشغيل قاعدة البيانات وإيقاف تشغيلها

قاعدة بيانات Oracle بشكل افتراضي لا تلقائيا عند إعادة تشغيل VM. لإعداد قاعدة بيانات Oracle لبدء التشغيل تلقائيا، قم بتسجيل الدخول أولا كمستخدم أساسي. ثم قم بإنشاء وتحديث بعض ملفات النظام.

  1. تسجيل الدخول كمستخدم الجذر:

    sudo su -
    
  2. تغيير علامة بدء التشغيل التلقائي من N إلى Y في ملف /etc/oratab:

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. أنشئ ملفا باسم /etc/init.d/dbora وأضف أمر bash التالي إلى الملف:

    #!/bin/sh
    # chkconfig: 345 99 10
    # Description: Oracle auto start-stop script.
    #
    # Set ORA_HOME to be equivalent to $ORACLE_HOME.
    ORA_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    ORA_OWNER=oracle
    
    case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the Oracle sign-in
        # will not prompt the user for any values.
        # Remove "&" if you don't want startup as a background process.
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
        touch /var/lock/subsys/dbora
        ;;
    
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the Oracle sign-in
        # will not prompt the user for any values.
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
        rm -f /var/lock/subsys/dbora
        ;;
    esac
    
  4. تغيير الأذونات على الملفات باستخدام chmod الأمر :

    chgrp dba /etc/init.d/dbora
    chmod 750 /etc/init.d/dbora
    
  5. إنشاء ارتباطات رمزية لبدء التشغيل وإيقاف التشغيل:

    ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
    ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
    ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
    
  6. لاختبار التغييرات الخاصة بك، أعد تشغيل الجهاز الظاهري:

    reboot
    

تنظيف الموارد

بعد الانتهاء من استكشاف قاعدة بيانات Oracle الأولى على Azure ولم تعد هناك حاجة إلى الجهاز الظاهري، يمكنك استخدام الأمر az group delete لإزالة مجموعة الموارد والأجهزة الظاهرية وجميع الموارد ذات الصلة.

az group delete --name rg-oracle

الخطوات التالية