Пока вы явно не предоставите разрешение, у пользователя его не будет. Просто давайте использовать небольшой экскурс:
CREATE USER dummy IDENTIFIED BY password;
Теперь этот пользователь существует, но не может даже войти в базу данных. У него еще нет разрешений. Только после
GRANT CREATE SESSION TO dummy;
этот пользователь может войти в систему - но не более. Чтобы иметь возможность делать что-то в своей собственной схеме, обычно предоставляется
GRANT CREATE TABLE, CREATE VIEW, ALTER TABLE, DROP TABLE TO dummy;
Теперь он может делать вещи - но только в своей собственной схеме. Он также может вставлять, обновлять, удалять - но все еще ограничен его собственными объектами. Чтобы подделать (или даже просто увидеть) данные других пользователей, другой пользователь должен явно предоставить это:
GRANT SELECT ON some_table TO dummy;
или администратор БД предоставляет ему глобальные разрешения:
GRANT SELECT ANY TABLE TO dummy;
Так что вам придется проверить, какие разрешения имеет пользователь. Поскольку существует много возможных разрешений, мой ответ может быть слишком длинным, но особенно следите за разрешениями, включая ANY
ключевое слово (как в моем последнем примере). Также проверьте возможные роли, предоставленные этому пользователю, которые могут включать такие разрешения. Зайдя в систему как sysdba, вы можете проверить их, например, с помощью следующего запроса:
SELECT granted_role
FROM dba_role_privs
WHERE grantee='DUMMY';
(обратите внимание на имя пользователя ВЕРХНИЙ здесь - это, как Oracle хранит их внутри, и он чувствителен к регистру). Для первых упомянутых (прямых) привилегий это будет:
SELECT privilege
FROM dba_sys_privs
WHERE grantee='DUMMY';
Как только вы выяснили привилегии / роли, предоставленные этому особому пользователю, которого он не должен иметь, вы можете отобрать их у него, например:
REVOKE SELECT ANY TABLE FROM dummy;