【问题标题】:ORA-01749: you may not GRANT/REVOKE privileges to/from yourselfORA-01749: 您不能授予/撤销您自己的权限
【发布时间】:2017-01-17 17:37:37
【问题描述】:

我正在从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 plus 中运行这个 sql 文件。那么有什么方法可以使用匿名块或任何其他方法,我可以连接到架构 RATOR_MONITORING_CONFIGURATION 架构并授予引用权限,然后再次连接到 rator_monitor 架构并运行 alter table 语句以及其他 sql 语句。

【问题讨论】:

    标签: sql oracle reference sql-grant


    【解决方案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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-07
      • 2015-01-13
      • 2011-02-24
      • 2013-12-07
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2016-01-19
      相关资源
      最近更新 更多