Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дополнительные ключевые слова при генерации метаданных в Oracle 12.2 / 17 сообщений из 17, страница 1 из 1
17.08.2017, 10:42
    #39506690
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
Всем доброго дня!
Есть два сервера - разработка на 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
17.08.2017, 12:01
    #39506745
1231231231321231
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
TuringvetilВсем доброго дня!
но наверняка есть более красивое решение.
Уровнять версии.
...
Рейтинг: 0 / 0
17.08.2017, 12:05
    #39506748
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
1231231231321231TuringvetilВсем доброго дня!
но наверняка есть более красивое решение.
Уровнять версии.
:))
...
Рейтинг: 0 / 0
17.08.2017, 12:07
    #39506750
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
Судя по этой статье и этой теме , похоже, результаты get_ddl регулируются не параметрами, а какими-то настройками базы?
...
Рейтинг: 0 / 0
17.08.2017, 12:35
    #39506762
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
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
17.08.2017, 13:57
    #39506835
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
dba123,

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

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

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

если трассировать dbms_metadata.get_ddl('SEQUENCE',....), то упрётесь, имхо, в sys.KU$_SEQUENCE_VIEW
...
Рейтинг: 0 / 0
17.08.2017, 15:40
    #39506957
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
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
17.08.2017, 16:21
    #39506997
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
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
17.08.2017, 17:49
    #39507063
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
Turingvetil,

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

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

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


Stax,

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

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


Stax,

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



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

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

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

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

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

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

.....
stax
...
Рейтинг: 0 / 0
23.08.2017, 13:53
    #39509326
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
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
24.08.2017, 08:59
    #39509694
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
dba123, вот
...
Рейтинг: 0 / 0
24.08.2017, 08:59
    #39509696
Turingvetil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнительные ключевые слова при генерации метаданных в Oracle 12.2
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дополнительные ключевые слова при генерации метаданных в Oracle 12.2 / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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