|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Привет всем. Столкнулся с задачей реализовать поддержку IBM DB2 для продукта который сейчас работает на Oracle 9i. Насколько сильные отличия в реализации SQL (администрирование не интересует) и есть ли какие нибудь средства помогающие автоматизировать процесс перехода? Я понимаю, что все сильно зависит от того на сколько сильно задействована специфическая функциональность Oracle, но все же? Заранее спасибо, Alex Sibilev ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 14:14 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
В Oracle используется PL/SQL - процедурное расширение языка, а в DB2 этого нет, там используется "чистый" SQL без расширения :(. Поэтому, при переходе, многие конструкции придется реализовывать не на SQL. На сколько я знаю, средств автоматизации перехода нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2002, 16:05 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Есть в DB2 свой прообраз PL/SQL. По-моему начиная с версии 6. Не пугай людей ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2002, 08:29 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Я в семерке не видел ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2002, 15:56 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Попробуй написать SP или Trigger ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2002, 08:36 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
где мне можно подробную информацию и какие нибудь примеры по ORACLE9I помогите мне пожалуста ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2003, 09:04 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
> judge Средств автоматизации нет (т.е., я о них не знаю) - не очень-то любят разные производители серверов БД друг дружку... ;) В основном - руками и мозгами... Как-то пользовался IBM DB2 Migration Toolkit, но не помню, поддерживает ли он импорт из Oracle... Насчет "чистого SQL" - в DB2 SQL так расширен, что никто не уйдет недовольным... ;) Настолько, что аналог PL/SQL был достаточно долгое время просто не нужен... Например, временные таблицы (Гена < не те, что WITH) появились только в 7... Но с хранимыми процедурами придется повозиться - в DB2 они не являются объектами БД, это внешние процессы, могут быть написаны на чем угодно: SQL (достаточно мощный; текст хранимой процедуры на SQL переводится на C, затем билдится и линкуется к экземпляру сервера БД), С, С++, Java, COBOL, Fortran... Да в форуме неоднократно этот вопрос обсуждался... В общем, рискну (потому как большого опыта работы с Oracle все таки не имею, но осуществлял миграции MSSQL -> Informix, MSSQL -> DB2) заявить, что задача совсем даже не является неразрешимой, и даже более того - обычная работа, просто взять и сделать... Конечно, из-за отсутствия (возможного) опыта работы с конкретной платформой трудности будут, ну а как же без них - жить будет не интересно... ;) PS: Все стандартные возможности SQL, безусловно, поддерживаются... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2003, 11:13 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Есть такая компания OpenWay, я знаю, у них была попытка портирования оракловского приложения на дб2. Поищи в и-нете...) позвони им... Интересно чем у них это все кончилось. А вообще - по-моему слишком разные технологии. Хоть и IBМ и реализовали язык для СП, все равно придется всю бизнеслогику переписывать, в противном случае, как мне кажется, ничего хорошего не получится. Удастся сохранить разве что структуру таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2003, 13:40 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Дорогие мои дамы и господа... С задачей этой я сталкивался в виде перевода PL/SQL ORACLE на JAVA(JDBC)DB2 Как вам извесно почти любая задача подобного плана разрешима. Воопрос только в том сколько времени у вас это займет, и много ли вы собираетесь переводить... Если это приложение до 3000 строк то это решабельно. Быстро и влоп... Если же как у нас 300 000 строк... то с переводом в лоб приходится повременять и применять средства разработанные для этого нашей же конторой. Иначе, можно просто утонуть в ошибка.... А главное Мужики это тестирование то есть правильность переведенного это такой большой ком... что его очень и очень трудно проводить, а так в жизни все возможно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2003, 18:54 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Советую загрузить IBM DB2 Migration Toolkit for Oracle 8 http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2002-12-22+21%3A27%3A34.466517R&cat=&fam=&s=z&S_TACT=&S_CMP ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 12:18 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Эта штука облегчает миграцию с Oracle 8. Сильно ли поможет с Oracle 9, я не знаю, но, по крайней мере, посмотрите доки - на одной из страниц перечислены многие грабли, на которые можете натолкнуться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 12:21 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Migration toolkit помогает с NULL'ами, которые у Oracle равны пустым строкам, со значениями переменных по умолчанию, с обработкой исключений, с переводом запросов на выборку и т.п. Но с частью проблем MTK не справляется. Процедурная часть у DB2 даже версии 8 сделана заметно хуже, чем у Oracle, хотя выпутаться из положения обычно можно. Пакетов в стиле Oracle, а потому и переменных, констант и исключений уровня пакетов у DB2 нет. Требуется ручной перевод. Переменные, по-видимому, можно эмулировать только через временные таблицы. Конструкции типа begin exception when .... begin exception ,,, не поддерживаются. Хранимые процедуры из триггеров вызвать нельзя!!! Я в такой ситуации просто впендюрил само тело хранимой процедуры в триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 12:32 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Язык внутри триггеров и SQL-функций намного более убог, чем внутри SQL-процедур, нет обработки исключений. Нередко потому MTK переводит функции в процедуры, но "зато" они не после этого не могут быть вызваны из SELECT-ов. Вложенные процедуры тоже не поддерживаются. Настоящую панику у меня вызвали массивы и записи, когда я их впервые увиделв PL/SQL. На самом деле это нестрашно, но вновь требует ручной обработки. Есть такие возможности: 1. массив записей -> временная таблица с соответствующими полями 2. массив записей -> SQL-функция, возвращающая таблицу 3. Использование более выразительного языка, напр. Java (там можно и массив записей соорудить, и даже вложенную процедуру - через анонимный класс). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 12:39 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
"Переводчика" также "порадуют" LIKE и функция POSSTR, где по немыслимой мудрости ibm-еров вторым параметром может быть только константа. Ошеломила меня и работа с sequences - SQL0348N sequence-expression cannot be specified in this context. Explanation: The statement contains a NEXTVAL expression or PREVVAL expression in an invalid context. NEXTVAL expressions and PREVVAL expressions cannot be specified in the following contexts: join condition of a full outer join DEFAULT value for a column in a CREATE TABLE or ALTER TABLE statement generated column definition in a CREATE TABLE or ALTER TABLE statement condition of a CHECK constraint CREATE TRIGGER statement (a NEXTVAL expression may be specified, but a PREVVAL expression cannot be specified) CREATE VIEW statement, CREATE METHOD statement or CREATE FUNCTION statement NEXTVAL expressions cannot be specified in the following contexts: CASE expression parameter list of an aggregate function subquery except in the fullselect of an INSERT, UPDATE or VALUES INTO statement SELECT statement for which the outer SELECT contains a DISTINCT operator SELECT statement for which the outer SELECT contains a GROUP BY clause join condition of a join SELECT statement for which the outer SELECT is combined with another SELECT statement using the UNION, INTERSECT or EXCEPT set operator nested table expression parameter list of a table function WHERE clause of the outer-most SELECT statement, DELETE or UPDATE statement ORDER BY clause of the outer-most SELECT statement select-cause of the fullselect of an expression, in the SET clause of an UPDATE statement IF, WHILE, DO...UNTIL, or CASE statement in an SQL routine The statement cannot be executed. User Response: Remove the reference to the sequence expression and resubmit the statement. sqlcode: -348 sqlstate: 428F9 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 13:09 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Производительность "автомигрированных" запросов в DB2 может упасть. Это связано 1) с тем, что у Oracle пустая строка и NULL одно и то же, и адекватный перевод условия на DB2 его усложняет; 2) если программисты PL/SQL злоупотребляли типом NUMBER без ограничений по размеру и точности, он будет переведен в какой-нибудь неэффективный тип (напр., FLOAT, когда по смыслу достаточно INTEGER). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 13:15 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Вот если разрабатывать новую систему под Oracle либо модифицировать старую, имея в виду миграцию в DB2 и строго придерживаясь определенных правил и ограничений, миграция будет проходить блестяще. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2003, 13:20 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Зато в FP4 которая будет DB2 8.2 Компилятор для SP не будет нужен... Один знакомый креньдель из IBM мне это сказал. Вообщето поддержка вызова SP из триггеров была заявлена в 8-ке. По всей видимости не успели сделать и значит появится это в одном из фикспаков я думаю всетаки в 4-ом. Ибо это будет 8.2. Кстати Виктор Знаешь на чем написан DB2 MTK Java + OCaml. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2003, 15:28 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Что еще хотелось бы для облегчения конвертации, так это более "правильную" поддержку Java. Сейчас там хранимые процедуры - это static-методы, а неплохо бы, чтобы каждому коннекту соответствовал экземпляр Java-класса, который возникал бы при первом обращении пользователем (т.е. коннектом) к хранимой процедуре и умирал бы только при разрыве коннекта, и мог иметь свои instance variables. Тогда это стало бы по возможностям ничуть не хуже и не слабее PL/SQL-пакетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2003, 15:41 |
|
Oracle9i -> DB2
|
|||
---|---|---|---|
#18+
Я еще (когда увидел переменные уровня пакета) задумался о хранимых процедурах на VA Smalltalk. Если для каждого коннекта грузить свою виртуальную машину... По памяти это может оказаться не так уж ужасно, учитывая, что IC грузятся в Shared Memory, а минуту-другую при коннекте пользователь подождет. Т.е. для небольшой системы с парой десятков пользователей решение могло оказаться приемлемым. Нам надо fenced no threadsafe DLL, которая держится в памяти и удерживает handle от smalltalk'чьей VM (свой для каждого коннекта), при завершении работы освобождает. Однако в руководствах к 8-ке такие вещи, как #define SQLZ_DISCONNECT_PROC 1 /* Unload Progam */ #define SQLZ_HOLD_PROC 2 /* Keep program loaded */ даже не упоминаются. ;-( ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2003, 15:52 |
|
|
start [/forum/topic.php?fid=43&msg=32043040&tid=1606564]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 148ms |
0 / 0 |