В примере ниже, если пользователь без роли DBA и не SUPERMAG или SYS (чтобы в алерт не сыпалось), ему блокируют вход при наличии уже 8 сессий от этого пользователя в базе. Про профили прошу не намекать. Мне это не подходило по ряду причин. Кому-то, возможно, выгоднее их использовать.
Код:
CREATE OR REPLACE TRIGGER BLOCK_DDOS
AFTER LOGON ON DATABASE
DECLARE
CNT NUMBER(10);
BEGIN
SELECT COUNT(username) INTO cnt FROM sys.v$session WHERE username=SYS_CONTEXT('userenv','session_user') AND username !='SUPERMAG' AND username!='SYS';
IF (cnt > 8) THEN
RAISE_APPLICATION_ERROR(-20000, 'Nigga died!');
END IF;
END;