К основному контенту

Подключение к Oracle при работающем Data Guard

Метод организации подключения пользователей к БД работающей в режиме ACTIVE DATA GUARD.

Не актуален при использовании GRID Infrastructure.

1. Создание служб.

Для пользователей будут созданы службы(service), которые будут включаться в зависимости от режима работы базы.
  • prod - база находится в режиме PRIMARY, разрешены запись и чтение.
  • read - база в режиме PHYSICAL STANDBY, доступна только для чтения.
  • snap - режим SNAPSHOT STANDBY, разрешены запись и чтение, но после конвертации в PHYSICAL STANDBY все изменения будут отменены
execute dbms_service.create_service(
                   service_name=>'prod',
                   network_name=>'prod');

Остальные службы создаются аналогично.

2. Создание триггера для запуска служб при изменении состояния сервера.
Триггер будет срабатывать после запуска/перезапуска базы и в зависимости от роли
будет запускать необходимую службу.

CREATE or REPLACE TRIGGER client_connection AFTER startup ON DATABASE
DECLARE
    DB_ROLE V$DATABASE.DATABASE_ROLE%TYPE;
    OMODE V$DATABASE.OPEN_MODE%TYPE;
BEGIN
     SELECT DATABASE_ROLE INTO DB_ROLE FROM V$DATABASE;
     SELECT OPEN_MODE INTO OMODE FROM V$DATABASE;
     IF DB_ROLE = 'PRIMARY' THEN
       DBMS_SERVICE.START_SERVICE ('prod');
     DBMS_SERVICE.STOP_SERVICE ('read');
     ELSIF DB_ROLE = 'PHYSICAL STANDBY' AND OMODE = 'READ ONLY' THEN
         DBMS_SERVICE.START_SERVICE ('read');
     ELSIF DB_ROLE = ‘SNAPSHOT STANDBY’ AND OMODE = 'READ WRITE' THEN
     DBMS_SERVICE.START_SERVICE ('snap');
    DBMS_SERVICE.STOP_SERVICE ('read');
  END IF;
END;

3. Принудительный запуск службы.

EXECUTE DBMS_SERVICE.START_SERVICE(SERVICE_NAME=>'<SERVICE>');

4. Пример tnsnames файла.
В зависимости от указанной службы сессии будут направляться на сервер, на котором эта служба в данный момент работает.

prod =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = server2)(PORT = 1521))
      (load_balancing=no)
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
        (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
     )
    )
  )

Комментарии

Популярные сообщения из этого блога

Установка и настройка pgAgent(планировщика заданий PostgreSQL)

Установка pgAgent Последняя версия скрипта для установки агента  тут . Перенести инструкцию по агенту в отдельную тему. 1. Создать пользователя ОС, и сделать ему домашний каталог: useradd -s /bin/false -r -M pgagent mkdir /home/pgagent 2. Установить и настроить демон: yum install pgagent_94 При наличии ошибок вида (была на Oracle Linux 6.8) Error: Package: pgagent_94-3.4.0-1.rhel6.x86_64 (pgdg94)            Requires: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) Нужно установить EPEL systemctl enable pgagent_94 chown pgagent:pgagent /var/log/pgagent_94.log 3. Установить схему агента в базе: sudo -u postgres psql -f /usr/share/pgagent_94-3.4.0/pgagent.sql postgres 4. Создать файл паролей для подключения агента к базе. vi /home/pgagent/.pgpass localhost:5432:*:postgres:postgres chown pgagent.pgagent /home/pgagent -R chmod 600 /home/pagent/.pgpass 5. Запустить и проверить работу агента systemctl start pgagent...

Включение логирования для Haproxy

Изначально логирование в syslog в HaProxy отключено. Ниже пример настройки логирования для ОС Centos 7. Настройка: Добавить строку  log 127.0.0.1 local2 в секцию global файла /etc/haproxy/haproxy.cfg Раскомментировать $ModLoad imudp и $UDPServerRun 514 в файле  /etc/rsyslog.conf Создать файл  /etc/rsyslog.d/haproxy.conf со следующим содержимым:  local2.* /var/log/haproxy.log Перезапустить rsyslog и haproxy.

Установка PL/Java для PostgreSQL 9.4

Предварительные требования:  1. Компилятор C. Как правило имеется в виду gcc и g++ gcc  --version на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc) 2. JAVA. Убедиться, что  javac  -version работает  3. PostgreSQL установлен и  работает pg_config Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были. 4. компилятор Maven mvn --version Установка git clone https://github.com/tada/pljava.git или git clone ssh://git@github.com/tada/pljava.git Заходим в директорию pljava и выполняем mvn clean install В результате должны получить: [INFO] PostgreSQL PL/Java ................................ SUCCESS [INFO] PL/Java API ....................................... SUCCESS [INFO] PL/Java backend Java code...