Как насчет небольшой помощи вашего администратора баз данных?
Вот что мой пользователь SCOTT
видит в all_queues
:
SQL> select owner, name from all_queues;
OWNER NAME
------------------------------ ------------------------------
SYS SRVQUEUE
SYS SCHEDULER_FILEWATCHER_Q
SYS SCHEDULER$_EVENT_QUEUE
Однако я хотел бы увидеть некоторые другие данные. SYS
всемогущий все видит:
SQL> show user
USER is "SYS"
SQL> select owner, name from dba_queues;
OWNER NAME
------------------------------ ------------------------------
SYS SYS$SERVICE_METRICS
SYS AQ$_SYS$SERVICE_METRICS_TAB_E
SYSTEM DEF$_AQERROR
SYSTEM AQ$_DEF$_AQERROR_E
SYSTEM DEF$_AQCALL
SYSTEM AQ$_DEF$_AQCALL_E
SYS AQ$_KUPC$DATAPUMP_QUETAB_E
<snip>
По-прежнему подключен как SYS
, я создам представление, в котором будут отображаться данные только для выбранного мной владельца (в моей базе данных XE особо выбирать нечего, поэтому я буду использовать значения, принадлежащие SYSTEM
). Затем предоставьте привилегию select
пользователю SCOTT
:
SQL> create or replace view v_dba_queues as
2 select name
3 from dba_queues
4 where owner = 'SYSTEM';
View created.
SQL> grant select on v_dba_queues to scott;
Grant succeeded.
Вернемся к SCOTT
: чтобы упростить себе жизнь, я сначала создам синоним:
SQL> connect scott/tiger
Connected.
SQL> create synonym v_dba_queues for sys.v_dba_queues;
Synonym created.
Окончательно:
SQL> select * from v_dba_queues;
NAME
------------------------------
DEF$_AQERROR
AQ$_DEF$_AQERROR_E
DEF$_AQCALL
AQ$_DEF$_AQCALL_E
SQL>
По сути, вы бы сделали то же самое; просто ваше представление будет содержать данные для owner = 'QUEUE_OWNER'
. Посмотрите, поможет ли это.
person
Littlefoot
schedule
02.02.2021