Tworzenie bazy danych Oracle Database na maszynie wirtualnej platformy Azure

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

W tym artykule opisano sposób wdrażania maszyny wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure z obrazu galerii witryny Oracle Marketplace w celu utworzenia bazy danych Oracle Database 19c. Po wdrożeniu serwera połączysz serwer za pośrednictwem protokołu SSH, aby skonfigurować bazę danych Oracle.

Wymagania wstępne

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

  • Usługa Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure.

    Polecenia interfejsu wiersza polecenia platformy Azure można uruchomić w tym przewodniku Szybki start interaktywnie w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz program CloudShell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod i wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal. Usługa Cloud Shell zawsze używa najnowszej wersji interfejsu wiersza polecenia platformy Azure.

    Alternatywnie możesz zainstalować interfejs wiersza polecenia platformy Azure lokalnie , aby uruchomić polecenia. Kroki opisane w tym artykule wymagają interfejsu wiersza polecenia platformy Azure w wersji 2.0.4 lub nowszej. Uruchom polecenie az version , aby wyświetlić zainstalowaną wersję i biblioteki zależne, a następnie uruchom polecenie az upgrade , aby uaktualnić. Jeśli używasz instalacji lokalnej, zaloguj się do platformy Azure przy użyciu polecenia az login .

Utwórz grupę zasobów

Utwórz grupę zasobów za pomocą polecenia az group create. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.

Poniższy przykład tworzy grupę zasobów o nazwie rg-oracle w lokalizacji eastus .

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

Uwaga

Ten przewodnik Szybki start tworzy maszynę wirtualną Standard_DS2_v2 SKU w regionie Wschodnie stany USA. Aby wyświetlić listę obsługiwanych jednostek SKU według regionów, użyj polecenia az vm list-skus .

Tworzenie maszyny wirtualnej

Utwórz maszynę wirtualną za pomocą polecenia az vm create .

Poniższy przykład tworzy maszynę wirtualną o nazwie vmoracle19c. Tworzy również klucze SSH, jeśli jeszcze nie istnieją w domyślnej lokalizacji klucza. Aby użyć określonego zestawu kluczy, możesz użyć --ssh-key-value opcji z poleceniem .

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

Po utworzeniu maszyny wirtualnej interfejs wiersza polecenia platformy Azure wyświetli informacje podobne do poniższego przykładu. Zanotuj publicIpAddress wartość właściwości . Ten adres IP służy do uzyskiwania dostępu do maszyny wirtualnej.

{
  "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"
}

Tworzenie dysku dla plików danych Oracle

Utwórz i dołącz nowy dysk dla plików danych Oracle oraz szybki obszar odzyskiwania (FRA) za pomocą polecenia az vm disk attach .

Poniższy przykład tworzy dysk o nazwie oradata01.

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

Otwieranie portów na potrzeby łączności

W tym zadaniu należy skonfigurować niektóre zewnętrzne punkty końcowe dla odbiornika bazy danych do użycia przez skonfigurowanie sieciowej grupy zabezpieczeń platformy Azure, która chroni maszynę wirtualną.

  1. Utwórz sieciową grupę zabezpieczeń dla maszyny wirtualnej za pomocą polecenia az network nsg create . To polecenie tworzy sieciową grupę zabezpieczeń vmoracle19cNSG dla reguł w celu kontrolowania dostępu do maszyny wirtualnej:

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. Utwórz regułę sieciowej grupy zabezpieczeń za pomocą polecenia az network nsg rule create . To polecenie tworzy regułę sieciowej grupy zabezpieczeń allow-oracle , aby otworzyć punkt końcowy na potrzeby dostępu zdalnego do bazy danych 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. Utwórz drugą regułę sieciowej grupy zabezpieczeń, aby otworzyć punkt końcowy na potrzeby dostępu zdalnego do bazy danych Oracle. To polecenie tworzy regułę sieciowej grupy zabezpieczeń 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. W razie potrzeby użyj polecenia az network public-ip show , aby uzyskać publiczny adres IP maszyny wirtualnej:

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

Przygotowywanie środowiska maszyny wirtualnej

  1. Utwórz sesję SSH z maszyną wirtualną. Zastąp <publicIPAddress> część wartością publicznego adresu IP maszyny wirtualnej, taką jak 10.200.300.4:

    ssh azureuser@<publicIPAddress>
    
  2. Przejdź do użytkownika głównego:

    sudo su -
    
  3. Znajdź ostatnio utworzone urządzenie dyskowe, które chcesz sformatować do przechowywania plików danych Oracle:

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

    Dane wyjściowe są podobne do tego przykładu:

    brw-rw----. 1 root disk 8, 16 Dec  8 22:57 /dev/sdc
    
  4. Jako użytkownik główny użyj parted polecenia , aby sformatować urządzenie.

    1. Najpierw utwórz etykietę dysku:

      parted /dev/sdc mklabel gpt
      
    2. Następnie utwórz partycję podstawową, która obejmuje cały dysk:

      parted -a optimal /dev/sdc mkpart primary 0GB 64GB	
      
    3. Na koniec sprawdź szczegóły urządzenia, drukując jego metadane:

      parted /dev/sdc print
      

      Dane wyjściowe są podobne do tego przykładu:

      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. Utwórz system plików na partycji urządzenia:

    mkfs -t ext4 /dev/sdc1
    

    Dane wyjściowe są podobne do tego przykładu:

    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. Utwórz punkt instalacji:

    mkdir /u02
    
  7. Zainstaluj dysk:

    mount /dev/sdc1 /u02
    
  8. Zmień uprawnienia w punkcie instalacji:

    chmod 777 /u02
    
  9. Dodaj instalację do pliku /etc/fstab :

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

    Ważne

    To polecenie instaluje plik /etc/fstab bez określonego identyfikatora UUID, co może uniemożliwić pomyślne ponowne uruchomienie dysku. Przed podjęciem próby ponownego uruchomienia dysku zaktualizuj wpis /etc/fstab, aby uwzględnić identyfikator UUID punktu instalacji.

  10. Zaktualizuj plik /etc/hosts przy użyciu publicznego adresu IP i nazwy hosta adresu. Zmień dwie części i<VMname>, <Public IP> aby odzwierciedlały rzeczywiste wartości:

    echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
    
  11. Dodaj nazwę domeny maszyny wirtualnej do pliku /etc/hostname . Następujące polecenie zakłada, że grupa zasobów i maszyna wirtualna są tworzone w regionie eastus :

    sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
    
  12. Otwórz porty zapory.

    Ponieważ protokół SELinux jest domyślnie włączony na obrazie witryny Marketplace, musimy otworzyć zaporę dla ruchu dla portu nasłuchiwania bazy danych 1521 i portu Express programu Enterprise Manager 5502. Uruchom następujące polecenia jako użytkownik główny:

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

Tworzenie bazy danych

Oprogramowanie Oracle jest już zainstalowane na obrazie witryny Marketplace. Utwórz przykładową bazę danych w następujący sposób.

  1. Przejdź do użytkownika oracle :

    sudo su - oracle
    
  2. Uruchom odbiornik bazy danych:

    lsnrctl start
    

    Dane wyjściowe są podobne do poniższego przykładu:

    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. Utwórz katalog danych dla plików danych Oracle:

    mkdir /u02/oradata
    
  4. Uruchom Asystenta tworzenia bazy danych:

    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
    

    Utworzenie bazy danych trwa kilka minut.

    Dane wyjściowe są podobne do poniższego przykładu:

         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. Ustaw zmienne Oracle:

    Przed nawiązaniem połączenia należy ustawić zmienną środowiskową ORACLE_SID:

    export ORACLE_SID=oratest1
    

    Należy również dodać zmienną ORACLE_SID do oracle pliku bashrc użytkowników na potrzeby przyszłych logowania przy użyciu następującego polecenia:

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

Automatyzowanie uruchamiania i zamykania bazy danych

Baza danych Oracle domyślnie nie uruchamia się automatycznie po ponownym uruchomieniu maszyny wirtualnej. Aby skonfigurować bazę danych Oracle do automatycznego uruchamiania, najpierw zaloguj się jako główny. Następnie utwórz i zaktualizuj niektóre pliki systemowe.

  1. Zaloguj się jako użytkownik główny:

    sudo su -
    
  2. Zmień flagę automatycznego uruchamiania z N na Y w pliku /etc/oratab:

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. Utwórz plik o nazwie /etc/init.d/dbora i dodaj następujące polecenie powłoki bash do pliku:

    #!/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. Zmień uprawnienia do plików za chmod pomocą polecenia :

    chgrp dba /etc/init.d/dbora
    chmod 750 /etc/init.d/dbora
    
  5. Tworzenie linków symbolicznych na potrzeby uruchamiania i zamykania:

    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. Aby przetestować zmiany, uruchom ponownie maszynę wirtualną:

    reboot
    

Czyszczenie zasobów

Po zakończeniu eksplorowania pierwszej bazy danych Oracle na platformie Azure i maszynie wirtualnej nie jest już potrzebna, możesz użyć polecenia az group delete , aby usunąć grupę zasobów, maszynę wirtualną i wszystkie powiązane zasoby.

az group delete --name rg-oracle

Następne kroki