powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
17 сообщений из 17, страница 1 из 1
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506690
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!
Есть два сервера - разработка на Oracle 12.2 и тест на Oracle 11.2. Есть функция, генерирующая тексты объектов БД (таблиц, триггеров и т.д.). В 12-й версии при генерации добавляются некоторые дополнительные ключевые слова, например, вместо "create or replace trigger tr1" получаем "create or replace editionable trigger tr1", вместо "create or replace view vw1" получаем "create or replace force editionable view vw1 ()" и т.д. А нам нужны одинаковые результаты на обоих серверах.
В нашей функции для генерации используются такие пакетные функции:
dbms_metadata.get_xml
dbms_metadata.openw
dbms_metadata.add_transform
dbms_metadata.set_transform_param
dbms_metadata.convert
dbms_metadata.get_dependent_ddl
dbms_metadata.close
dbms_lob.createtemporary

С большей частью проблемы удалось справиться, проставив везде, где можно, параметр-версию '11.2.0' (он используется в dbms_metadata.get_xml, dbms_metadata.openw и dbms_metadata.get_dependent_ddl, по умолчанию стоит compatible). Но последовательности все равно формируются с лишними словами ' nokeep global ' в конце. Пока что поставили костыль - убираем лишнее реплэйсом, но наверняка есть более красивое решение. Кто сталкивался, подскажите, в какую сторону копать?
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506745
1231231231321231
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TuringvetilВсем доброго дня!
но наверняка есть более красивое решение.
Уровнять версии.
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506748
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1231231231321231TuringvetilВсем доброго дня!
но наверняка есть более красивое решение.
Уровнять версии.
:))
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506750
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Судя по этой статье и этой теме , похоже, результаты get_ddl регулируются не параметрами, а какими-то настройками базы?
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506762
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

http://docs.oracle.com/database/122/ARPLS/DBMS_METADATA.htm#GUID-A4683EEE-6F54-4081-B7BF-1496096675FA
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DBMS_METADATA.GET_DDL (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

--можно прямо здесь указать версию
--не ниже  9.2.0
DBMS_METADATA.GET_DDL('TABLE','T','SCOTT','11.2.0')
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506835
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba123,

да, при вызове указываю версию '11.2.0', это убирает "лишние" слова для вьюх, триггеров и т.д., но для сиквенсов почему-то не работает =(
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506929
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

примеры для сиквенса можно посмотреть, как именно не работает?

в референсе "создать сиквенс" в 11.2.0 нет слов SHARING, KEEP, NOKEEP, SESSION, GLOBAL
и если создавать сиквенс в 12с точно так как и в 11.2, то проблем не будет - у вас же текст один и тот должен быть.

если трассировать dbms_metadata.get_ddl('SEQUENCE',....), то упрётесь, имхо, в sys.KU$_SEQUENCE_VIEW
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506957
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba123,

1) На 12.2
создаю последовательность:
Код: plsql
1.
create sequence sq1;


запускаю
Код: sql
1.
select dbms_metadata.get_ddl ('SEQUENCE','SQ1','MY_SCHEMA') from dual


получаю
Код: sql
1.
CREATE SEQUENCE  "MY_SCHEMA"."SQ1"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  GLOBAL


запускаю
Код: sql
1.
select dbms_metadata.get_ddl ('SEQUENCE','SQ1','MY_SCHEMA','11.2.0') from dual


получаю
Код: sql
1.
CREATE SEQUENCE  "MY_SCHEMA"."SQ1"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  GLOBAL



2) На 11.2
создаю последовательность:
Код: plsql
1.
create sequence sq1;


запускаю
Код: sql
1.
select dbms_metadata.get_ddl ('SEQUENCE','SQ1','MY_SCHEMA') from dual


получаю
Код: sql
1.
CREATE SEQUENCE  "MY_SCHEMA"."SQ1"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE


запускаю
Код: sql
1.
select dbms_metadata.get_ddl ('SEQUENCE','SQ1','MY_SCHEMA','11.2.0') from dual


получаю то же самое (ожидаемо)
Код: sql
1.
CREATE SEQUENCE  "MY_SCHEMA"."SQ1"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39506997
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

Июльский патч стоит на 12.2.0?
на 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.
set long 500000

select banner from v$version;

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE    12.1.0.2.0      Production
TNS for Linux: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production


create sequence test_seq;

--правильный совместимый вариант
--
select DBMS_METADATA.GET_DDL('SEQUENCE','TEST_SEQ','SCOTT','11.2.0') from dual;

  CREATE SEQUENCE  "SCOTT"."TEST_SEQ"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE ;


--кривой с SESSION, PARTITION...
--
select DBMS_METADATA.GET_DDL('SEQUENCE','TEST_SEQ','SCOTT','17.2.0') from dual;

  CREATE SEQUENCE  "SCOTT"."TEST_SEQ"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOPARTITION ;

drop sequence test_seq;


Lawrence, удачи тебе, с Днюхой!
Будешь в Петербурге, заходи.
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39507063
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

если dbms_metadata взять с 11-ки, или ето разрушит 12-ку?

.....
stax
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39507285
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba123,

ничего себе... Да, патч стоит: Patch description: "DATABASE RELEASE UPDATE: 12.2.0.1.170718 (26123830)"


Stax,

страшновато... Да и это костыль похлеще реплейса)

Наверное, не будем париться, все равно скоро все сервера на 12 переедут. Но если кто знает красивое решение, напишите, пожалуйста.
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39507289
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetildba123,


Stax,

страшновато... Да и это костыль похлеще реплейса)



я имел ввиду не заменить, а дополнить
создать пакет с другим именем, напр dbms_metadata11

если токо с последовательностями затык, то проще править,
да и не так часто они создаются

.....
stax
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39509319
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

после того, как обнаружили подобную хрень при создании констрейнтов, попытались накатить пакет из 11, корячились так и эдак, но скомпилировать не удалось =(
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39509324
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilStax,

после того, как обнаружили подобную хрень при создании констрейнтов, попытались накатить пакет из 11, корячились так и эдак, но скомпилировать не удалось =(
понял, спасибо

ps
пока нет 12-ки

.....
stax
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39509326
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

можно посмотреть стили для 12.2.0.1 ?

Код: plsql
1.
2.
SELECT  STYLESHEET FROM  SYS.METASTYLESHEET WHERE  (NAME='kuseq') AND (MODEL='ORACLE');
SELECT  STYLESHEET FROM  SYS.METASTYLESHEET WHERE  (NAME='kucommon') AND (MODEL='ORACLE');
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39509694
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba123, вот
...
Рейтинг: 0 / 0
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
    #39509696
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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