|
|
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Хочу выгрузить DDL для Constraint'ов с помощью такого (например) кода: Код: plaintext 1. автор ORA-31603: object "MY_CONSTR" of type CONSTRAINT not found in schema "SCOTT" Constraint существует, запрос к DBA_Constraints это подтверждает. Может быть кто-нибудь знает, в чем дело? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 18:19 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
I do not see anything wrong with syntax: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. What happens when you issue: Код: plaintext 1. 2. 3. 4. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 19:08 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Получаю 'R', это внешний ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 19:19 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Только что попробовал, приведенная конструкция отлично отрабатывает для Constraint'ов всех типов ('C','P','U'), кроме внешних ключей ('R'). Интересно, почему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 19:25 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
For a foreign key you must use REF_CONSTRAINT: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 19:31 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо! Исчерпывающий ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2005, 19:37 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Всех приветствую! И вновь к этому вопросу)...теперь про стандартный планировщик! (Oracle Database 10g Enterprise Edition Release 10.2.0.4.0) Код: plsql 1. 2. 3. 4. 5. Выходит та же самая ошибка ORA-31603((( что здесь то не так не пойму?? Хотя в базе есть такой scheduler: select * from dba_scheduler_jobs where owner = 'SYS' and job_name = 'FGR$AUTOPURGE_JOB'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 09:08 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Если рассматривать далее. Создаю задание: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Проверяю создание задания: Код: plsql 1. JOB_NAME JOB_TYPE ------------------------------------ ---------------------- JOB_TEST PLSQL_BLOCK Пытаюсь выдернуть DLL: Код: plsql 1. [1]: ORA-31603: объект "JOB_TEST" с типом PROCOBJ не найден в схеме "SYS" Да что же не так?? Хотя следующий запрос отрабатывает на ура: Код: plsql 1. DBMS_METADATA.GET_DDL('PROCOBJ','MGMT_STATS_CONFIG_JOB','ORACLE_OCM') --------------------------------------------------------------------------- (CLOB) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 10:42 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
AcMuHor, что-нибудь вообще (из других схем) показывается ? Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:24 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
dba123, не заметил, что Вы в схеме sys создаете джоб попробуйте в своей или посмотрите что там за права даны oracle_ocm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:29 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Да показывает! все без проблем выбирает...так что получается у самого sys-a невозможно посмотреть свои же созданные задания?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:31 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
У пользователя ORACLE_OCM следующие привилегии: Код: plsql 1. Результат: GRANTEE OWNER TABLE_NAME GRANTOR ------------------------------------ ------------------------------------ -------------------------------- ORACLE_OCM SYS ORACLE_OCM_CONFIG_DIR SYS ORACLE_OCM SYS ORACLE_OCM_CONFIG_DIR SYS Вообщем не знаю что это скажет Вам)) Просто очень интересно почему так получается). Вручную просто не хотелось все заново создавать на другой БД, т.к. полный дамп DBMS_DATAPUMP не выгружает эти задания(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:12 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
т.к. под SYSTEM все работает так и придется пересоздать под ним все задания))... Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:18 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Интересный обход бага Dbms_metadata.Get_ddl Can Not Capture Ddl For Scheduler Jobs [ID 567504.1] Спасибо, полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:51 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
У меня при выполнении Код: plsql 1. получается сообщение об ошибке: ORA-31603: объект "SD_EXPIRE_PACKS" c типом TABLE не найден в схеме "BIS" ORA-06512: на "SYS.DBMS_METADATA", line 4018 ORA-06512: на "SYS.DBMS_METADATA", line 5843 ORA-06512: на line 1 Я пытался разрапить SYS.DBMS_METADATA, но не получилось . При этом запрос select * from bis.SD_EXPIRE_PACKS нормально работает, никаких ошибок не выдаёт, выборка не пуста. В чём может быть проблема? Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 13:18 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Pastic, Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 13:42 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
PasticORA-31603: объект "SD_EXPIRE_PACKS" c типом TABLE не найден в схеме "BIS"select_catalog_role ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 14:01 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
pravednikPastic, Код: plsql 1. Возвращает 1 строку со значением TABLE. -2-PasticORA-31603: объект "SD_EXPIRE_PACKS" c типом TABLE не найден в схеме "BIS"select_catalog_role Похоже, это то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2012, 15:01 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Эта же ошибка возникает при таких обстоятельствах. Есть две схемы. Условно USER_DBA (с правами DBA) и USER. Есть DDL в схеме USER_DBA в котором используется DBMS_METADATA.GET_DDL - здесь и возникает ошибка Код: plsql 1. 2. 3. 4. 5. 6. если выполнить для извлечения данных схемы USER_DBA - ошибки нет Код: plsql 1. 2. 3. 4. 5. 6. Причем, если вызывать не из DDL - работает Код: plsql 1. Поручается, ошибка возникает только при вызове из DDL. Где копать? Пробовал выполнять это же из схемы USER в DLL - работает нормально, из чего я сделал вывод что не в правах дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 13:29 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
IgorDиз чего я сделал вывод что не в правах дело.Топ №4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 13:52 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Elic, SELECT_CATALOG_ROLE присутствует, а ошибка есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 15:38 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
IgorDSELECT_CATALOG_ROLE присутствует, а ошибка есть Медитируй на тему что есть SELECT_CATALOG_ROLE: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 16:05 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SY, Помогло! СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2015, 16:18 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вопрос все еще частично актуален: create or replace procedure USER1.test authid current_user is Result clob; begin select dbms_metadata.get_ddl('PACKAGE_BODY', 'PKG_NAME', 'USER2') into result from dual; end test; При вызове от имени USER1 ругается: Ошибка: ORA-31603: объект 'PKG_NAME' с типом 'PACKAGE_BODY' не найден в схеме 'USER2' Что-то уже идеи заканчиваются. Помогите понять что к чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 16:00 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 16:13 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SeaGate, правильно ли понимаю: 1. при вызове функции от имени владельца я никак не получу данные объектов других схем 2. но если вызывать эту функцию от имени других пользователей, предоставив грант на EXECUTE, то конечно возможно (это проверил). Но почему именно PACKAGE_BODY не выбирает? А функции, процедуры, спецификации пакетов нормально берет. ЗЫ: при выборе через функцию данных из all_source объекти типа PACKAGE_BODY тоже НЕ видит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 16:58 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
uZverrr, uZverrr1. при вызове функции от имени владельца я никак не получу данные объектов других схем 2. но если вызывать эту функцию от имени других пользователей, предоставив грант на EXECUTE, то конечно возможно (это проверил). Но почему именно PACKAGE_BODY не выбирает? А функции, процедуры, спецификации пакетов нормально берет. Privileged user для DBMS_METADATA это SYS или пользователь, с ролью SELECT_CATALOG_ROLE. Соответственно, если не SYS и definer rights, то да, по документации мы сами метаданные объектов не видим. Касаемо того, почему не выбирает PACKAGE_BODY, а что-то выбирает: проше будет, если будет конкретный тест-кейс и версия. Без этого сложно сказать. Например, в первой попавшейся БД 11.2.0.3 запустил DBMS_METADATA.GET_DDL('PACKAGE', 'PKG_NAME', 'USER..') имея права на EXECUTE и получил ту же ошибку ORA-31603. На нижнем уровне DBMS_METADATA делает запрос: Код: plsql 1. 2. uid=236 - это SYS_CONTEXT('USERENV','CURRENT_USERID'). Запрос возвращает 0 строк: Код: plsql 1. Т.к. в коде KU$_FULL_PKG_VIEW, например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Т.е. проверка на то, что: пользователь владелец, SYS или имеет SELECT_CATALOG_ROLE. Таким образом, в первой попавшейся 11.2.0.3 спецификации пакетов - не берет, что соответствует документации. Поэтому и нужен тест кейс и версия, чтобы предметно посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 17:56 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SeaGate, Перечитай мой ответ, особенно выделенное желтым: Код: plsql 1. Так-что повторю: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 19:50 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SeaGateПоэтому и нужен тест кейс и версия, чтобы предметно посмотреть. Что тут смотреть? Ты эмпирически (а мог-бы просто покурить доку) вывел "проверка на то, что: пользователь владелец, SYS или имеет SELECT_CATALOG_ROLE". Но затем тебя вдруг понесло "имея права на EXECUTE и получил ту же ошибку ORA-31603". Тут две проблемы. Первая как говорит дока и как ты эмпирически вывел - DBMS_METADATA не реагирует ни на какие привилегии - ты или owner, или sys или имеешь select_catalog_role. А можешь ты выполнять пакет или нет - по-барабану. Вторая - привилегия execute позволяет выполнять пакет, но не позволяет видеть текст (DBA/ALL_SOURCE.TEXT) пакета. Чтобы видеть текст (DBA/ALL_SOURCE.TEXT) чужого пакета требуется привилегия debug. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2015, 20:09 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SY, SYТы эмпирически (а мог-бы просто покурить доку) вывел "проверка на то, что: пользователь владелец, SYS или имеет SELECT_CATALOG_ROLE". 1. Я привык проверять то, про что я читаю. 2. К чему про "мог-бы просто покурить доку", если дока уже была изучена (все тома заново не успел прочитать, но Security Model по диагонали прочел): SeaGatePrivileged user для DBMS_METADATA это SYS или пользователь, с ролью SELECT_CATALOG_ROLE. Соответственно, если не SYS и definer rights, то да, по документации мы сами метаданные объектов не видим. SYА можешь ты выполнять пакет или нет - по-барабану. 1. Извини, может что-то я не увидел, но вот uZverrr пишет: uZverrr2. но если вызывать эту функцию от имени других пользователей, предоставив грант на EXECUTE, то конечно возможно (это проверил). ... Но почему именно PACKAGE_BODY не выбирает? А функции, процедуры, спецификации пакетов нормально берет. Что я трактую как: "есть execute", видит PACKAGE_SPEC, PACKAGE_BODY - не видит (ORA-31603). Что не совпадает с документацией и моим, собранным на коленке, тестом. Поэтому я и попросил предоставить тест кейс, чтобы проверить, что я правильно понимаю его задачу. 2. про "по-барабану" и почему я еще начал эмпирически проверять: да просто потому, что DBMS_METADATA не самая простая и беспроблемная часть ORACLE. Особенно, начиная с 11g, когда представления словаря были доработаны с поддержкой EBR. Например, вот один из первых моих багов 2012 года после адаптации EBR, с подобным я до сих пор сталкиваюсь в 11.2.0.4 с летним PSU (не на VIEW, уже на TYPE): Bug 15922287 : DBMS_METADATA FOR A VIEW FAILED WITH ERROR ORA-1427 К слову, по этому багу было несколько итераций с предоставлением патчей. Видимо, громоздкий код DBMS_METADATA(и используемого ей кода) и/или плохие разработчики Oracle, что за несколько итераций не могут патч нормальный выкатить. EBR это верхушка айсберга, просто из наболевшего. Баги оптимизатора с каждой версией прибывают/убывают и много чего еще из серии known unknowns и unknown unknowns. Поэтому если я читаю про то, что DBMS_METADATA работает не так, как описано в документации, то я прошу предоставить пример. SYПеречитай мой ответ, особенно выделенное желтым: authid current_user Прочитал, откровения не увидел. Про invoker rights, роль SELECT_CATALOG_ROLE и влияние на DBMS_METADATA я в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2015, 06:48 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Ночь перекурил и вроде допонял кой-чего... Все делаем от имени USER1: 1. Код: plsql 1. Просто селект работает для объектов любой схемы. 2. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Такой вариант (без authid current_user) выдает ошибку 31603 3. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Такой вариант работает для любых посторонних схем. Итого: фактически вызов всегда идет от USER1, но получается, что при вызове функции у которой не прописано authid current_user, вызов происходит будто не от USER1 или не подхватываются гранты какие.... Не знаю как правильно это обозвать. Для такого варианта при наличии authid current_user тож вроде все работает: Код: plsql 1. 2. 3. 4. SeaGate, SY большое спасибо за участие. Надеюсь далее вопросов не возникнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2015, 12:17 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
uZverrr, uZverrrТакой вариант работает для любых посторонних схем. Это идет вразрез с документацией и, к сожалению, я не могу это воспроизвести в ближайшей 12.1.0.2. Ниже пример, который это демонстрирует: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. Чтобы заработало не под SYS и владельцем пакета нужно выдать вызывающему пользователю SELECT_CATALOG_ROLE: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. С definer rights можно решить задачу, например, с помощью CBAC (Code Based Access Control, 12c): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. uZverrrИтого: фактически вызов всегда идет от USER1, но получается, что при вызове функции у которой не прописано authid current_user, вызов происходит будто не от USER1 или не подхватываются гранты какие.... Не знаю как правильно это обозвать. Ну это конечно: ТОП №4 Хотя я что-то не вижу, где там явно написано, что сами роли владельца (а не выданные им права) не видны в definer rights program unit, поэтому вот документация, где это явно указано: Security Guide: How Roles Work in PL/SQL Blocks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2015, 16:20 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Еще одна загадка... У пользователя есть роль SELECT_CATALOG_ROLE. Есть 2 функции: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Результаты выполнения: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Почему не видит тела пакетов без authid current_user? Хотя PACKAGE, FUNCTUIN и PROCEDURE видит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 12:33 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
uZverrr, Ты опять путаешь мягкое с тёплым. SELECT_CATALOG_ROLE разрешает выборку из DBA_XXX data dictionary views. А для ALL_XXX/USER_XXX он по-барабану. Чтобы видеть чужое в ALL_SOURCE необходим EXECUTE. Он дает возможность видеть "чужую" процедуру, функцию и спецификацию пакета. В этом и прелесть пакета - "чужие" с execute могут выполнять и смотреть спецификацию (число, порядок, типы параметров, etc.) но не тело пакета - нечего "чужим" знать как там на кухне. Для того что-бы видеть "чужую" кухню требуется DEGUG. Так-что у тебя владелец процедуры getsource скорее всего имеет доступ к "кухне" через роль. А роли с DEFINER RIGHTS игнорируются. Посему работает только getsource с AUTHID CURRENT_USER который роли не игнорирует. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 16:32 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SY, ну так чем чужая кухня типа "тело пакета" отличается от функции или процедуры? Условно, если я фанатик чистых func&proc, то буду вести код не в пакетах, а отдельными func&proc. Получится, что так я весь код увижу и без authid current_user... Или тогда тут заморочка отдельная именно на тела пакетов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 18:00 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
uZverrrПолучится, что так я весь код увижу и без authid current_user... Я ведь вроде понятно обьяснил: " В этом и прелесть пакета - "чужие" с execute могут выполнять и смотреть спецификацию (число, порядок, типы параметров, etc.) но не тело пакета - нечего "чужим" знать как там на кухне". SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 18:52 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
SY, ну теперь вроде окончательно понятно. Спасибо. Просто для выгрузки всех объектов хотелось весь код запихнуть в один пакет. но из-за тел пакетов походу это не прокатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2016, 09:48 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
uZverrrSY, ну теперь вроде окончательно понятно . Спасибо. Просто для выгрузки всех объектов хотелось весь код запихнуть в один пакет. но из-за тел пакетов походу это не прокатит . http://docs.oracle.com/database/121/SUTIL/GUID-EE2AA635-EA83-4265-9727-E9C659842CEF.htm#SUTIL1624 Note: To access objects that are not in your own schema you must have the SELECT_CATALOG_ROLE role . However , roles are disabled within many PL/SQL objects (stored procedures, functions, definer's rights APIs). Therefore, if you are writing a PL/SQL program that will access objects in another schema (or, in general, any objects for which you need the SELECT_CATALOG_ROLE role), then you must put the code in an invoker's rights API. один пользователь имеет код, который извлекает. другие пользователи его вызывают для своих схем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2016, 10:28 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Подскажите плиз: 1. Где найти список полей для DISABLE ключей, т.к. при отключении ключа связь с таблицей индексов пропадает. 2. И для FOREIGN ключей не могу найти где фиксируется список полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:58 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Пробовал делать 2 запроса: Код: plsql 1. 2. и Код: plsql 1. 2. оба выдают сообщение "ORA-31603: object "AB_STATE_PKG" of type VIEW not found in schema <имя схемы>". Но дело в том, что представления с таким именем в схеме нет: Код: plsql 1. Этот запрос возвращает пустое множество. Код: plsql 1. А этот запрос возвращает 2 строки (спецификация и тело пакета). Но причём здесь пакет, когда я делаю запросы из user_views? Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2018, 13:43 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Pastic, no_push_pred ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2018, 14:30 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
-2-, select /*+ no_push_pred(uv) */ view_name from user_views uv where dbms_lob.instr(dbms_metadata.get_ddl(object_type => 'VIEW', name => view_name), '@')>0; select /*+ no_push_pred(uv) */ view_name from user_views uv where instr(dbms_metadata.get_ddl(object_type => 'VIEW', name => view_name), '@')>0; - всё тоже самое: "ORA-31603: object "AB_STATE_PKG" of type VIEW not found in schema <имя схемы>" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2018, 16:30 |
|
||
|
ORA-31603 при использовании DBMS_METADATA.DEG_DDL
|
|||
|---|---|---|---|
|
#18+
Pastic, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. VIEW_NAMETST_INSTR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2018, 19:15 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1884594]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
90ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 392ms |

| 0 / 0 |
