إنشاء قاعدة بيانات 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) التي تحمي الجهاز الظاهري.
إنشاء NSG للجهاز الظاهري باستخدام الأمر az network nsg create . ينشئ هذا الأمر vmoracle19cNSG NSG للقواعد للتحكم في الوصول إلى الجهاز الظاهري:
az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
إنشاء قاعدة 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
إنشاء قاعدة 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
حسب الحاجة، استخدم الأمر az network public-ip show للحصول على عنوان IP العام لجهازك الظاهري:
az network public-ip show \ --resource-group rg-oracle \ --name vmoracle19cPublicIP \ --query "ipAddress" \ --output tsv
إعداد بيئة الجهاز الظاهري
إنشاء جلسة SSH مع الجهاز الظاهري.
<publicIPAddress>
استبدل الجزء بقيمة عنوان IP العام لجهازك الظاهري، مثل10.200.300.4
:ssh azureuser@<publicIPAddress>
بدّل إلى المستخدم الأساسي:
sudo su -
حدد موقع أحدث جهاز قرص تم إنشاؤه تريد تنسيقه للاحتفاظ بملفات بيانات Oracle:
ls -alt /dev/sd*|head -1
الإخراج مشابه لهذا المثال:
brw-rw----. 1 root disk 8, 16 Dec 8 22:57 /dev/sdc
كمستخدم الجذر، استخدم
parted
الأمر لتنسيق الجهاز.أولا، قم بإنشاء تسمية قرص:
parted /dev/sdc mklabel gpt
بعد ذلك، قم بإنشاء قسم أساسي يمتد على القرص بأكمله:
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
وأخيرا، تحقق من تفاصيل الجهاز عن طريق طباعة بيانات التعريف الخاصة به:
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
إنشاء نظام ملفات على قسم الجهاز:
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
إنشاء نقطة تحميل:
mkdir /u02
تحميل القرص:
mount /dev/sdc1 /u02
تغيير الأذونات على نقطة التحميل:
chmod 777 /u02
أضف التحميل إلى ملف /etc/fstab :
echo "/dev/sdc1 /u02 ext4 defaults 0 0" >> /etc/fstab
هام
يقوم هذا الأمر بتحميل ملف /etc/fstab بدون UUID معين، والذي يمكن أن يمنع إعادة التشغيل الناجحة للقرص. قبل محاولة إعادة تشغيل القرص، قم بتحديث إدخال /etc/fstab لتضمين UUID لنقطة التحميل.
قم بتحديث ملف /etc/hosts بعنوان IP العام واسم مضيف العنوان. قم بتغيير الجزءين
<Public IP>
<VMname>
و ليعكسا القيم الفعلية:echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
أضف اسم مجال الجهاز الظاهري إلى ملف /etc/hostname . يفترض الأمر التالي إنشاء مجموعة الموارد وVM في منطقة eastus :
sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
افتح منافذ جدار الحماية.
نظرا إلى تمكين 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. إنشاء نموذج قاعدة البيانات كما يلي.
التبديل إلى لمستخدم oracle:
sudo su - oracle
بدء تشغيل وحدة استماع قاعدة البيانات:
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
إنشاء دليل بيانات لملفات بيانات Oracle:
mkdir /u02/oradata
تشغيل مساعد إنشاء قاعدة البيانات:
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.
تعيين متغيرات Oracle:
قبل الاتصال، تحتاج إلى تعيين متغير
ORACLE_SID
البيئة :export ORACLE_SID=oratest1
يجب عليك أيضا إضافة
ORACLE_SID
المتغير إلىoracle
ملف المستخدمين .bashrc لتسجيل الدخول في المستقبل باستخدام الأمر التالي:echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
أتمتة بدء تشغيل قاعدة البيانات وإيقاف تشغيلها
قاعدة بيانات Oracle بشكل افتراضي لا تلقائيا عند إعادة تشغيل VM. لإعداد قاعدة بيانات Oracle لبدء التشغيل تلقائيا، قم بتسجيل الدخول أولا كمستخدم أساسي. ثم قم بإنشاء وتحديث بعض ملفات النظام.
تسجيل الدخول كمستخدم الجذر:
sudo su -
تغيير علامة بدء التشغيل التلقائي من
N
إلىY
في ملف /etc/oratab:sed -i 's/:N/:Y/' /etc/oratab
أنشئ ملفا باسم /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
تغيير الأذونات على الملفات باستخدام
chmod
الأمر :chgrp dba /etc/init.d/dbora chmod 750 /etc/init.d/dbora
إنشاء ارتباطات رمزية لبدء التشغيل وإيقاف التشغيل:
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
لاختبار التغييرات الخاصة بك، أعد تشغيل الجهاز الظاهري:
reboot
تنظيف الموارد
بعد الانتهاء من استكشاف قاعدة بيانات Oracle الأولى على Azure ولم تعد هناك حاجة إلى الجهاز الظاهري، يمكنك استخدام الأمر az group delete لإزالة مجموعة الموارد والأجهزة الظاهرية وجميع الموارد ذات الصلة.
az group delete --name rg-oracle
الخطوات التالية
- حماية قاعدة البيانات الخاصة بك في Azure باستخدام استراتيجيات النسخ الاحتياطي ل Oracle
- استكشاف حلول Oracle على Azure
- تثبيت وتكوين Oracle Automated Storage Management