ORA-01749: вы не можете ПРЕДОСТАВЛЯТЬ/ОТМЕНЯТЬ привилегии себе/от себя

Я запускаю приведенный ниже запрос из схемы RATOR_MONITORING, который предоставляет разрешение ссылки из таблицы RATOR_MONITORING_CONFIGURATION.SMSC_GATEWAY в схему RATOR_MONITORING.

GRANT REFERENCES ON "RATOR_MONITORING_CONFIGURATION"."SMSC_GATEWAY" TO "RATOR_MONITORING";  
ALTER TABLE "RATOR_MONITORING"."SMSC_GATEWAY_STATUS" ADD CONSTRAINT "SMSC_GATEWAY_STATUS_FK1" FOREIGN KEY ("SMSC_GATEWAY_ID")  
   REFERENCES "RATOR_MONITORING_CONFIGURATION"."SMSC_GATEWAY" ("ID") ON DELETE CASCADE ENABLE; 

Когда я запускаю приведенный ниже запрос, я получаю сообщение об ошибке:

SQL Error: ORA-01749: you may not GRANT/REVOKE privileges to/from yourself

У меня есть и другие операторы sql, которые я хочу запускать только из схемы RATOR_MONITOR. Этот оператор sql хранится в файле sql. И я запускаю этот файл sql в sql plus. Итак, есть ли способ использовать анонимный блок или любой другой подход, где я могу подключиться к схеме схемы RATOR_MONITORING_CONFIGURATION и предоставить разрешение на ссылку, а затем снова подключиться к схеме rator_monitor и запустить оператор изменения таблицы, а также другие операторы sql.


person Andrew    schedule 17.01.2017    source источник


Ответы (1)


Если у вас есть SQL-скрипт для этого, вы можете просто добавить оператор подключения для переключения пользователя, как показано ниже.

У меня есть файл test.sql, который содержит операторы предоставления и изменения. У меня есть два пользователя sh и hr.

conn sh/sh@orcl
grant REFERENCES on sh.customers to hr;
conn hr/hr@orcl
ALTER TABLE cust ADD CONSTRAINT fk1 FOREIGN KEY (ID) REFERENCES sh.customers(CUST_ID) ON DELETE CASCADE ENABLE; 

И я просто выполнил сценарий.

[oracle@ora12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Jan 17 15:19:40 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> @test.sql
Connected.

Grant succeeded.

Connected.

Table altered.

SQL> 
person atokpas    schedule 17.01.2017