Обслуживание Oracle для региональной энергосбытовой компании: аудит, резервные копии с проверкой восстановления, защита данных и перенос старого архива с Oracle 9i на Oracle 10g, где работает биллинг частных и корпоративных абонентов. Базу ведёт как Oracle DBA Евгений Росляков. Серверами и базами данных он занимается с 2016 года, живёт в Москве, а этот проект вёл удалённо. Он самозанятый, работает по договору, для юрлиц оформляет закрывающие документы.
Биллинг компании крутился на собственной установке Oracle 10g. Архив прошлых лет остался на Oracle 9i, на отдельном старом сервере. Лицензии бессрочные, куплены давно. Поддержки производителя нет, патчей тоже, и ждать их не от кого.
Штатный администратор уволился. Резервные копии по привычке делались, но никто не знал, открываются ли они. У части учётных записей остались пароли по умолчанию, а в базе лежат персональные данные абонентов.
Версии настолько старые, что любое изменение сначала проверяется на копии, а не на рабочей системе. По этому правилу я работал с первого дня.
Начал с аудита. Выписал, какие экземпляры и схемы есть, кто к ним подключается, где лежат файлы данных, что и когда копировалось. Получился один документ, которого у компании раньше не было.
Резервное копирование перевёл на RMAN и включил архивирование журналов: теперь базу можно вернуть на любой момент, а не только на ночь последней копии. Раз в неделю копия разворачивается на тестовом сервере, и я смотрю, что база открылась и данные на месте. Первое же такое восстановление показало, что в старых копиях не хватало одного файла данных.
Для ежедневной работы настроил наблюдение: свободное место в табличных пространствах, число сессий, ошибки в журнале. Собрал статистику оптимизатора и разобрал самые тяжёлые запросы биллинга. В дни расчётов базу держали именно они.
Архив с Oracle 9i перенёс в отдельную схему на Oracle 10g: выгрузка утилитой экспорта, загрузка импортом. Сверил кодировки и число строк в каждой таблице, потом показал бухгалтерам, что их старые отчёты открываются. Старый сервер выключили.
Дальше Oracle Database Security. Заблокировал стандартные учётные записи, у SYS и SYSTEM сменил пароли, ввёл профили паролей со сроком действия и лимитом неверных попыток. Роли раздал по принципу минимальных прав: аналитику запись не нужна. Включил аудит входов и действий с таблицами, где лежат персональные данные. К listener разрешил подключаться только из сети серверов приложений.
Администрирование баз данных в целом описал в регламенте для IT-службы: что проверять каждый день, как восстанавливаться, как выдавать и забирать доступы.
Биллинг работает на той же базе, но теперь за ней есть присмотр. Копии проверяются по расписанию, и вопрос «откроется ли копия, когда она понадобится» снят. Место на дисках и ошибки видны заранее, а не в день, когда расчёт встал.
Сервер с Oracle 9i выключен. Старые периоды лежат рядом с рабочими данными, бухгалтерия берёт их теми же инструментами, что и раньше.
Стандартных паролей не осталось. Кто и когда заходил в таблицы с персональными данными, видно в журнале аудита. Сотрудник IT-службы, который теперь ведёт базу каждый день, опирается на регламент и не гадает, что делать.
Ограничение остаётся честное. Oracle 10g и 9i давно сняты с поддержки, закрытые в новых версиях уязвимости здесь не исправить. Поэтому безопасность держится на изоляции сети, правах и аудите, и это временная мера, а не решение. Я подготовил план перехода на поддерживаемую версию: порядок шагов, что проверять на копии, где придётся дорабатывать биллинг. Сроки решает компания.
Пока же нужно, чтобы базу никто не трогал без регламента, а копии оставались проверенными.
Если у вас тоже крутится Oracle без поддержки и без своего администратора, напишите мне здесь, на freelance.ru. Хватит трёх вещей: версии, примерного размера базы и даты, когда копии последний раз реально восстанавливали. С этого начну аудит.