Azure VM에서 Oracle 데이터베이스 만들기
적용 대상: ✔️ Linux VM
이 가이드에서는 Oracle 19c 데이터베이스를 만들기 위해 Azure CLI를 사용하여 Oracle 마켓플레이스 갤러리 이미지에서 Azure 가상 머신을 배포하는 방법에 대해 자세히 설명합니다. 서버가 배포된 후 Oracle 데이터베이스를 구성하려면 SSH를 통해 연결합니다.
Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
CLI를 로컬로 설치하여 사용하도록 선택한 경우 이 빠른 시작에서 Azure CLI 버전 2.0.4 이상을 실행해야 합니다. az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
리소스 그룹 만들기
az group create 명령을 사용하여 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다.
다음 예에서는 eastus 위치에 rg-oracle이라는 리소스 그룹을 만듭니다.
az group create --name rg-oracle --location eastus
가상 머신 만들기
VM(가상 머신)을 만들려면 az vm create 명령을 사용합니다.
다음 예제는 vmoracle19c
라는 VM을 만듭니다. 또한 기본 키 위치에 SSH 키가 없는 경우 이 키를 만듭니다. 특정 키 집합을 사용하려면 --ssh-key-value
옵션을 사용합니다.
az vm create ^
--resource-group rg-oracle ^
--name vmoracle19c ^
--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
에 대한 값을 기록해 둡니다. 이 주소는 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 데이터 파일 및 FRA용 새 디스크 새 디스크 만들기 및 연결
az vm disk attach --name oradata01 --new --resource-group rg-oracle --size-gb 64 --sku StandardSSD_LRS --vm-name vmoracle19c
연결을 위한 포트 열기
이 작업에서는 VM을 보호하는 Azure Network Security 그룹을 설정하여 데이터베이스 수신기에서 사용할 일부 외부 엔드포인트를 구성해야 합니다.
Oracle 데이터베이스에 원격으로 액세스하는 데 사용하는 엔드포인트를 열려면 다음과 같이 네트워크 보안 그룹 규칙을 만듭니다.
az network nsg rule create ^ --resource-group rg-oracle ^ --nsg-name vmoracle19cNSG ^ --name allow-oracle ^ --protocol tcp ^ --priority 1001 ^ --destination-port-range 1521
Oracle에 원격으로 액세스하는 데 사용하는 엔드포인트를 열려면 다음과 같이 az network nsg rule create를 사용하여 네트워크 보안 그룹 규칙을 만듭니다.
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에 연결
VM으로 SSH 세션을 만들려면 다음 명령을 사용합니다. 해당 IP 주소를 VM의
publicIpAddress
값으로 바꿉니다.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 /dev/sdc mklabel gpt
그런 다음, 전체 디스크에 걸쳐 주 파티션을 만듭니다.
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
마지막으로 메타데이터를 인쇄하여 디바이스 세부 정보를 확인합니다.
parted /dev/sdc print
출력은 다음과 비슷한 모양입니다.
# 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
탑재 지점 만들기
mkdir /u02
디스크 탑재
mount /dev/sdc1 /u02
탑재 지점에 대한 권한 변경
chmod 777 /u02
/etc/fstab 파일에 탑재를 추가합니다.
echo "/dev/sdc1 /u02 ext4 defaults 0 0" >> /etc/fstab
공용 IP 및 호스트 이름으로 /etc/hosts 파일을 업데이트합니다.
실제 값을 반영하도록 공용 IP 및 VMname을 변경합니다.
echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
호스트 이름 파일 업데이트
다음 명령을 사용하여 /etc/hostname 파일에 VM의 도메인 이름을 추가합니다. 여기서는 eastus 지역에 리소스 그룹 및 VM을 만들었다고 가정합니다.
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
사용자.bashrc
파일에 ORACLE_SID 변수를 추가해야 합니다.echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
데이터베이스 시작 및 종료 자동화
Oracle 데이터베이스는 기본적으로 VM을 다시 시작할 때 자동으로 시작되지 않습니다. Oracle 데이터베이스가 자동으로 시작되도록 설정하려면 먼저 루트로 로그인합니다. 그런 다음 일부 시스템 파일을 만들고 업데이트합니다.
루트로 로그인합니다.
sudo su -
다음 명령을 실행하여
/etc/oratab
파일에서 자동화된 시작 플래그를N
에서Y
로 변경합니다.sed -i 's/:N/:Y/' /etc/oratab
/etc/init.d/dbora
라는 파일을 만들고 다음 콘텐츠를 붙여 넣습니다.#!/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 myResourceGroup
다음 단계
Oracle 백업 전략을 사용하여 Azure에서 데이터베이스를 보호하는 방법 이해
Azure의 다른 Oracle 솔루션에 대해 알아봅니다.
Oracle Automated Storage Management 설치 및 구성 자습서를 사용해 봅니다.