|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
FYI ... Oracle to DB2 Conversion Guide: Compatibility Made Easy - http://publib-b.boulder.ibm.com/abstracts/sg247736.html?Open Kind regards, Vadim. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 15:33 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
GVF112GVF, предлагаю выполнить код на Oracle и DB2, сравнить время и предложить сделать что-нибудь, чтобы разница была поменьше. (этот код взят из HammerDB, и я над ним ещё немного понадругался). Я знаю, что замена number на integer, bigint и double там, где это имеет смысл, даёт некоторое улучшение, и полагаю, что переписывание кода на DB2-шные inline-функции позволит даже сильно обогнать (именно благодаря инлайнингу). Но если этим не заниматься? Кстати, нашёл что-то TPC-C-подобное, расчитанное и на DB2: http://sourceforge.net/projects/tpccruner/?source=directory (сомнительное, правда, потому что написано в стиле типичных Java-программистов - но, с другой стороны, может быть этим и ценно). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 23:04 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Я вот пытаюсь перевести базу с Oracle на db2 и ряд вопросов. (Вроде эту тему можно продолжать ибо она как раз об этом) Я скачал явовский TPC...а для чего он? в readme написано. Кстати очень неудобно что нет FAQ как в форуме оракле для новичков,чтобы вхождение было попроще. (я например научался с поднятием базы(У меня linux) чтоб он порт прослушивал пока db2 update dbm cfg using svcename 50000 не сделал. ) Я присоединился к базе через clpplus Код: plsql 1.
Почему то не работает. (погуглив)Надо использовать Код: plsql 1.
(а я то хотел нахрапом с оракле на db2 вскочить :-) ) И вот помогите понять парадигму(техническую философию). Понять schema и user. В оракле если database user имеет таблицы...это уже как schema. Код: plsql 1.
Код: plsql 1. 2. 3. 4.
Код: plsql 1. 2.
Как мне это в db2 повторить сделать.?? гугл про userа в db2 отвечает ,чтотон связан c linux userом...А схема https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000925.html авторизуется... Разъясните пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 13:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Если вы создадите базу c Oracle-совместимостью, dual должен быть. http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html Что касается Код: sql 1.
, запрос Код: sql 1.
более db2-шный путь. (Здесь и далее под DB2 подразумевается DB2 for Linux,Unix,Windows (LUW)) Код: sql 1. 2. 3.
по-db2-шному более удобно записывать как Код: sql 1.
и, чтобы два раза не вставать, Код: sql 1. 2. 3.
можно записать как Код: sql 1. 2. 3.
А что касается юзеров, в базе их нет и потому create user тоже нет. Юзеров и группы определяют в операционной системе (кстати, для линуха очень большие ограничения в длине имени - 8 символов, преодолели совсем недавно - в DB2 10.5 fixpak 5). Когда коннектитесь (я традиционно использую connect to база user имя using пароль , хотя в ряде случаев работает connect to base - это как в Oracle connect / ), DB2 спрашивает у операционки, есть ли такой с таким паролем, и интересуется также группами, в которых он состоит. Поэтому, в отличие от Oracle, схема и юзер не привязаны друг к другу, можно давать grant'ы несуществующим юзерам, удаление юзера никак не сказывается на базе и т.д. Текущая схема совпадает с именем юзера, её можно менять: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:01 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Инсталляторов DB2 под линухом два (не считая rpm-пакет) - текстовый и GUI-вый. Второй, запускаемый от root'а, делает работу полностью, а первый, насколько я помню, только частично (т.е. он для любителей поэкономить байты и поработать руками). Я пользуюсь вторым. TPC-C - http://www.tpc.org/tpcc/default.asp HammerDB - http://www.hammerdb.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:11 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Если вы создадите базу c Oracle-совместимостью, dual должен быть. http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html Ну я только начинаю..до таких ньюансов ещё не дорос.(кстати? навскидку не увидел как создать с совместимостью dual) И ещё для чего TPC? А что касается юзеров, в базе их нет и потому create user тоже нет. Юзеров и группы определяют в операционной системе Да..я уже до этого допёр... Я соединяюсь с db2 любым OS юзером. И это конечно первый "некомильфо". Бывают случаи ,что надо просто перекинуть файлы базы данных на другой сервер. В случае с ораклом нет проблем...тут же всё завелось. а db2 надо учесть внешние зависимости(в частности os users) А если юзеров много...запаришься создавать. Помимо этого дополнительные тёрки между linux admin и admin db2... Так же в нашей КИС привиллигированный пользователь мог созавать из своего сеанса(хоть из австралии) новых database user... А тут сложность,которую мне предстоит решить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, а всё увидел по ссылке выше про tpc ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:23 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaИнсталляторов DB2 под линухом два (не считая rpm-пакет) - текстовый и GUI-вый. Второй, запускаемый от root'а, делает работу полностью, а первый, насколько я помню, только частично (т.е. он для любителей поэкономить байты и поработать руками). Я пользуюсь вторым. TPC-C - http://www.tpc.org/tpcc/default.asp HammerDB - http://www.hammerdb.com/ У меня не было gui инстаоятора(db2 express-c) после запуска в консоле(кстати порадовало,что на русском сообщения были в консоле..) у меня создалось /opt/ibm/V10.5/db2 Я создал пользователя ос db2. под рутом db2icrt -a server -u db2 db2 su db2 db2start db2 update dbm cfg using svcename 50000 clpsqplus create database db2 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:30 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Dual http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html ищите в тексте ниже "Enabling to DB2 is as easy as drag and drop", как создавать базу с Oracle-совместимостью. Коннект любым юзером. См. по ссылке http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001941.html?cp=SSEPGG_10.5.0/3-6-2-4-21 слово RESTRICTIVE Перенос юзеров. а) насколько я понимаю линух, можно даже вырезать кусок файла с юзерами и паролями и вклеить на другой машине (если организационными мерами обеспечить непересекаемость UID и GID; без home-каталогов обойдутся) б) есть такое слово LDAP - я его не осилил и никогда не пытался, но именно это должно быть ответом на ваш вопрос в) тёрки с линухадминистратором - это, конечно, плохо, есть море тонкостей, что стоит учесть - что при работе с Oracle, что при работе с DB2, уже даже при начальной установке ОС на сервер, да ещё и до того, а линухадминистраторы, увы... Инсталляторов в комплекте два - один, вроде бы, db2install, второй db2setup. Был ещё rpm-пакет, где ещё больше ручной работы... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:14 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Благодарю dual заработал (Вдруг кому то надо будет) Надо сделать db2set DB2_COMPATIBILITY_VECTOR=ORA ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:57 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
DB2_COMPATIBILITY_VECTOR - как и многое, это серьёзная тема, требующая внимательного изучения. Как минимум, если нужна oracle-совместимость, задавайте ORA *до* создания базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:22 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaDB2_COMPATIBILITY_VECTOR - как и многое, это серьёзная тема, требующая внимательного изучения. Как минимум, если нужна oracle-совместимость, задавайте ORA *до* создания базы. Да наверное, так и есть ибо ранее синтаксис(Number(1) Код: plsql 1.
Не работало. А после пересоздания заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:49 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, Продолжаю изучать совместимость... Простое..работает Перешёл к менее банальным вещам. пакет dbms_sql Мой оракловый пакет(package body) даже скомпилился...но не отрабатывает. ошибка. Спо Код: html 1.
Более того ...беру стандартый пример с сайта ibm https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055145.html#r0055145__desc_tab_dfn?lang=ru Вот мой код(изменена только 4 строчка select * from table; (таблица section существует...) Код: 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.
И получаю ту же ошибку на стандартном примере Код: plsql 1. 2. 3.
Ну как тут может какого-то ресурса не хватать??? ...у меня в этой тестовой базе "пол таблицы и одна восьмая pl/sql кода." ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 23:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, И тут разобрался...там мелким почерком :-) Usage notes This procedure requires a user temporary table space with a page size of 4K; otherwise it returns an SQL0286N error. You can create the user temporary table space with this command: CREATE USER TEMPORARY TABLESPACE DBMS_SQL_TEMP_TBS ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 23:24 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
По производительности - между create table test (id number(1)); и create table test (id integer); может быть существенная разница. Надо смотреть, на что "реальное" DB2-шное этот number смапится, у DB2, в отличие от Oracle, довольно много числовых типов с довольно разной точностью и производительностью. Между a) PL/SQL-ной процедурой/функцией (а также и SQL/PL-ной процедурой) и b) SQL/PL-ной функцией с BEGIN ATOMIC..END (или, ещё лучше, вообще без этих скобок, чисто с одним RETURN) может быть не просто существенная, а гигантская разница в скорости (во втором случае выражения инлайнятся, и это даёт эту разницу). (Очевидно, часть процедур наверняка можно переписать как функции, даже те, у которых много выходных параметров, и при проблемах с производительность имеет смысл это сделать). То же самое относится к триггерам - они могут инлайниться или нет, в зависимости от того, как написаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 23:56 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alirbis_al, И тут разобрался...там мелким почерком :-) Usage notes This procedure requires a user temporary table space with a page size of 4K; otherwise it returns an SQL0286N error. You can create the user temporary table space with this command: CREATE USER TEMPORARY TABLESPACE DBMS_SQL_TEMP_TBS Вот тут даже не знаю что сказать...вчера "заводской" код отрабатывал (имлй отрабатывал) сегодня запустил базу и мой код и "заводской примерный" что выше в спойлере.(сюда тоже положу) Код: 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.
Выдаёт блин ошибку Код: html 1. 2. 3. 4.
Вообще не понятно...вчера вечером всё работало ...потушил базу db2stop штатно. сегодня хотел продолжить изучение..такая лажа. И на сайте по этой ошибке ничего толком то и нет. Более того...перелогиниваюсь...запускаю этот же скрипт что выше и уже всё заработало...что за глюки...или я что-то не так делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:23 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, Вот ещё небольшой такой взгляд глазами "ораклиста" Выполняю скрипт Код: plsql 1. 2. 3. 4. 5. 6.
Получаю ошибку Код: plsql 1. 2. 3.
И вот "некомильфо" не выдаются весь стек ошибки. Что где вызывалось на кокой строке в пакете и на какой последней строке в пакете споткнулся. Оракле бы выдал типа Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 14:08 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, По этой проблеме Ошибка рядом со строкой 1: SQL0577N User defined routine "SYSIBMADM.DBMS_SQL.IMP_DESCRIBE_COLUMNS" (specific name "DBMS_SQL_IMP_DESCRIBE_COLUMNS") attempted to modify data but was not defined as MODIFIES SQL DATA. Я определил в чём дело.(влруг кто-то за мной из ораклистов будет пытаться переехать,чтоб дважды на грабли не наструпали) я сделал вначале после запуска Код: plsql 1.
По оракловскому.(я хотел сразу результат увидеть) В этой процедуре было внутри dbms_sql.describe_cloumn. Так по-оракловскому db2 не позволяет. И дальше она блокирует все вызовы dbms_sql.describe_cloumn.(в том числе и штатные) Пока не сделаешь rollback; ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 14:34 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Заливаю данные из оракловой базы и столкнулся с проблемой. У меня есть таблица товаров В ней есть Символьный уникальный столбец kod и barcode(штрихкод) И эти столбцы могут быть в определённых записях пустыми.!!!! (где есть штрихкод там пустой код) Где есть код там как правило пустое поле штрихкод. И вместе они могут быть пустыми. И вот чудеса ,-DB2 меня обязывает, для того чтобы создать unique constraint мне надо указать что столбец NOT NULL....что в принципе, нарушает фундаментальную логику моей КИС. Я погуглил и там советуют сделать unique index.... НО ...в DB2 он создаётся по типу INTEGER, а у меня эти поля Varchar2. (и numberом их сделать нельзя ибо там есть и символы) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 21:16 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, И что, вот это не работает? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 22:02 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_al, И что, вот это не работает? Код: sql 1. 2. 3.
Благодарю получилось ключевое слово тут exclude null keys; В оракле такого выражения нет а в гугле что-то не попадалось. И Вычисляемый столбец рекомендовали и триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 22:25 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Вот тоже не нашёл(возможно плохо искал..но примеры с таким же решением) Можно ли организовать,чтобы DB2 мне "прокричало" ограничение. чтоб пользователь сразу знал,где накосячил. Сейчас мне если уникальный код нарушить отвечает Код: plsql 1.
а уникальный штрихкод нарушить отвечает Код: plsql 1.
цифры 3 и 4 вообще ни о чём не говорят. Оракле например отвечает типа Код: html 1.
Код: html 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 22:42 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, $ db2 "? SQL0803N" SQL0803N One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "<index-id>" constrains table "<table-name>" from having duplicate values for the index key. Explanation: The INSERT or UPDATE object table "<table-name>" is constrained by one or more UNIQUE indexes to have unique values in certain columns or groups of columns. Alternatively, a DELETE statement on a parent table caused the update of a foreign key in a dependent table "<table-name>" that is constrained by one or more UNIQUE indexes. Unique indexes might support primary keys or unique constraints defined on a table. The statement cannot be processed because completing the requested INSERT, UPDATE or DELETE statement would result in duplicate column values. If the index is on an XML column, the duplicate values for the index key may be generated from within a single XML document. Alternatively, if a view is the object of the INSERT or UPDATE statement, it is the table "<table-name>" on which the view is defined that is constrained. If "<index-id>" is an integer value, the index name can be obtained from SYSCAT.INDEXES by issuing the following query: SELECT INDNAME, INDSCHEMA FROM SYSCAT.INDEXES WHERE IID = <index-id> AND TABSCHEMA = 'schema' AND TABNAME = 'table' where 'schema' represents the schema portion of "<table-name>" and 'table' represents the table name portion of "<table-name>". Только имена схемы и таблицы в запросе - в верхнем регистре. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 23:30 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alБлагодарю получилось ключевое слово тут exclude null keys; В оракле такого выражения нет а в гугле что-то не попадалось. И Вычисляемый столбец рекомендовали и триггер. exclude null keys - для DB2 это довольно новая вещь, поэтому и не попадалось. И в Oracle, конечно, такого нет, потому что там все индексы такие. Кстати, если помните смысл ораклячьего create index ... compess XXX; у DB2 индексы такие по дефолту, т.е. на неуникальном индексе напротив одного index key может лежать куча RID'ов, что может сэкономить кучу места на диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 09:56 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Добрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1.
В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 15:46 |
|
|
start [/forum/topic.php?fid=43&fpage=11&tid=1600504]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 129ms |
0 / 0 |