Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ виртуальные машины Linux
Azure CLI можно использовать для создания ресурсов Azure и управления ими из командной строки или скриптов. В этой статье описывается, как использовать Azure CLI для развертывания базы данных Oracle Database 19c выпуска 3 из образа Azure Marketplace. В этой статье показано, как установить и настроить Data Guard на виртуальной машине Azure. Чтобы защитить среду, порты не будут общедоступными, а экземпляр Бастиона Azure предоставляет доступ к виртуальным машинам Oracle.
Перед началом работы убедитесь, что azure CLI установлен. Дополнительные сведения см. в руководстве по установке Azure CLI.
Подготовка среды
Предположения
Чтобы установить Oracle Data Guard, необходимо создать две виртуальные машины Azure в одной группе доступности:
- Основная виртуальная машина (
OracleVM1) имеет запущенный экземпляр Oracle. - Резервная виртуальная машина (
OracleVM2) имеет только программное обеспечение Oracle.
Образ, используемый для создания виртуальных машин, находится в Azure Marketplace: Oracle:oracle-database-19-3:oracle-database-19-0904:latest.
Замечание
Помните о версиях, которые достигли конца жизни (EOL) и больше не поддерживаются Red Hat. Загруженные изображения, которые находятся на конечной стадии жизненного цикла или за её пределами, будут поддерживаться на основе разумных коммерческих усилий. Дополнительные сведения см. на веб-странице Red Hat для жизненного цикла продуктов.
Вход в Azure
Войдите в подписку Azure с помощью команды az login и следуйте инструкциям на экране.
az login
Настройка переменных среды
LOCATION Настройте переменную для среды:
LOCATION=eastus
RESOURCE_GROUP="Oracle-Lab"
VM_USERNAME="azureuser"
VM_PASSWORD="OracleLab123"
VNET_NAME="${RESOURCE_GROUP}VNet"
Включение расширения Бастиона Azure
Включите расширение Бастиона Azure в Azure CLI:
az extension add \
--name bastion
Создайте группу ресурсов
Создайте группу ресурсов с помощью команды az group create . Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Создание виртуальной сети с двумя подсетями
Создайте виртуальную сеть, в которой подключаются все вычислительные службы. Одна подсеть содержит Бастион Azure, службу Azure, которая помогает защитить базы данных от общедоступного доступа. Вторая подсеть размещает две виртуальные машины базы данных Oracle.
Кроме того, создайте группу сетевой безопасности, на которую будут ссылаться все службы, чтобы определить, какие порты открыты для публичного доступа. Будет открыт доступ только к порту 443. Служба Бастиона Azure автоматически открывает этот порт при создании этого экземпляра службы.
az network vnet create \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--name $VNET_NAME \
--address-prefix "10.0.0.0/16"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--name AzureBastionSubnet \
--vnet-name $VNET_NAME \
--address-prefixes 10.0.0.0/24
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--name OracleSubnet \
--vnet-name $VNET_NAME \
--address-prefixes 10.0.1.0/24
az network nsg create \
--name OracleVM-NSG \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
Создайте группу доступности
Создавать группу доступности необязательно, но мы рекомендуем это сделать. Дополнительные сведения см. в рекомендациях по наборам доступности Azure.
az vm availability-set create \
--resource-group $RESOURCE_GROUP \
--name OracleVMAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 2
Создание двух виртуальных машин
Создайте две виртуальные машины с помощью команды az vm create . В следующем примере создаются виртуальные машины с именем OracleVM1 и OracleVM2.
Создайте OracleVM1 (основное)
az vm create \
--resource-group $RESOURCE_GROUP \
--name OracleVM1 \
--availability-set OracleVMAvailabilitySet \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
--size Standard_DS1_v2 \
--authentication-type password \
--admin-username $VM_USERNAME \
--admin-password $VM_PASSWORD \
--vnet-name $VNET_NAME \
--subnet OracleSubnet \
--nsg OracleVM-NSG \
--os-disk-size-gb 32
Создание OracleVM2 (в режиме ожидания):
az vm create \
--resource-group $RESOURCE_GROUP \
--name OracleVM2 \
--availability-set OracleVMAvailabilitySet \
--image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
--size Standard_DS1_v2 \
--authentication-type password \
--admin-username $VM_USERNAME \
--admin-password $VM_PASSWORD \
--vnet-name $VNET_NAME \
--subnet OracleSubnet \
--nsg OracleVM-NSG \
--os-disk-size-gb 32
Создайте экземпляр службы Azure Bastion
Бастион Azure предоставляет безопасный туннель для всех служб, размещенных в виртуальной сети. Он служит в качестве поля перехода для устранения прямого доступа к базам данных Oracle.
Создайте общедоступный IP-адрес для доступа к службе Бастиона Azure:
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name OracleLabBastionPublicIP \
--sku Standard
Создайте экземпляр службы Бастиона Azure:
az network bastion create \
--location $LOCATION \
--name OracleLabBastion \
--public-ip-address OracleLabBastionPublicIP \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--sku basic
Подключитесь к виртуальной машине
Теперь вы можете получить доступ OracleVM1 с помощью службы Бастиона Azure на портале Azure.
В поле поиска в верхней части окна введите OracleVM1. В списке результатов выберите OracleVM1 , чтобы открыть виртуальную машину.
В верхней части области выберите Подключить>Бастион.
Введите имя пользователя и пароль, а затем нажмите кнопку "Подключить ".
Откроется новая вкладка с безопасным подключением к виртуальной машине, где программное обеспечение Oracle уже установлено из образа Azure Marketplace.
Настройка OracleVM1 (основной)
Отключите брандмауэр:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
oracle Задайте пароль пользователя:
sudo passwd oracle
azureuser Введите пароль: OracleLab123
Измените пароль пользователя oracle на OracleLab123. (Введите его еще раз, чтобы проверить.)
Создание базы данных в OracleVM1 (основной)
Программное обеспечение Oracle уже установлено на образе Azure Marketplace, поэтому следующий шаг — установить базу данных.
Переключитесь на суперпользователя Oracle:
sudo su - oracle
Создайте базу данных:
dbca -silent \
-createDatabase \
-datafileDestination /u01/app/oracle/cdb1 \
-templateName General_Purpose.dbc \
-gdbname cdb1 \
-sid cdb1 \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword OracleLab123 \
-systemPassword OracleLab123 \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName pdb1 \
-pdbAdminPassword OracleLab123 \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType FS
Выходные данные должны выглядеть примерно так:
Copying database files
1% complete
2% complete
8% complete
13% complete
19% complete
27% complete
Creating and starting Oracle instance
29% complete
32% complete
33% complete
34% complete
38% complete
42% complete
43% complete
45% complete
Completing Database Creation
48% complete
51% complete
53% complete
62% complete
70% complete
72% complete
Creating Pluggable Databases
78% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for further details.
Задайте переменные ORACLE_SID и ORACLE_HOME.
$ ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export ORACLE_HOME
$ ORACLE_SID=cdb1; export ORACLE_SID
При необходимости можно добавить ORACLE_HOME и ORACLE_SID в файл /home/oracle/.bashrc , чтобы эти параметры сохранялись для будущих имен входа:
# add oracle home
export ORACLE_HOME= /u01/app/oracle/product/19.0.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Настройка Data Guard
Включение режима архивного журнала в myVM1 (основной)
Включите режим журнала:
sqlplus / as sysdba
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
Включите принудительное ведение журнала и убедитесь, что присутствует хотя бы один файл журнала:
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SWITCH LOGFILE;
Создайте журналы повторного входа для резервного режима, задав тот же размер и количество, что и журналы повторного входа основной базы данных.
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/cdb1/standby_redo01.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/cdb1/standby_redo02.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/cdb1/standby_redo03.log') SIZE 200M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/cdb1/standby_redo04.log') SIZE 200M;
Включите Flashback (что значительно облегчает восстановление) и установите параметр STANDBY_FILE_MANAGEMENT в AUTO, а затем закройте SQL*Plus.
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=50G scope=both sid='*';
SQL> ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/cdb1' scope=both sid='*';
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> EXIT;
Настройка службы в OracleVM1 (основной)
Измените или создайте файл tnsnames.ora , который находится в папке $ORACLE_HOME/network/admin .
Добавьте следующие записи:
cdb1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
cdb1_stby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
Измените или создайте файл listener.ora , который находится в папке $ORACLE_HOME/network/admin .
Добавьте следующие записи:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = cdb1_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = cdb1)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
Включение брокера Data Guard:
sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> CREATE pfile FROM spfile;
SQL> EXIT;
Скопируйте файл параметров на резервный сервер:
scp -p $ORACLE_HOME/dbs/initcdb1.ora oracle@OracleVM2:$ORACLE_HOME/dbs/
Запустите прослушиватель:
lsnrctl stop
lsnrctl start
Настройка службы в OracleVM2 (резервная версия)
Вернитесь на портал Azure. Найдите OracleVM2 и выберите ресурс в списке результатов.
В верхней части области выберите "Подключить">Бастион.
Введите имя пользователя и пароль, а затем нажмите кнопку "Подключить ".
Отключение брандмауэра в OracleVM2 (резервный)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Настройка среды для OracleVM1
oracle Задайте пароль пользователя:
sudo passwd oracle
azureuser Введите пароль: OracleLab123
Измените пароль пользователя oracle на OracleLab123. (Введите его еще раз, чтобы проверить.)
Перейдите на oracle администратора:
$ sudo su – oracle
Установите переменные ORACLE_SID и ORACLE_HOME:
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=cdb1; export ORACLE_SID
При необходимости можно добавить ORACLE_HOME и ORACLE_SID в файл /home/oracle/.bashrc , чтобы эти параметры сохранялись для будущих имен входа:
# add oracle home
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
# add oracle sid
export ORACLE_SID=cdb1
Измените или создайте файл tnsnames.ora , который находится в папке $ORACLE_HOME/network/admin .
Добавьте следующие записи:
cdb1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
cdb1_stby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = cdb1)
)
)
Измените или создайте файл listener.ora , который находится в папке $ORACLE_HOME/network/admin .
Добавьте следующие записи:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleVM2)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = cdb1_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = cdb1)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
Запустите прослушиватель:
lsnrctl stop
lsnrctl start
Восстановление базы данных в OracleVM2 (резервная версия)
Создайте файл параметров /tmp/initcdb1_stby.ora со следующим содержимым:
*.db_name='cdb1'
Создание папок:
$ mkdir -p /u01/app/oracle/cdb1
$ mkdir -p /u01/app/oracle/oradata/cdb1/pdbseed
$ mkdir -p /u01/app/oracle/oradata/cdb1/pdb1
$ mkdir -p /u01/app/oracle/fast_recovery_area/cdb1
$ mkdir -p /u01/app/oracle/admin/cdb1/adump
Создайте файл пароля:
$ orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwcdb1 password=OracleLab123 entries=10 force=y
Запустите базу данных на OracleVM2.
export ORACLE_SID=cdb1
sqlplus / as sysdba
SQL> CREATE spfile from pfile;
SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
SQL> EXIT;
Восстановите базу данных с помощью средства Oracle Recovery Manager (RMAN):
$ rman TARGET sys/OracleLab123@cdb1 AUXILIARY sys/OracleLab123@cdb1_stby
Выполните следующие команды в RMAN:
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET db_unique_name='CDB1_STBY' COMMENT 'Is standby'
NOFILENAMECHECK;
Сообщения, аналогичные следующим, отображаются при завершении команд:
media recovery complete, elapsed time: 00:00:00
Finished recover at 29-JUN-22
Finished Duplicate Db at 29-JUN-22
Выход из RMAN:
RMAN> EXIT;
Включение брокера Data Guard:
sqlplus / as sysdba
SQL> ALTER SYSTEM SET dg_broker_start=true;
SQL> EXIT;
Настройка брокера Data Guard в OracleVM1 (основной)
Запустите Data Guard Manager и войдите с помощью SYS и пароля. (Не используйте проверку подлинности ОС.)
$ dgmgrl sys/OracleLab123@cdb1
DGMGRL for Linux: Version 19.0.0.0 - 64bit Production
Copyright (c) 2000, 2013, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS cdb1 CONNECT IDENTIFIER IS cdb1;
Configuration "my_dg_config" created with primary database "cdb1"
DGMGRL> ADD DATABASE cdb1_stby AS CONNECT IDENTIFIER IS cdb1_stby MAINTAINED AS PHYSICAL;
Database "cdb1_stby" added
DGMGRL> ENABLE CONFIGURATION;
Enabled.
Просмотрите конфигурацию:
DGMGRL> SHOW CONFIGURATION;
Configuration - my_dg_config
Protection Mode: MaxPerformance
Members:
cdb1 - Primary database
cdb1_stby - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS (status updated 26 seconds ago)
Вы завершили настройку Oracle Data Guard. В следующем разделе показано, как проверить подключение и переключиться.
Подключение базы данных с клиентского компьютера
Обновите файл tnsnames.ora на клиентском компьютере. Этот файл обычно находится в $ORACLE_HOME/network/admin.
cdb1=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=OracleVM1)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=cdb1)
)
)
cdb1_stby=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=OracleVM2)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=cdb1_stby)
)
)
Запустите SQL*Plus:
$ sqlplus sys/OraPasswd1@cdb1
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
Проверка конфигурации Data Guard
** Переключите базу данных на OracleVM1 (основной)
Переключение с первичного на резервный (cdb1 в cdb1_stby):
$ dgmgrl sys/OracleLab123@cdb1
DGMGRL for Linux: Version 19.0.0.0 - 64bit Production
Copyright (c) 2000, 2013, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> SWITCHOVER TO cdb1_stby;
Performing switchover NOW, please wait...
Operation requires a connection to instance "cdb1" on database "cdb1_stby"
Connecting to instance "cdb1"...
Connected as SYSDBA.
New primary database "cdb1_stby" is opening...
Operation requires start up of instance "cdb1" on database "cdb1"
Starting instance "cdb1"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "cdb1_stby"
DGMGRL>
Теперь вы можете подключиться к резервной базе данных. Запустите SQL*Plus:
$ sqlplus sys/OracleLab123@cdb1_stby
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
Переключение базы данных на OracleVM2 (резервная версия)
Чтобы перейти, выполните следующий код на OracleVM2:
$ dgmgrl sys/OracleLab123@cdb1_stby
DGMGRL for Linux: Version 190.0.0.0 - 64bit Production
Copyright (c) 2000, 2013, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.
DGMGRL> SWITCHOVER TO cdb1;
Performing switchover NOW, please wait...
Operation requires a connection to instance "cdb1" on database "cdb1"
Connecting to instance "cdb1"...
Connected as SYSDBA.
New primary database "cdb1" is opening...
Operation requires start up of instance "cdb1" on database "cdb1_stby"
Starting instance "cdb1"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "cdb1"
Теперь вы снова сможете подключиться к основной базе данных. Запустите SQL*Plus:
$ sqlplus sys/OracleLab123@cdb1
SQL*Plus: Release 19.0.0.0 Production on Wed May 10 14:18:31 2022
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
Вы завершили установку и настройку Data Guard в Oracle Linux.
Удаление виртуальной машины
Если виртуальные машины больше не нужны, можно использовать следующую команду, чтобы удалить группу ресурсов, виртуальные машины и все связанные ресурсы:
az group delete --name $RESOURCE_GROUP