Перекомпиляция синонима в другой схеме Oracle DB

Я хочу перекомпилировать неработающий синоним в другой схеме, но получаю ошибку о привилегиях.

Согласно заявлениям Oracle:

Чтобы изменить частный синоним в схеме другого пользователя, вы должны иметь системные привилегии CREATE ANY SYNONYM и DROP ANY SYNONYM.

Хорошо, смотрите мой фрагмент:

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 этого синонима, чтобы снова сделать его действительным, но я хочу использовать параметр компиляции.


person Roman    schedule 24.09.2020    source источник


Ответы (1)


Кажется, это задокументировано как Oracle Bug 4189542 (идентификатор документа 4189542.8). Судя по вашему коду, вы используете базу данных версии 11.2.0.4. Если вы обновите свою версию Oracle или примените последний набор исправлений к своей базе данных 11.2.0.4, это должно решить проблему.

person EJ Egyed    schedule 24.09.2020