Azure VM での Oracle データベースの作成
適用対象: ✔️ Linux VM
この記事では、Azure CLI を使用して、Marketplace での Oracle のギャラリー イメージから Azure 仮想マシン (VM) をデプロイして Oracle Database 19c データベースを作成する方法について説明します。 サーバーをデプロイしたら、SSH 経由でサーバーを接続して Oracle データベースを構成します。
前提条件
-
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
Azure Cloud Shell または Azure CLI。
このクイックスタートの Azure CLI コマンドは、Azure Cloud Shell で対話形式で実行できます。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloudshell を開く] を選択します。 [コピー] を選択してコードをコピーし、Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。 Cloud Shell では、常に最新バージョンの Azure CLI が使用されます。
また、Azure CLI をローカルにインストールしてコマンドを実行することもできます。 この記事の手順では、Azure CLI バージョン 2.0.4 以降が必要です。 az version を実行して、インストールされているバージョンと依存ライブラリを確認し、az upgrade を実行してアップグレードします。 ローカル インストールを使用する場合は、az login コマンドを使用して Azure にサインインします。
リソース グループの作成
az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
次の例では、rg-oracle という名前のリソース グループを eastus の場所に作成します。
az group create --name rg-oracle --location eastus
注意
このクイックスタートでは、米国東部リージョンに Standard_DS2_v2 SKU VM を作成します。 リージョン別にサポートされている SKU の一覧を表示するには、az vm list-skus コマンドを使用します。
仮想マシンの作成
az vm create コマンドで、仮想マシン (VM) を作成します。
次の例では、vmoracle19c という名前の VM が作成されます。 既定のキーの場所にまだ 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
VM を作成すると、Azure CLI によって次の例のような情報が表示されます。 publicIpAddress
プロパティの値を書き留めます。 この IP アドレスは、VM へのアクセスに使用します。
{
"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 データ ファイル用のディスクを作成する
az vm disk attach コマンドを使用して、Oracle データ ファイル用の新しいディスクと高速リカバリ領域 (FRA) を作成してアタッチします。
次の例では、oradata01 という名前のディスクが作成されます。
az vm disk attach \
--name oradata01 --new \
--resource-group rg-oracle \
--size-gb 64 --sku StandardSSD_LRS \
--vm-name vmoracle19c
接続のポートを開く
このタスクでは、VM を保護する Azure ネットワーク セキュリティ グループ (NSG) を設定して、データベース リスナーが使用するいくつかの外部エンドポイントを構成する必要があります。
az network nsg create コマンドを使用して、VM 用の NSG を作成します。 このコマンドは、VM へのアクセスを制御するルール用の vmoracle19cNSG NSG を作成します。
az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
az network nsg rule create コマンドを使用して、NSG ルールを作成します。 このコマンドは、Oracle データベースへのリモート アクセス用にエンドポイントを開く allow-oracle NSG ルールを作成します。
az network nsg rule create \ --resource-group rg-oracle \ --nsg-name vmoracle19cNSG \ --name allow-oracle \ --protocol tcp \ --priority 1001 \ --destination-port-range 1521
Oracle へのリモート アクセス用にエンドポイントを開く 2 つめの NSG ルールを作成します。 このコマンドは、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 コマンドを使用して、VM のパブリック IP アドレスを取得します。
az network public-ip show \ --resource-group rg-oracle \ --name vmoracle19cPublicIP \ --query "ipAddress" \ --output tsv
VM 環境を準備する
VM との SSH セッションを作成します。
<publicIPAddress>
部分を VM のパブリック 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
重要
このコマンドは、特定の UUID を使用せずに /etc/fstab ファイルをマウントします。これは、ディスクの正常な再起動を妨げる可能性があります。 ディスクの再起動を試みる前に、/etc/fstab エントリを更新して、マウント ポイントの UUID を含めてください。
パブリック IP アドレスとアドレスのホスト名で /etc/hosts ファイルを更新します。
<Public IP>
と、2 つの<VMname>
部分を、実際の値に合わせて変更してください。echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
VM のドメイン名を /etc/hostname ファイルに追加します。 次のコマンドは、リソース グループと VM が eastus リージョンに作成されることを想定しています。
sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
ファイアウォールのポートを開く
Marketplace イメージでは SELinux が既定で有効になっているため、データベースのリッスン ポート 1521 宛てのトラフィックと Enterprise Manager Express のポート 5502 宛てのトラフィックに対してファイアウォールを開放する必要があります。 root ユーザーとして、次のコマンドを実行します。
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
Database Creation Assistant を実行します。
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
ユーザーの .bashrc ファイルにORACLE_SID
変数を追加する必要もあります。echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
データベースのスタートアップとシャットダウンの自動化
VM を再起動したとき、既定では、Oracle データベースは自動的には開始しません。 自動的に開始するように Oracle データベースを設定するには、まず root としてサインインします。 次に、いくつかのシステム ファイルを作成および更新します。
ルート ユーザーとしてサインオンします。
sudo su -
/etc/oratab ファイルの自動起動フラグを
N
からY
に変更します。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
変更をテストするには、VM を再起動します。
reboot
リソースをクリーンアップする
Azure での最初の Oracle データベースを調べ終わり、VM が必要なくなったら、az group delete コマンドを使用して、リソース グループ、VM、関連するすべてのリソースを削除できます。
az group delete --name rg-oracle
次のステップ
- Oracle のバックアップ戦略に関するページで、Azure 内のデータベースを保護する
- Azure での Oracle ソリューションを調べる
- Oracle Automated Storage Management (Oracle自動ストレージ管理) をインストールし、構成する