0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: субд, базы данных, oracle, dgmgrl, управление базами данных</p>
1
<p>Теги: субд, базы данных, oracle, dgmgrl, управление базами данных</p>
2
<p>Fast Start Failover - функционал автоматического запуска failover в случае необходимости. По умолчанию выключен. Процедура Failover инициируется сервисом DG observer (см. рисунок ниже). Собственно observer - это маленький OCI клиент, встроенный в DGMGRL CLI. Также observer автоматизирует превращение (reinstate) старого primary в standby.</p>
2
<p>Fast Start Failover - функционал автоматического запуска failover в случае необходимости. По умолчанию выключен. Процедура Failover инициируется сервисом DG observer (см. рисунок ниже). Собственно observer - это маленький OCI клиент, встроенный в DGMGRL CLI. Также observer автоматизирует превращение (reinstate) старого primary в standby.</p>
3
<p>Схема его работы весьма проста: если observer и standby одновременно потеряли связь с primary, но видят друг друга - инициируется failover. После появления в поле видимости старого primary observer автоматически пытается превратить его в standby.</p>
3
<p>Схема его работы весьма проста: если observer и standby одновременно потеряли связь с primary, но видят друг друга - инициируется failover. После появления в поле видимости старого primary observer автоматически пытается превратить его в standby.</p>
4
<p>Располагать этот сервис рекомендуется на третьей площадке (если считать, что площадка primary - первая, а standby - вторая), лучше всего на площадке, где расположены клиенты.</p>
4
<p>Располагать этот сервис рекомендуется на третьей площадке (если считать, что площадка primary - первая, а standby - вторая), лучше всего на площадке, где расположены клиенты.</p>
5
<p>Далее приведу настройки, которые нужно выполнить.</p>
5
<p>Далее приведу настройки, которые нужно выполнить.</p>
6
<h4>Сервера:</h4>
6
<h4>Сервера:</h4>
7
<p>- oracle-1 10.10.0.20 - PRIMARY; - oracle-2 10.10.0.21 - STANDBY; - oracle-observer 10.10.0.22 - установлен oracle-client.</p>
7
<p>- oracle-1 10.10.0.20 - PRIMARY; - oracle-2 10.10.0.21 - STANDBY; - oracle-observer 10.10.0.22 - установлен oracle-client.</p>
8
<h4>Настройка tnsnames.ora:</h4>
8
<h4>Настройка tnsnames.ora:</h4>
9
$ORACLE_HOME/network/admin/tnsnames.ora ORA_MASTER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORA_DGMGRL) ) ) ORA_STBY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORA_DGMGRL) ) )<p>Tns настраивается на всех 3-х серверах.</p>
9
$ORACLE_HOME/network/admin/tnsnames.ora ORA_MASTER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORA_DGMGRL) ) ) ORA_STBY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORA_DGMGRL) ) )<p>Tns настраивается на всех 3-х серверах.</p>
10
<h3>Создание standby</h3>
10
<h3>Создание standby</h3>
11
<p>Скопировать orapw:</p>
11
<p>Скопировать orapw:</p>
12
scp oracle-1://opt/app/oracle/12.2.0.1/database/dbs/orapwORA ./<p>Создать pfile и перенести его на standby на PRIMARY: ```oracle-sql CREATE PFILE='/tmp/init.ora' from spfile;</p>
12
scp oracle-1://opt/app/oracle/12.2.0.1/database/dbs/orapwORA ./<p>Создать pfile и перенести его на standby на PRIMARY: ```oracle-sql CREATE PFILE='/tmp/init.ora' from spfile;</p>
13
Прописать листенер для Data Guard: ```oracle-sql SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORA_DGMGRL) (ORACLE_HOME = /opt/app/oracle/12.2.0.1/database) (SID_NAME = ORA) ) )<p>Стартовать инстанс:</p>
13
Прописать листенер для Data Guard: ```oracle-sql SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORA_DGMGRL) (ORACLE_HOME = /opt/app/oracle/12.2.0.1/database) (SID_NAME = ORA) ) )<p>Стартовать инстанс:</p>
14
export ORACLE_SID=<SID> # sqlplus / as sysdba SQL> STARTUP pfile='/tmp/init.ora';<p>Запустить rman и законнектиться к обеим базам:</p>
14
export ORACLE_SID=<SID> # sqlplus / as sysdba SQL> STARTUP pfile='/tmp/init.ora';<p>Запустить rman и законнектиться к обеим базам:</p>
15
rman auxiliary sys/<PASS>@ORA_STBY target sys/<PASS>@ORA_MASTER rman> DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER;<p>Создаём конфигурацию Data Guard:</p>
15
rman auxiliary sys/<PASS>@ORA_STBY target sys/<PASS>@ORA_MASTER rman> DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER;<p>Создаём конфигурацию Data Guard:</p>
16
dgmgrl / DGMGRL> CREATE CONFIGURATION ORA_dg_fl AS PRIMARY DATABASE IS ORA1 CONNECT IDENTIFIER IS ORA_MASTER; DGMGRL> ADD DATABASE ORA2 AS CONNECT IDENTIFIER IS ORA_STBY; DGMGRL> SHOW CONFIGURATION; DGMGRL> EDIT CONFIGURATION SET PROPERTY faststartfailoverthreshold = 60 DGMGRL> EDIT CONFIGURATION SET PROPERTY operationtimeout = 60 DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability DGMGRL> EDIT DATABASE ORA1 SET PROPERTY standbyfilemanagement = AUTO DGMGRL> EDIT DATABASE ORA2 SET PROPERTY standbyfilemanagement = AUTO DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportdisconnectedthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportlagthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY applylagthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY FastStartFailoverTarget = ORA1 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY FastStartFailoverTarget = ORA2 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY faststartfailoverlaglimit = 60 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY logxptmode = SYNC DGMGRL> EDIT DATABASE ORA2 SET PROPERTY logxptmode = SYNC DGMGRL> ENABLE CONFIGURATION; DGMGRL> enable fast_start failover<p>Включаем обсервер: dgmgrl -logfile $HOME/observer.log sys/<PASS>@ORA_MASTER "start observer" & Проверяем, что конфигурация включилась и работает:</p>
16
dgmgrl / DGMGRL> CREATE CONFIGURATION ORA_dg_fl AS PRIMARY DATABASE IS ORA1 CONNECT IDENTIFIER IS ORA_MASTER; DGMGRL> ADD DATABASE ORA2 AS CONNECT IDENTIFIER IS ORA_STBY; DGMGRL> SHOW CONFIGURATION; DGMGRL> EDIT CONFIGURATION SET PROPERTY faststartfailoverthreshold = 60 DGMGRL> EDIT CONFIGURATION SET PROPERTY operationtimeout = 60 DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability DGMGRL> EDIT DATABASE ORA1 SET PROPERTY standbyfilemanagement = AUTO DGMGRL> EDIT DATABASE ORA2 SET PROPERTY standbyfilemanagement = AUTO DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportdisconnectedthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY transportlagthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY applylagthreshold = 60 DGMGRL> EDIT DATABASE ORA2 SET PROPERTY FastStartFailoverTarget = ORA1 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY FastStartFailoverTarget = ORA2 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY faststartfailoverlaglimit = 60 DGMGRL> EDIT DATABASE ORA1 SET PROPERTY logxptmode = SYNC DGMGRL> EDIT DATABASE ORA2 SET PROPERTY logxptmode = SYNC DGMGRL> ENABLE CONFIGURATION; DGMGRL> enable fast_start failover<p>Включаем обсервер: dgmgrl -logfile $HOME/observer.log sys/<PASS>@ORA_MASTER "start observer" & Проверяем, что конфигурация включилась и работает:</p>
17
DGMGRL> SHOW CONFIGURATION; DGMGRL> SHOW database ORA1; DGMGRL> SHOW database ORA2;<p><em>Вот и всё, пишите комментарии. Если интересуют подробности, держите ссылку по<a>теме</a>.</em></p>
17
DGMGRL> SHOW CONFIGURATION; DGMGRL> SHOW database ORA1; DGMGRL> SHOW database ORA2;<p><em>Вот и всё, пишите комментарии. Если интересуют подробности, держите ссылку по<a>теме</a>.</em></p>
18
18