|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Привет, Нужно проверить есть права на таблицу X, любым пользователем. Можно было бы сделать try-catch, но такое приводит к WARNING: too many parse errors ... PARSE ERROR: ... в алерт логе. Заранее не известно как могут быть выданы права - через роль, напрямую или какую системную привилегию. Логика такая: есть права - используем этот объект, нет - идем более сложным путём. Хочется как-то проверить есть ли права, и желательно сделать это дешевле чем вариант с try-catch, ну или как минимум избежать сообщений в alert.log ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 17:28 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbiМожно было бы сделать try-catch, но такое приводит к WARNING: too many parse errors ... Очевидно потому, что try-catch это конструкция MS SQL и применять её в Oracle - плохая идея. Здесь другие способы ловли ошибок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 18:16 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, try-catch это общее название, в java так же. Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке. Их(неудачных парсов) я и хочу избежать. Если их будет достаточно много - об этом появятся сообщения в алерт логе, программа минимум - избежать этих сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 18:33 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi, Можно, конечно, проверять есть ли нужные права на таблицу, выбирая данные из словарных представлений ALL_TAB_PRIVS_RECD, USER_ROLE_PRIVS, ROLE_TAB_PRIVS, SESSION_ROLES и др. Но это точно будет недешевой операцией, особенно, если в базе очень много объектов. А вообще какая-то странная задача. Пишете программу-шпиона, чтобы по базе рылась и следов не оставляла? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 21:24 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке. DSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 09:38 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
AlexFF__| Melkomyagkii_newbi Тут не поможет если это делать в exception блоке pl/sql, так как прежде чем туда попасть будет парс в sql движке. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 10:18 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi через роль ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 10:20 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Elic Melkomyagkii_newbi через роль жаба prepared statement, просто запрос. можно на анонимный блок переделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 10:33 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Запоминайте состояние по факту ошибки парсера - и шторма левых парсов не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 11:08 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
andrey_anonymous, проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 11:22 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает. Запоминайте в БД :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 11:44 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает. И? Если пользователь вызывает необходимый код то почему прав не хватает? А если вызывать не должен то почему вызывает? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 13:31 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
SY А если вызывать не должен то почему вызывает? Полагаю, речь о функционале, подобном имеющемуся в PL/SQL Developer - при наличии привилегий использует dba% views, но если нет - то готов удовлетвориться и user% views ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 14:48 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
SY Melkomyagkii_newbi проблема не в том что код много раз вызывается в одной сессии, а в том что он вызвается во многих сессиях из которых у доброй половины прав не хватает. И? Если пользователь вызывает необходимый код то почему прав не хватает? А если вызывать не должен то почему вызывает? SY. потому что код этот общий(платформенный) для кучи приложений, в том числе самодельных(клиентами), а они могут ходить разными пользователями. Причем он так написан что если прав не хватает, то получает ту же информацию в любом случае, но более дорогим способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:10 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
andrey_anonymous SY А если вызывать не должен то почему вызывает? Полагаю, речь о функционале, подобном имеющемуся в PL/SQL Developer - при наличии привилегий использует dba% views, но если нет - то готов удовлетвориться и user% views да, типа того. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:10 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
А почему вообще ошибка прав доступа вылазит как "parse error", да ещё и в алерт логе? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:14 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А почему вообще ошибка прав доступа вылазит как "parse error", да ещё и в алерт логе? потому что это и есть parse error. на этапе семантического анализа(парса кусок) ведь проявляется. Могут быть и другие проблемы с парсом которые к такому ворнингу в алерт приведут, причины неудачного парса там тоже подсказываются "PARSE ERROR: ospid=27875, error=6550 for statement:..." тут error говорит что за ORA- ошибка. Вылазит потому как неоднократна - зачем вы делаете много раз бесполезную вещь, об этом предупреждение. Например если у вас в блоке exception when others then null и вы туда часто попадаете из-за ошибок на парсинге запроса из этого блока. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:24 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Посмотрите ноту WARNING: Too Many Parse Errors And error=937 In Database Alert Log (Doc ID 2590218.1) Возможно, что это оно. Что в вашем случае пишут здесь? Код: plsql 1.
Какие именно ошибки показаны? Исключительно error=6550? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:50 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
SQL*Plus, у меня то, что описано. Не хватает прав, часто. Мы это глотаем и идем по более дорогому пути. Хочу переделать так чтобы сразу туда шли если прав не хватит, определить хватит ли прав без парсинга запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 17:56 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi SQL*Plus, у меня то, что описано. Не хватает прав, часто . Мы это глотаем и идем по более дорогому пути. Хочу переделать так чтобы сразу туда шли если прав не хватит, определить хватит ли прав без парсинга запроса. Всё равно не должно оно заполнять алертлог этими сообщениями. Обратитесь в техподдержку, выясните с их помощью точную причину, а потом уже думайте, как эту причину устранять. Есть сного багов, вызывающих такие сообщения. Может быть вы встретили как раз один из этих багов. Рекомендация: Заведите SR на сайте MOS. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 18:01 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
SQL*Plus, если я сто тысяч раз за час выполню в разных сессиях запрос, прав на который у меня нет, не будет этих сообщений? Там не то чтобы заполняет алерт лог, но мозолит глаз и количество неудач подсвечивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 18:13 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
SQL*Plus Всё равно не должно оно заполнять алертлог этими сообщениями. Например ORDS без APEX-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 20:50 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Melkomyagkii_newbi Хочется как-то проверить есть ли права идеея возможно бредовая, но ... вызывать DBMS_METADATA для обьекта? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2021, 09:44 |
|
Проверить есть ли права на объект без парсинга
|
|||
---|---|---|---|
#18+
Stax Melkomyagkii_newbi Хочется как-то проверить есть ли права идеея возможно бредовая, но ... вызывать DBMS_METADATA для обьекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2021, 09:55 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1879634]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
26ms |
get topic data: |
5ms |
get first new msg: |
3ms |
get forum data: |
1ms |
get page messages: |
487ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 829ms |
0 / 0 |