Как к действию базы данных аудита без проблем производительности и масштабируемости?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

6
задан amitm 15 September 2008 в 22:15
поделиться

3 ответа

Я не уверен, является ли это достаточно сформировавшийся подход для производственной системы, но я имел довольно большой успех с контролирующим трафиком базы данных с помощью сниффера сетевого трафика.

Отправьте необработанные данные между приложением и базой данных прочь к другой машине и декодируйте и проанализируйте его там.

Я использовал PostgreSQL, и декодирование трафика и превращение его в поток операций базы данных, которые могли быть зарегистрированы, было относительно просто. Я предполагаю, что это работало бы над любой базой данных, где формат пакета документируется все же.

Основной момент был то, что это не создало дополнительной нагрузки для самой базы данных.

Кроме того, это был пассивный контроль, это записало все действие, но не могло заблокировать операции, так не мог бы быть вполне, что Вы ищете.

2
ответ дан 17 December 2019 в 07:10
поделиться

Нет необходимости «катить свое». Просто включите аудит:

  1. Установите параметр базы данных AUDIT_TRAIL = DB.
  2. Запустить экземпляр.
  3. Войдите в систему с помощью SQLPlus.
  4. Введите оператор
     audit all; 
    Это включает аудит для многих критических операций DDL, но DML и некоторые другие операторы DDL все еще не проверяются.
  5. Чтобы включить аудит для этих других действий, попробуйте следующие утверждения:
     audit alter table; - DDL audit 
    аудит выбрать таблицу, обновить таблицу, вставить таблицу, удалить таблицу; - DML audit 

Примечание. Вся деятельность «as sysdba» ВСЕГДА проверяется оператором. В Windows это означает журнал событий Windows. В UNIX это обычно $ ORACLE_HOME / rdbms / audit.

Ознакомьтесь с Главой аудита Oracle 10g R2 Справочника по базам данных SQL.

Журнал аудита базы данных можно просмотреть в представлении SYS.DBA_AUDIT_TRAIL.

Следует отметить, что внутренний аудит Oracle по определению будет высокопроизводительным. Он предназначен именно для этого, и очень трудно представить что-либо еще, способное конкурировать с ним по производительности. Кроме того, существует высокая степень «детального» контроля аудита Oracle. Вы можете получить его настолько точно, насколько захотите. Наконец, таблица SYS.AUD $ вместе с ее индексами может быть перемещена в отдельное табличное пространство, чтобы предотвратить заполнение табличного пространства SYSTEM.

С уважением, Opus

1
ответ дан 17 December 2019 в 07:10
поделиться

Если вы хотите записать копии измененных записей в целевой системе, вы можете сделать это с помощью Golden Gate Software и не повлиять на ресурсы на стороне источника. осушать. Также вам не нужно вносить какие-либо изменения в исходную базу данных для реализации этого решения.

Golden Gate очищает журналы повторов на предмет транзакций, относящихся к списку интересующих вас таблиц. Эти изменения записываются в 'Trail File' и могут быть применены к другой схеме в той же базе данных или отправлены в цель. system и применяется там (идеально для снижения нагрузки на исходную систему).

После того, как вы получите файл следа в целевую систему, есть некоторые настройки конфигурации, вы можете установить параметр для выполнения аудита и, если необходимо, вы можете вызвать 2 функции Golden Gate для получения информации о транзакции:

1) Установите INSERTALLRECORDS Параметр репликации для вставки новой записи в целевую таблицу для каждой операции изменения, выполненной в исходной таблице. Помните, что это может занять много места, но, если вам нужен всесторонний аудит, этого, вероятно, ожидают.

2) Если у вас еще нет CHANGED_BY_USERID и CHANGED_DATE, прикрепленных к вашим записям, вы можете использовать функции Golden Gate на целевой стороне, чтобы получить эту информацию для текущей транзакции.Ознакомьтесь со следующими функциями в Справочном руководстве GG: GGHEADER ("USERID") GGHEADER ("TIMESTAMP")

Так что это не бесплатно (требуется лицензирование через Oracle) и будет требуют некоторых усилий для раскрутки, но, вероятно, гораздо меньше усилий / затрат, чем реализация и поддержка собственного решения, развертывающего ваше собственное, и у вас есть дополнительное преимущество доставки данных в удаленную систему, так что вы можете гарантировать минимальное влияние на исходную базу данных .

1
ответ дан 17 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: