Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проверить есть ли права на объект без парсинга / 24 сообщений из 24, страница 1 из 1
28.12.2021, 17:28
    #40123666
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Привет,

Нужно проверить есть права на таблицу X, любым пользователем. Можно было бы сделать try-catch, но такое приводит к

WARNING: too many parse errors ...
PARSE ERROR: ...

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

Логика такая: есть права - используем этот объект, нет - идем более сложным путём.
Хочется как-то проверить есть ли права, и желательно сделать это дешевле чем вариант с try-catch, ну или как минимум избежать сообщений в alert.log
...
Рейтинг: 0 / 0
28.12.2021, 18:16
    #40123676
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbiМожно было бы сделать try-catch, но такое приводит к

WARNING: too many parse errors ...

Очевидно потому, что try-catch это конструкция MS SQL и применять её в Oracle -
плохая идея. Здесь другие способы ловли ошибок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.12.2021, 18:33
    #40123683
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Dimitry Sibiryakov,

try-catch это общее название, в java так же. Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке. Их(неудачных парсов) я и хочу избежать. Если их будет достаточно много - об этом появятся сообщения в алерт логе, программа минимум - избежать этих сообщений.
...
Рейтинг: 0 / 0
28.12.2021, 21:24
    #40123724
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi,

Можно, конечно, проверять есть ли нужные права на таблицу,
выбирая данные из словарных представлений
ALL_TAB_PRIVS_RECD, USER_ROLE_PRIVS, ROLE_TAB_PRIVS, SESSION_ROLES и др.

Но это точно будет недешевой операцией, особенно, если в базе очень много объектов.

А вообще какая-то странная задача.
Пишете программу-шпиона, чтобы по базе рылась и следов не оставляла?
...
Рейтинг: 0 / 0
29.12.2021, 09:38
    #40123799
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi
Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке.

DSQL
...
Рейтинг: 0 / 0
29.12.2021, 10:18
    #40123814
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
AlexFF__|
Melkomyagkii_newbi
Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке.
DSQL
Ты не понял, это всё равно неуспешный парс, засоряющий alert.log.
...
Рейтинг: 0 / 0
29.12.2021, 10:20
    #40123816
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi
через роль
Где располагается код, могущий упасть? Anonymous block? Named unit? Какой AUTHID?
...
Рейтинг: 0 / 0
29.12.2021, 10:33
    #40123826
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Elic
Melkomyagkii_newbi
через роль
Где располагается код, могущий упасть? Anonymous block? Named unit? Какой AUTHID?


жаба prepared statement, просто запрос. можно на анонимный блок переделать.
...
Рейтинг: 0 / 0
29.12.2021, 11:08
    #40123839
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Запоминайте состояние по факту ошибки парсера - и шторма левых парсов не будет.
...
Рейтинг: 0 / 0
29.12.2021, 11:22
    #40123841
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
andrey_anonymous,

проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает.
...
Рейтинг: 0 / 0
29.12.2021, 11:44
    #40123851
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi
проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает.

Запоминайте в БД :)
...
Рейтинг: 0 / 0
29.12.2021, 13:31
    #40123900
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi

проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает.


И? Если пользователь вызывает необходимый код то почему прав не хватает? А если вызывать не должен то почему вызывает?

SY.
...
Рейтинг: 0 / 0
29.12.2021, 14:48
    #40123958
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
SY
А если вызывать не должен то почему вызывает?

Полагаю, речь о функционале, подобном имеющемуся в PL/SQL Developer - при наличии привилегий использует dba% views, но если нет - то готов удовлетвориться и user% views
...
Рейтинг: 0 / 0
29.12.2021, 17:10
    #40124013
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
SY
Melkomyagkii_newbi

проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает.


И? Если пользователь вызывает необходимый код то почему прав не хватает? А если вызывать не должен то почему вызывает?

SY.


потому что код этот общий(платформенный) для кучи приложений, в том числе самодельных(клиентами), а они могут ходить разными пользователями. Причем он так написан что если прав не хватает, то получает ту же информацию в любом случае, но более дорогим способом.
...
Рейтинг: 0 / 0
29.12.2021, 17:10
    #40124014
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
andrey_anonymous
SY
А если вызывать не должен то почему вызывает?

Полагаю, речь о функционале, подобном имеющемуся в PL/SQL Developer - при наличии привилегий использует dba% views, но если нет - то готов удовлетвориться и user% views


да, типа того.
...
Рейтинг: 0 / 0
29.12.2021, 17:14
    #40124015
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
А почему вообще ошибка прав доступа вылазит как "parse error", да ещё и в алерт
логе?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.12.2021, 17:24
    #40124018
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Dimitry Sibiryakov

А почему вообще ошибка прав доступа вылазит как "parse error", да ещё и в алерт
логе?


потому что это и есть parse error. на этапе семантического анализа(парса кусок) ведь проявляется. Могут быть и другие проблемы с парсом которые к такому ворнингу в алерт приведут, причины неудачного парса там тоже подсказываются "PARSE ERROR: ospid=27875, error=6550 for statement:..." тут error говорит что за ORA- ошибка.
Вылазит потому как неоднократна - зачем вы делаете много раз бесполезную вещь, об этом предупреждение. Например если у вас в блоке exception when others then null и вы туда часто попадаете из-за ошибок на парсинге запроса из этого блока.
...
Рейтинг: 0 / 0
29.12.2021, 17:50
    #40124024
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Посмотрите ноту
WARNING: Too Many Parse Errors And error=937 In Database Alert Log (Doc ID 2590218.1)

Возможно, что это оно.

Что в вашем случае пишут здесь?
Код: plsql
1.
PARSE ERROR: ...


Какие именно ошибки показаны?
Исключительно error=6550?
...
Рейтинг: 0 / 0
29.12.2021, 17:56
    #40124028
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
SQL*Plus,

у меня то, что описано. Не хватает прав, часто. Мы это глотаем и идем по более дорогому пути. Хочу переделать так чтобы сразу туда шли если прав не хватит, определить хватит ли прав без парсинга запроса.
...
Рейтинг: 0 / 0
29.12.2021, 18:01
    #40124030
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi
SQL*Plus,

у меня то, что описано. Не хватает прав, часто .
Мы это глотаем и идем по более дорогому пути.
Хочу переделать так чтобы сразу туда шли если прав не хватит,
определить хватит ли прав без парсинга запроса.

Всё равно не должно оно заполнять алертлог этими сообщениями.
Обратитесь в техподдержку, выясните с их помощью точную причину,
а потом уже думайте, как эту причину устранять.

Есть сного багов, вызывающих такие сообщения.
Может быть вы встретили как раз один из этих багов.

Рекомендация:
Заведите SR на сайте MOS.
...
Рейтинг: 0 / 0
29.12.2021, 18:13
    #40124036
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
SQL*Plus,

если я сто тысяч раз за час выполню в разных сессиях запрос, прав на который у меня нет, не будет этих сообщений? Там не то чтобы заполняет алерт лог, но мозолит глаз и количество неудач подсвечивает.
...
Рейтинг: 0 / 0
29.12.2021, 20:50
    #40124060
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
SQL*Plus
Всё равно не должно оно заполнять алертлог этими сообщениями.
Это фича последних ораклов (где-то >=18). Заполняет.
Например ORDS без APEX-а.
...
Рейтинг: 0 / 0
30.12.2021, 09:44
    #40124107
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Melkomyagkii_newbi

Хочется как-то проверить есть ли права


идеея возможно бредовая, но ...

вызывать DBMS_METADATA для обьекта?

.....
stax
...
Рейтинг: 0 / 0
30.12.2021, 09:55
    #40124109
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить есть ли права на объект без парсинга
Stax
Melkomyagkii_newbi

Хочется как-то проверить есть ли права

идеея возможно бредовая, но ...

вызывать DBMS_METADATA для обьекта?
И основной работой базы данных станет выполнение DBMS_METADATA...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проверить есть ли права на объект без парсинга / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]