Вы можете отозвать эти привилегии из DP1, но затем разрешить им управлять объектами в DP2, как объясняет @Wernfried, непросто. Вы также можете использовать привилегии CREATE ANY
с триггером DDL, при котором ошибки для DDL запускаются со схемой DP1, но это даже сложнее, и привилегий ANY
действительно следует избегать для общего использования, поскольку они настолько мощные.
Вместо этого вы можете настроить прокси-аутентификацию:
alter user DP2 grant connect through DP1;
тогда вместо подключения DP1, как говорят:
sqlplus dp1/dp1passwd@db
затем можно подключить как:
sqlplus dp1[dp2]/dp1passwd@db
Им не нужно знать пароль учетной записи для DP2 - они по-прежнему проходят аутентификацию, используя свой собственный пароль учетной записи. Механизм сквозного прокси-сервера означает, что они теперь находятся в сеансе как DP2, для всех целей и задач. Любой DDL будет против схемы DP2, и контрольный журнал может показать, что действия были выполнены через прокси-сервер и кем был реальный пользователь (то есть DP1). У них будут роли и привилегии DP2, поэтому они смогут управлять объектами в этой схеме, даже если у них нет привилегий создания для их собственной учетной записи.
Они даже не смогут увидеть что-либо в своей собственной схеме DP1 (если они не предоставили привилегии DP2); но поскольку в этом сценарии им ничего не принадлежит, то это спорный вопрос.
Конечно, это не просто доступно в SQL * Plus, вы можете использовать его через OCI, JDBC и т. Д.
Подробнее .