до тех пор, пока вы явно не предоставите разрешение, у пользователя его не будет. Просто воспользуемся небольшим экскурсом:
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;
или DBA предоставляет ему глобальные разрешения:
GRANT SELECT ANY TABLE TO dummy;
так что вам придется проверить, какие разрешения пользователь имеет. Поскольку есть много возможных разрешений, мой ответ может стать слишком длинным, но особенно следите за разрешениями, включая ANY
ключевое слово (как в моем последнем примере). Также проверьте возможные роли предоставленные пользователю, который может включать такие разрешения. Будучи зарегистрированным как sysdba, вы можете проверить их, например, с помощью следующего запроса:
SELECT granted_role
FROM dba_role_privs
WHERE grantee='DUMMY';
(обратите внимание на имя пользователя в верхнем регистре здесь-так Oracle хранит их внутри, и это is регистр). Для первых упомянутых (прямых) привилегий это будет:
SELECT privilege
FROM dba_sys_privs
WHERE grantee='DUMMY';
как только вы выяснили привилегии / роли, предоставленные этому специальному пользователю, он должен не есть, можно взять их подальше от него, например:
REVOKE SELECT ANY TABLE FROM dummy;