SELECT password
FROM (
SELECT
DBMS_RANDOM.STRING('a', 1) ||
LISTAGG(ch, '') WITHIN GROUP (ORDER BY rnd) AS password
FROM (
SELECT DBMS_RANDOM.STRING('l', 1) ch, DBMS_RANDOM.VALUE rnd FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING('l', 1), DBMS_RANDOM.VALUE FROM dual
UNION ALL
SELECT TO_CHAR(TRUNC(DBMS_RANDOM.VALUE(0, 10))), DBMS_RANDOM.VALUE FROM dual
UNION ALL
SELECT TO_CHAR(TRUNC(DBMS_RANDOM.VALUE(0, 10))), DBMS_RANDOM.VALUE FROM dual
UNION ALL
SELECT SUBSTR('#$%&*+-_', TRUNC(DBMS_RANDOM.VALUE(1, 9)), 1), DBMS_RANDOM.VALUE FROM dual
UNION ALL
SELECT SUBSTR('#$%&*+-_', TRUNC(DBMS_RANDOM.VALUE(1, 9)), 1), DBMS_RANDOM.VALUE FROM dual
UNION ALL
SELECT DBMS_RANDOM.STRING('a', 9), DBMS_RANDOM.VALUE FROM dual
)
)
WHERE NOT REGEXP_LIKE(password, '(.)\1\1')
FETCH FIRST 1 ROW ONLY;