|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
У нас есть задача сравнивать на совпадение всех типов "начисто развернутую схему" и "схему, получившуюся в результате наката на старую схему нового патча" Все было хорошо, пока не появились типы record внутри пакетов. Тогда код Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
стал нести ересь типа Unexpected TYPE: SYS_PLSQL_20768_9_1 Unexpected TYPE: SYS_PLSQL_20768_DUMMY_1 Unexpected TYPE: SYS_PLSQL_20768_89_1 Missing TYPE: SYS_PLSQL_22040_9_1 Missing TYPE: SYS_PLSQL_22040_DUMMY_1 Missing TYPE: SYS_PLSQL_22040_89_1 Встал вопрос, как сделать так, чтобы по имени типа типа рекорд получить имя пакета, в котором он создан? Здесь обсуждается похожая тема, но для Oracle 12, который multitenant. Мне нужно для single tenant Oracle 11 что-то придумать. вот это: Код: plsql 1.
хорошо, но 1) слишком глубоко, дженкинс до DBA_OBJECTS никто не пустит 2) не решает задачу "получить имя пакета, в котором определен этот тип" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 10:48 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon Встал вопрос, как сделать так, чтобы по имени типа типа рекорд получить имя пакета, в котором он создан? 22123700 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:20 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Elic, в all_types их нет. Но это не мешает. Так как при этом они, эти типы есть в SELECT * FROM ALL_OBJECTS where owner = 'ORIG' and object_type = 'TYPE'; они же есть в select name, type, line, text from all_source Этого достаточно, чтобы, получив Код: plsql 1.
сделать минус между orig и patched, для решения моей задачи. Они же отлично отображаются в разделе types софтины SQL Developer, видимо, через all_objects. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:26 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon в all_types их нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:27 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Elic, иногда лучше молчать и казаться умным, чем сказать и развеять все сомнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 11:54 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon, Во-первых, по стартовому вопросу, вообще-то, Elic правильно намекает - чтобы не получать ошибок, вам просто надо исключить типы, которых нет в all_types. Во-вторых, зачем вам это надо? Это Internal типы, для отслеживания изменений вам достаточно отслеживать изменения кода пакетов, а не этих внутренних типов. В-третьих, есть специальная вью, которая все что нужно показывает: all_plsql_types /user_plsql_types. (в старых версиях, насколько помню в самом имени SYS_PLSQL_XXXXXX_YY_ZZ, XXXXXX - было hex значением OID пакета) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 12:46 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
... а есть ещё и генерируемые на лету типы, вообще не связанные с хранимым кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:02 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Elic ... а есть ещё и генерируемые на лету типы, вообще не связанные с хранимым кодом. Код: plsql 1. 2.
а у "дропнутых" устанавливался STIME в последний день 4712 года: "31.12.4712 23:59:59", до тех пор пока SMON реально не подчистит их из системных таблиц ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:23 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
xtender Hawkmoon, Во-вторых, зачем вам это надо? Вообще-то, я писал, зачем. Мне надо сравнить, что все типы, которые есть в накате нашего продукта начисто, имеются и при накате патча со старой версии до новой. Таким образом проверяется валидность патча. проверяется на самом деле ВСЕ - таблицы, колонки, индексы, вьюхи, типы, кострейнты, fk - все, что могли не включить в патч... проблема именно с типами. xtender Это Internal типы, для отслеживания изменений вам достаточно отслеживать изменения кода пакетов, а не этих внутренних типов. это не значит, что за ними не надо следить. если их нету в all_types, но при этом они есть в all_objects where type=type и в all_source where type=type, (в последнем месте - в сильно замусоренном виде) - это решение странное. Еще более странно, что в dbeaver их нет, а в Oracle SQL Developer - они есть. xtender В-третьих, есть специальная вью, которая все что нужно показывает: all_plsql_types /user_plsql_types. (в старых версиях, насколько помню в самом имени SYS_PLSQL_XXXXXX_YY_ZZ, XXXXXX - было hex значением OID пакета) Вот тут спасибо, посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:25 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon это не значит, что за ними не надо следить ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:27 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
xtender, к сожалению, ALL_PLSQL_TYPES в пролете. https://docs.oracle.com/database/121/REFRN/GUID-509A6343-5882-4260-BAD0-DC6B2BDC8301.htm#REFRN-GUID-509A6343-5882-4260-BAD0-DC6B2BDC8301 мне нужно то же самое для Oracle 11. смотрю вторую часть совета. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:29 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
xtender, у нас коробочный продукт, поддерживающий несколько СУБД. Нам проще вообще отказаться от типа record в пользу типа object, и вместо Код: plsql 1.
писать Код: plsql 1. 2.
не, ну а че такого-то? Подумаешь, 200 лишних символов написать, рука не отсохнет. Так и сделано в продуктиве сейчас. Но пахнет костылищем. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:35 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon Unexpected TYPE: SYS_PLSQL_20768_9_1 Unexpected TYPE: SYS_PLSQL_20768_DUMMY_1 Unexpected TYPE: SYS_PLSQL_20768_89_1 Missing TYPE: SYS_PLSQL_22040_9_1 Missing TYPE: SYS_PLSQL_22040_DUMMY_1 Missing TYPE: SYS_PLSQL_22040_89_1 Но еще раз: вам не нужно их отслеживать. В 11-й версии их имена зависят от object_id пакета(в 12+ вообще генерируются), соответственно, практически всегда один и тот же тип на разных базах будет иметь разные имена. Ну и в довесок, 11-я версия уже протухла давно. В общем, ССЗБ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:38 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon Нам проще вообще отказаться от типа record в пользу типа object Hawkmoon у нас коробочный продукт, поддерживающий несколько СУБД. Отслеживайте только то, что меняете сами. Не надо вам во внутренности оракла заглядывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:40 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
xtender В 11-й версии их имена зависят от object_id пакета(в 12+ вообще генерируются), соответственно, практически всегда один и тот же тип на разных базах будет иметь разные имена. с этого мучения и начались xtender Ну и в довесок, 11-я версия уже протухла давно. В общем, ССЗБ ага, заказчикам расскажите ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:41 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
xtender, Так и запишем, фетчить курсор в переменную типа object или record - БРЕД. Дискуссия перестает быть конструктивной. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 13:53 |
|
Узнать имя пакета, в котором содержится тип record
|
|||
---|---|---|---|
#18+
Hawkmoon xtender, Так и запишем, фетчить курсор в переменную типа object или record - БРЕД. Дискуссия перестает быть конструктивной. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 14:13 |
|
|
start [/forum/topic.php?fid=52&tid=1881272]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 291ms |
total: | 551ms |
0 / 0 |