Создание базы данных Oracle на виртуальной машине Azure

Область применения: ✔️ виртуальные машины Linux

В этой статье описывается, как использовать Azure CLI для развертывания виртуальной машины Azure из образа коллекции Oracle Marketplace для создания базы данных Oracle Database 19c. После развертывания сервера подключите сервер через SSH для настройки базы данных Oracle.

Необходимые компоненты

Создать группу ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.

В приведенном ниже примере создается группа ресурсов с именем rg-oracle в расположении eastus.

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

Примечание.

В этом кратком руководстве создается виртуальная машина SKU Standard_DS2_v2 в регионе "Восточная часть США". Чтобы просмотреть список поддерживаемых номеров SKU по регионам, используйте команду az vm list-skus .

Создать виртуальную машину

Создайте виртуальную машину с помощью команды 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 disk attach .

В следующем примере создается диск с именем oradata01.

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

Открытие портов для подключения

В этой задаче необходимо настроить некоторые внешние конечные точки для прослушивателя базы данных, чтобы использовать, настроив группу безопасности сети Azure (NSG), которая защищает виртуальную машину.

  1. Создайте группу безопасности сети для виртуальной машины с помощью команды az network nsg create . Эта команда создает NSG vmoracle19cNSG для управления доступом к виртуальной машине:

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. Создайте правило NSG с помощью команды az network nsg rule create . Эта команда создает правило NSG allow-oracle , чтобы открыть конечную точку для удаленного доступа к базе данных 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. Эта команда создает правило NSG allow-oracle-EM :

    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. Переключитесь на роль пользователя root (привилегированного):

    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 . Следующая команда предполагает, что группа ресурсов и виртуальная машина создаются в регионе 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 не запускается автоматически при перезапуске виртуальной машины. Чтобы база данных Oracle запускалась автоматически, войдите с правами привилегированного пользователя. Затем создайте и обновите некоторые системные файлы.

  1. Войдите в качестве корневого пользователя:

    sudo su -
    
  2. Измените флаг автоматического запуска на NY файл /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

Следующие шаги