首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle DB的另一个模式中重新编译同义词

在Oracle DB的另一个模式中重新编译同义词
EN

Stack Overflow用户
提问于 2020-09-24 15:55:08
回答 1查看 1.8K关注 0票数 1

我想在另一个模式中重新编译一个断断续续的同义词,但是得到一个关于特权的错误。

根据Oracle的说法:

要在另一个用户的模式中修改私有同义词,您必须拥有CREATE同义词并删除任何同义词系统特权。

好吧,看我的片段:

代码语言:javascript
复制
SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 24 18:47:29 2020

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


Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production

SQL> select user, sys_context( 'userenv', 'current_schema' ) cur_schema from dual;

USER
------------------------------
CUR_SCHEMA
--------------------------------------------------------------------------------
STAT_ADM
STAT_ADM


SQL> SELECT s.privilege
  2    FROM dba_sys_privs s
  3   WHERE s.grantee = USER
  4     AND s.privilege LIKE '%ANY%SYNONYM%';

PRIVILEGE
----------------------------------------
DROP ANY SYNONYM
CREATE ANY SYNONYM

SQL> alter synonym ADB011_T_PRO.SA_BRAND compile;
alter synonym ADB011_T_PRO.SA_BRAND compile
*
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> select dbms_metadata.get_ddl(object_type => 'SYNONYM'
  2                              ,NAME        => 'SA_BRAND'
  3                              ,SCHEMA      => 'ADB011_T_PRO') ddl_code from dual;

DDL_CODE
--------------------------------------------------------------------------------

  CREATE OR REPLACE SYNONYM "ADB011_T_PRO"."SA_BRAND" FOR "STAT_INT"."SA_BRAND"


SQL>

我真的没有得到许可吗?或者我应该如何正确地重新编译同义词?我也有CREATE ANY SYNONYM权限,所以我使用这个同义词的DDL语句来使它再次有效,但是我想使用一个编译选项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 18:26:24

这似乎被记录为甲骨文Bug 4189542 (医生ID 4189542.8)。从您的代码看来,您使用的是11.2.0.4版本的数据库。如果您更新了Oracle的版本,或者将最近的修补程序集应用到11.2.0.4数据库,那么它应该可以解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64050073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档