Работали ли вы с Oracle Database в контексте DevOps?

«Работали ли вы с Oracle Database в контексте DevOps?» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в рамках DevOps-практик я работал с Oracle Database, фокусируясь на автоматизации, мониторинге и обеспечении отказоустойчивости.

Ключевые задачи и инструменты:

  • Автоматизация развертывания и управления: Использовал Ansible для автоматической установки, настройки и применения патчей к инстансам Oracle. Писал плейбуки для конфигурации параметров инициализации (init.ora, spfile).
  • Резервное копирование и восстановление (RMAN): Интегрировал RMAN в CI/CD-пайплайны для создания консистентных бэкапов перед деплоем миграций. Настраивал политики хранения и автоматическое копирование в объектные хранилища (например, AWS S3).
  • Мониторинг и производительность: Настраивал экспорт метрик из AWR/ASH-отчетов в Prometheus через специальные экспортеры. Использовал Grafana для дашбордов, отслеживающих wait events, latch contention, buffer cache hit ratio.
  • Высокая доступность: Работал с Oracle Data Guard для настройки физических и логических standby-реплик. Автоматизировал переключение (failover) с помощью скриптов, интегрированных в системы мониторинга (например, Zabbix).
  • Инфраструктура как код (IaC): Разворачивал инстансы Oracle в облаке (OCI, AWS RDS for Oracle) с помощью Terraform, описывая VCN/Subnets, Security Lists и настройки самой БД.

Пример фрагмента Ansible-плейбука для базовой настройки:

- name: Configure Oracle Listener
  hosts: oracle_servers
  tasks:
    - name: Copy listener.ora template
      template:
        src: templates/listener.ora.j2
        dest: /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
    - name: Reload listener
      shell: lsnrctl reload
      become_user: oracle

Основной фокус в DevOps — минимизация ручных операций и обеспечение воспроизводимости конфигурации БД.