|
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 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1.
В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Возможно поможет эта информация...если в таблице нет constraint(или индексов). Т.е просто таблица без всяких индексов и ограничений. то в db2 удаляется мгновенно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 16:18 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Я бы, скорее, ожидал, что db2 должна быть быстрее - при прочих равных, ибо нет манипуляций с undo tbs. На скорость удаления должны ещё влиять настройки транзакционных логов, ибо транзакции сперва пишутся туда. Есть ещё три техники быстрого удаления всего: * truncate ... immediate (с разными опциями) * alter table ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE; commit * load (пустой источник) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 16:32 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1.
В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Вроде с диагностикой определились. В этой таблице есть столбец,что ссылается сам на себя. Код: plsql 1.
И именно он тормозит всё удаление,что и неудивительно рекурсия на себя. Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте. Когда я его добавил результат оракла xe 40 секунд oracle большого 20 секунд db2 express-c 3 min: 23 s: ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 16:40 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alirbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1.
В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Вроде с диагностикой определились. В этой таблице есть столбец,что ссылается сам на себя. Код: plsql 1.
И именно он тормозит всё удаление,что и неудивительно рекурсия на себя. Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте. Когда я его добавил результат оракла xe 40 секунд oracle большого 20 секунд db2 express-c 3 min: 23 s: И наконец может всем будет интересно. Создаю индекс по этому столбцу Код: plsql 1.
Oracle xe 2,8 s Db2 express-c => 2 s: 260 ms Oracle EE 1,281 c ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 17:00 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, неинтересно, особенно на таких мелких объёмах, с непонятной структурой, типами данных (к примеру, number или integer этот ваш GOODSREF_ID?), самими данными, неизвестными настройками, неизвестным железом. Берите пример со Льюиса (на книгу которого я сослался в названии одной из тем). Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Потом изучать поведение, нагрузку, статистику, как что меняется при изменении чего-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 18:04 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Да вот мне как раз неинтересно те примеры запускать. Они абстрактны...и меня слабо касаются. Я заинтересован в результате. Если уж тратить время ,то с пользой. .я перекладываю свою КИС с оракле на db2 на реальной работающей схеме. и хочу получить реально работающую на db2. или убедится в обратном,что это сделать проблематично. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 18:21 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Это был пример того, какие бывают примеры. А без знания основ не на чем основываться. Если хотите сравнивать производительность с пользой для себя, вы должны понимать хотя бы в обших чертах, как устроено то, что вы сравниваете. И как работают диски, и как данные лежат на этих дисках, и как принимает решение оптимизатор ( "Cost Based Oracle Fundamentals" by Jonathan Lewis), и как происходит сортировка... Льюис показал, что даже в наибанальнейшем на первый взгляд запросе SELECT * FROM T1 есть много интересного. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 18:42 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Вот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 18:45 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaВот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны. Согласен ...многое неизвестно... Но есть и общее= Oracle XE по дефолту И Db2 express-c по дефолту. (Когда заходишь во что-то новое дефолтное дружественное окружение очень важно....чем оно дружественнее тем степень вхождения ниже(можно быть менее таким крутым спецом и тратить меньше времени на мануалы)) Типы данных одинаковы.Количество строк одинаково ...констраинты одинаковы.Индексирование столбцов одинаково. В оракле я могу сказать Вам параметры...а в DB2 не могу...я ещё не знаю как их получить. ещё до этого не дошёл..(пока другие вещи интересуют более критичные.) Выкладываю сюда свои наблюдения на пути . Определённые выводы сделать можно...например на проиндексированном столбце DB2 express-c чуть выигрывает у Oracle xe ,а на неприндексированном сильно отстаёт. Для меня уже какой-то опыт...если я увижу ,что в следующих тестах моей КИС будет сильно заваливаться производительность ,-первым делом посмотрю,"-А все ли нужные столбцы проиндексированы ". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 19:04 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Не забывайте статистику собирать, a la runstats on table xxx with distribution and detailed indexes all а про индексы спрашивайте у утилиты db2advis. А одинаковые условия не означают правильных или справедливых условий. Напр., X выиграл у Y матч в шахматы в нормальных условиях. А если их заставили бы играть обоих вниз головой или по пояс в холодной воде, результат точно остался бы неизменным? Oracle, если я правильно помню, понимает слово INTEGER (подменяя на NUMBER с точностью 0) - тогда, если вы пройдётесь по своим таблицам, подменяя NUMBER на INTEGER там, где целое по смыслу, вроде суррогатных ключей, результат может измениться, а ведь условия по-прежнему равны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 19:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Забыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется. По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 10:09 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaЗабыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется. По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции. Благодарю...посмотрю обязательно...когда перелью данные...и адаптирую к синтаксису pl/sql пакеты. Я обслуживаю в основном мелкий и средний бизнес.(крупного несколько организаций) так что супер-пупер объёма данных там не будет ....в самой большой таблице максимум 15-25 миллионов строк. (Но oracle xe и с этого объёма "вырастает" ,особенно по оперативной памяти) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 11:30 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Положим, диск SAS, время чтения одного блока 4мс. Доступ по индексу глубиной 3. На поиск 1 строки уйдут 4 чтения, 16мс. 62 строки в секунду - каково? За какое время будет прочитан миллион? Я, конечно, супер-утрирую, но неудачное расположение данных и/или неудачный план дорого стоят. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 12:16 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка), деактивируется, когда все коннекты ушли (при этом чистятся буферный пул и т.п.). В однопользовательском режиме это может быть довольно заметно. Можно явно активировать базу - ACTIVATE DB <имябазы>. Тогда перед db2stop её надо будет деактивировать (DEACTIVATE DB <имябазы>), или придётся воспользоваться db2stop force. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 07:57 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка), Не ну я работаю то в clpplus...там присоеденился и всё. Ещё скачал IBM admin studio.(Но что-то мне в ней совсем не комфортно) И в студии есть настройка типа каждый раз новое соединение или использовать одно.(у меня использовать одно) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 12:40 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Когда мы меняем данные в Oracle, undo-информация идёт в undo tablespace, а redo, как для меняемых данных, так и для undo tablespace, идёт в redo log, который впоследствии будет заархивирован. Когда мы меняем данные в DB2, и undo, и redo-информация идёт в транзакционный лог, который впоследствии будет заархивирован. Что произойдёт, если транзакция очень старая, а её нужно отменить? DB2 захочет получить архивный лог обратно. При crash recovery она захочет все архивные логи с того момента. А это было давно, и их уже нет... Бекапы несколькодневной давности не помогут тоже - они захотят те же логи, которых нет. Я с таким налетал на пару неприятностей: * странное поведение nfs-ресурса, который успешно записывал архивные логи, но обратно не отдавал (что интересно, по ftp и самбе файлы вполне себе были доступны, а по nfs их в списке не было) * "застрявшая" на пару месяцев транзакция (причём, возможно, не юзеров, а какого-то системного процесса). Для первого желательно держать несколько зеркал (одно, возможно, на локальном диске), Для контроля второго поможет просмотр SYSIBMADM.DB_HISTORY (с operation='B'), на самотёк пускать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:08 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alНе ну я работаю то в clpplus...там присоеденился и всё. Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:10 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsairbis_alНе ну я работаю то в clpplus...там присоеденился и всё. Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают. А я другого инструмента и не знаю, clplus похож на oracle sqlplus...только clplus на java. а с ibm studio(которая тоже на java) я не подружился. Новый sqldeveloper от oracle можно заточить на db2...как нибудь попробую.(тем более подходит время большие пакеты адаптировать к db2) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:28 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaКогда мы меняем данные в Oracle, undo-информация идёт в undo tablespace, а redo, как для меняемых данных, так и для undo tablespace, идёт в redo log, который впоследствии будет заархивирован. Когда мы меняем данные в DB2, и undo, и redo-информация идёт в транзакционный лог, который впоследствии будет заархивирован. Что произойдёт, если транзакция очень старая, а её нужно отменить? DB2 захочет получить архивный лог обратно. При crash recovery она захочет все архивные логи с того момента. А это было давно, и их уже нет... Бекапы несколькодневной давности не помогут тоже - они захотят те же логи, которых нет. Я с таким налетал на пару неприятностей: * странное поведение nfs-ресурса, который успешно записывал архивные логи, но обратно не отдавал (что интересно, по ftp и самбе файлы вполне себе были доступны, а по nfs их в списке не было) * "застрявшая" на пару месяцев транзакция (причём, возможно, не юзеров, а какого-то системного процесса). Для первого желательно держать несколько зеркал (одно, возможно, на локальном диске), Для контроля второго поможет просмотр SYSIBMADM.DB_HISTORY (с operation='B'), на самотёк пускать нельзя. До бакапов и redo логов вообще ещё не доходил... (Я думаю по дефолту у меня не в режиме архивирования логов) но благодарю за информацию. если транзакция очень старая, а её нужно отменить? Вообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:35 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alВообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) Не помню я там именно такого поведения. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:39 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Величина undo tablespace ограничена (тогда как архивных логов может быть сколько угодно), по этому поводу Oracle может принять какие-то меры. А вот чтобы "если сеанс прожил такое-то время с незакрытой транзакцией, её надо прибить" - абсолютно не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:46 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsairbis_alВообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) Не помню я там именно такого поведения. Тут тоже надо будет поэкспериментировать. В оракле есть параметр limit idle_time Сам не DBA не знаю...НО неоднократно наблюдал воочию такую картину. Что если пользователь не вышел из КИС ....дня через два.пробовал дальше в ней работать.(естественно ни сервер,ни комп клиента не перегружались) то писалось что сессия отключена. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 09:59 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Да, действительно есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 10:04 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
На эту тему db2gov. Но у него написано "With the workload management features introduced in DB2® Version 9.5, the DB2 governor utility was deprecated in Version 9.7 and might be removed in a future release.". Но Workflow Management - опция за дополнительные деньги. Но надо проверять, действительно ли db2gov всё ещё работает, да ещё на Express-C. И на db_history всё равно стоит посматривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 10:27 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
И ещё одна вещь, на которую может больно налететь ораклист - подавляющее количество DDL не автокоммитит после себя. В принципе, это хорошо и правильно и так и должно быть, но если забыть закоммитить/отроллбачить за собой, учитывая блокировки на системных каталогах, можно незаметно для себя всех подвесить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2015, 15:05 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Добрый день.... Ещё нужна помощь или рекомендация. Есть схема shop (Реального linux userа нет) Код: plsql 1.
Есть скомпилированный пакет pl/sql goodspackage. Компилирую новый пакет(в этой же схеме) в нём есть вызов этого goodspackage. и если в пакете записано так. Код: plsql 1.
Отгребаю ошибку компиляции Код: plsql 1. 2. 3.
Но как только я делаю вот так(с прямым указанием схемы) Код: plsql 1.
То компилится всё нормально. Как мне избежать такого хардкодного прямого назначения схемы. (Для меня это важно,- Ведь всё решение может быть и в другой схеме) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2015, 19:54 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Да, это ещё один занятный момент. Просто установить текущую схему недостаточно. Прибавьте http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0001014.html?cp=SSEPGG_10.5.0&lang=en SET PATH statement когда-нибудь может пригодиться http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0011875.html?cp=SSEPGG_10.5.0&lang=en SET CURRENT PACKAGE PATH statement (имея в виду, что PACKAGE здесь совсем не то, что PL/SQL PACKAGE, хотя связь может быть; как и термин partition в DB2 изначально имел весьма мало общего с ораклячьим). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2015, 00:07 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
В старые времена встроенного языка a la SQL PL и тем более PL/SQL в DB2 не было, это вообще относительно недавнее приобретение. "Пакет" относится вот к чему: * вы пишете программу/хранимую процедуру, используя Embedded SQL (например, на C) - исходник для примера пусть имеет расширение .sqc * затем вы натравливаете на исходник препроцессор - для примера получается два файла, с расширениями .c и .bnd * файл.bnd вы привязываете (bind) к базе, и там возникает этот самый пакет - набор sql-выражений и их статических планов. Поскольку планы статические, для учёта новой статистики и новых индексов надо время от времени осуществлять перепривязку (впоследствии появились опции REOPT ONCE и REOPT ALWAYS). (я отродясь этим не пользовался, только динамикой - немного в Delphi и всё остальное время в Smalltalk, поэтому не помню ряд подробностей). Уточнение - встроенный SQL не обязан быть статическим, а не-встроенный SQL не обязан быть динамическим, хотя "обычно" это так. Вы во встроенном SQL таки можете динамически собрать SQL-выражение и выполнить. А "динамическое" приложение, использующее CLI, можно обмануть, оно будет как бы по-прежнему работать с динамикой, но реально будет работать со статикой. SQL PL, который появился "недавно", сперва автоматически транслировался на C с Embedded SQL, то есть у хранимой процедуры есть пакет! Потом это было заменено на интерпретатор, но, насколько я понимаю, пакеты никуда не подевались. Потом добавился ещё один синтаксис, PL/SQL, и пошла/добавилась путаница в терминологиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2015, 09:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaДа, это ещё один занятный момент. Просто установить текущую схему недостаточно. Прибавьте http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0001014.html?cp=SSEPGG_10.5.0&lang=en SET PATH statement когда-нибудь может пригодиться http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0011875.html?cp=SSEPGG_10.5.0&lang=en SET CURRENT PACKAGE PATH statement (имея в виду, что PACKAGE здесь совсем не то, что PL/SQL PACKAGE, хотя связь может быть; как и термин partition в DB2 изначально имел весьма мало общего с ораклячьим). Благодарю Код: plsql 1.
Помогло. Просто без system path Код: plsql 1.
ругалось на shop.goodspackage.raise_application_error.(т.е системную raise_application_error. он искал только в shop). А это нужно только для компиляции или вообще в приложении теперь после соединения первым делом дать команду Код: plsql 1.
чтобы Код: plsql 1.
Отработало. (макро имя &shema КИС меняет на соответствующую строку реальную схему СУБД,что прописано в стартовом инициализационном xml файле) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2015, 10:39 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Статика на то и статика, чтобы проверило права, разрешило пути, скомпилировало планы и легло в базу, пока не позовут. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2015, 11:00 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Коллеги,вот ещё нужна помощь. Сам не разобрался по ошибке. Выполняю запрос Код: plsql 1. 2.
Отгребаю ошибку Код: html 1. 2.
На сайте IBM не догоняю что нужно сделать https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.messages.sql.doc/doc/msql01585n.html Далее делаю без order Код: plsql 1.
Выполняется всё пучком. Индексирую столбец module ...теперь с order Код: plsql 1.
Всё выполняется... В таблице 9 записей...я не хочу создавать индекс по этому полю. Пробовал создать temporary tablespace на 50м как user так и system...не помогает. P.s(Нет ни clob ни blop ни raw полей..все простые типы...) desc u$module Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 15:16 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, С каким размером страницы (блока по-оракловому) вы создавали system temporary tablespace? Дайте вывод запросов: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 15:46 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_al, С каким размером страницы (блока по-оракловому) вы создавали system temporary tablespace? Дайте вывод запросов: Код: sql 1. 2. 3. 4. 5. 6.
Возможно я создавал неправильно. Код: plsql 1. 2.
PREFETCHSIZE Это мне просто подсказал синтаксический анализатор после обычной по оракловому команды create user temporary tablespace shoptemp SIZE 50m;(Там написало,что нет такого,а возможно требуется PREFETCHSIZE ) (К интернету был доступ ограничен). Когда я попробовал то удалил.(опять создал заново сейчас) Вывод команд Код: html 1. 2. 3. 4.
(А пользовательского shoptemp не вижу) На второй запрос Код: html 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 23:00 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
prefetchsize=db_file_multiblock_read_count*page_size OVERHEAD=IOSEEKTIM TRANSFERRATE=page_size/IOTFRSPEED слева DB2-шное, справа ораклячье. При этом gather_system_stats отсутствует, так что до значений параметров догадывайтесь сами (можно ораклячий Orion позапускать), зато настраивается индивидуально для каждого tablespace, а не для всей базы, и возможно параллельное чтение без параллельного выполнения запроса. page_size в 4K, пожалуй, неудачно. До очень-очень недавних пор (10.5) строки в таблице не выходили за размеры страниц табличного пространства, так что вы легко можете налететь на невозможность создания каких-то таблиц. Вы здесь ( http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html ) видите предложение создавать базу сразу с размером страницы 32 K db2 create database mydb pagesize 32 K (хотя codepage 1251 стоит указать, иначе база будет юникодной). При этом диски устроены так, что время чтения 4-хкилобайтной и 32-хкилобайтной страниц примерно одинаково! Ну, и с сортировкой у вас проблемы из-за маленького размера страницы, хотя здесь вы можете обойтись без пересоздания базы и просто сделать TS со страницей побольше (а перед этим создать bufferpool с такой страницей). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:13 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor Metelitsa, page_size в 4K, пожалуй, неудачно. До очень-очень недавних пор (10.5) строки в таблице не выходили за размеры страниц табличного пространства, так что вы легко можете налететь на невозможность создания каких-то таблиц. Вы здесь ( http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html ) видите предложение создавать базу сразу с размером страницы 32 K db2 create database mydb pagesize 32 K Так я по дефолту создавал...(уже говорил,что правильный дефолт упращает вхождение в новое...все сразу наскоком не осилишь). Если IBM знает ,что 4к плохо...пусть мне сразу 32к на команду по дефолту даёт. :-) (хотя codepage 1251 стоит указать, иначе база будет юникодной). Я срузу юникодную делаю... Так а сейчас то мне что делать? Базу получается пересоздавать.? (И экспорт импорт какой нибудь,чтоб данные перегнать?) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:24 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, Вам пишется, что нет системного временного пространства с подходящим размером страницы . Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:37 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_al, Вам пишется, что нет системного временного пространства с подходящим размером страницы . Код: sql 1. 2. 3.
Благодарю ...Это помогло. (Я понимаю,что пишется,что нет некоторых ТУ(Тех.условий)...но я не знал как их создать :-) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:41 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Изначально у DB2 (for OS/2) был только один размер страницы - 4K, потому это дефолт. На http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html рекомендация по созданию базы есть, хотя, возможно, автору следовало чётче объяснить, почему. Я думаю, что базу лучше пересоздать, и лучше сейчас, чем потом, потому потом будет труднее. Хотя это и дело вкуса, поскольку вы можете создавать табличные пространства с разным размером страницы в одной базе. На тему переноса данных см. db2move. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:50 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, Часто в решении проблем помогает команда ? командного процессора db2. В этой команде вы можете указать код ошибки, который вы получили, и оно довольно подробно объяснит, что произошло и что надо сделать. Вот пример для вашего случая: > db2 "? SQL1585N" SQL1585N A system temporary table space with sufficient page size does not exist. Explanation: One of the following conditions could have occurred: 1. The row length of the system temporary table exceeded the limit that can be accommodated in the largest system temporary table space in the database. 2. The number of columns required in a system temporary table exceeded the limit that can be accommodated in the largest system temporary table space in the database. The system temporary table space limits depend on its page size. These values are: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
User response: Create a system temporary table space of a larger page size supported, if one does not already exist. If such a table space already exists, eliminate one or more columns from the system temporary table. Create separate tables or views, as required, to hold additional information beyond the limit. sqlcode: -1585 sqlstate: 54048 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:55 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaИзначально у DB2 (for OS/2) был только один размер страницы - 4K, потому это дефолт. На http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html рекомендация по созданию базы есть, хотя, возможно, автору следовало чётче объяснить, почему. Я думаю, что базу лучше пересоздать, и лучше сейчас, чем потом, потому потом будет труднее. Хотя это и дело вкуса, поскольку вы можете создавать табличные пространства с разным размером страницы в одной базе. На тему переноса данных см. db2move. Чтоб пересоздать базу,мне ещё рано...я пока не знаю вообще никаких параметров.(Ну кроме того ,что выше по топику...и то я просто повторил...сути пока не понимаю) Пока я исследую...насколько возможно КИС переложить на DB2...И возможно ли вообще.(И если возможно буду уже глубоко вникать...и оптимизировать) Действительно они(IBMцы) довольно много сделали для совместимости с ораклом. И даже первые простые интерфейсные формы КИС у нас заработали под DB2. Пока споткнулись об именные параметры(но это на форму java надо). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:57 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_al, Часто в решении проблем помогает команда ? командного процессора db2. В этой команде вы можете указать код ошибки, который вы получили, и оно довольно подробно объяснит, что произошло и что надо сделать. Вот пример для вашего случая: > db2 "? SQL1585N" SQL1585N A system temporary table space with sufficient page size does not exist. Explanation: One of the following conditions could have occurred: 1. The row length of the system temporary table exceeded the limit that can be accommodated in the largest system temporary table space in the database. 2. The number of columns required in a system temporary table exceeded the limit that can be accommodated in the largest system temporary table space in the database. The system temporary table space limits depend on its page size. These values are: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
User response: Create a system temporary table space of a larger page size supported, if one does not already exist. If such a table space already exists, eliminate one or more columns from the system temporary table. Create separate tables or views, as required, to hold additional information beyond the limit. sqlcode: -1585 sqlstate: 54048 Благодарю...буду пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 09:59 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_alПока споткнулись об именные параметры(но это на форму java надо).Если это jdbc для db2jcc(4).jar, то не надо на форум java - они вас всё равно сюда пошлют. Named parameter markers in JDBC applications ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 10:02 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_alПока споткнулись об именные параметры(но это на форму java надо).Если это jdbc для db2jcc(4).jar, то не надо на форум java - они вас всё равно сюда пошлют. Named parameter markers in JDBC applications Благодарю за ссылку ...кое в чём серьёзно помогла .(в частности более подробно озвучивать исключения) К именованным параметрам не пригодилась.. Я пользуюсь фреймвоком от оракла ADF... И внутри себя в глубине он назначает нумерованные параметры...разница в том что для оракла можно Код: plsql 1.
И в jdbc можно Код: java 1. 2. 3.
Для DB2 если указал именные параметры при инициализации то можно только так Код: java 1. 2. 3. 4. 5.
Код: plsql 1.
Но у меня была подобная подстройка-парсер-заменитель.(и КИС не хардкодная) И как бы проблема решилась. Продвинулись чуть дальше...ещё больше форм заработало и столкнулись вот с таким. если запрос использующий деление ,умножение Код: plsql 1.
то DB2 возвращала тип decfloat(Это типа 2.2+Е11) И оракловый java фреймвок (даже последний) не знал этот тип.(Чтоб привести его к java типу) (Благо в последней версии ADF дали исходники и по ним мы эту проблему вычислили ) сделали cast приведения типа запрос Код: plsql 1.
И иногда Код: plsql 1. 2.
В некоторых случаях надо делать привидение типов ,а некоторые select sum отрабатывают нормально... Пока закономерность-принцип не понял. Но там пишут с округлением для decfloat могут быть проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 17:32 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
irbis_al, Надо знать типы данных операндов. Возвращаемые типы данных для любого запроса можно полчить с помощью команды describe из командного процесора db2: $ db2 "describe select sum(price*quantity) from table(values (cast(1 as decimal), cast(2 as decimal))) t (price, quantity)" к команде describe есть реляционный интерфейс: Код: sql 1.
Процедура возвращает result set с описанием типов полей. decfloat(Это типа 2.2+Е11): обычно это представление типа double, а не decfloat. Хотя, ваша программа вывода результатов может иметь на этот счет свое мнение. Аккуратнее с cast(... as decimal). Это равносильно cast(... as decimal(5, 0)). Т.е. можно ошибку переполнения получать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 18:19 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Mark Barinsteinirbis_al, Надо знать типы данных операндов. Возвращаемые типы данных для любого запроса можно полчить с помощью команды describe из командного процесора db2: $ db2 "describe select sum(price*quantity) from table(values (cast(1 as decimal), cast(2 as decimal))) t (price, quantity)" к команде describe есть реляционный интерфейс: Код: sql 1.
Процедура возвращает result set с описанием типов полей. decfloat(Это типа 2.2+Е11): обычно это представление типа double, а не decfloat. Хотя, ваша программа вывода результатов может иметь на этот счет свое мнение. Аккуратнее с cast(... as decimal). Это равносильно cast(... as decimal(5, 0)). Т.е. можно ошибку переполнения получать. Благодарю...попробуем определять типы..таким способом... Насчёт Аккуратнее с cast(... as decimal). Это равносильно cast(... as decimal(5, 0)). Т.е. можно ошибку переполнения получать. Тоже спасибо...не знал что оно до 5 знаков... Но в принципе select cast ( ...as decimal(14,4)) Тоже работает. (поэтому sqlИ на cast переделаем с нужной точностью) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 19:03 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
Victor MetelitsaGVF112GVF, Кстати, нашёл что-то TPC-C-подобное, расчитанное и на DB2: http://sourceforge.net/projects/tpccruner/?source=directory (сомнительное, правда, потому что написано в стиле типичных Java-программистов - но, с другой стороны, может быть этим и ценно). Случайно наткнулся на что-то, могущее быть полезным для тестов вроде TCP-C: Finding and releasing the handbrakes on JDBC: enableExtendedDescribe https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/enableextendeddescribe.?lang=en ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2016, 20:56 |
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
---|---|---|---|
#18+
http://www.hammerdb.com/ - DB2 наконец поддержана (правда, не изучал пока вопрос, что и как). "Зато" в Technical Library http://www.ibm.com/developerworks/views/data/libraryview.jsp?site_id=1&contentarea_by=Information management&sort_by=&sort_order=2&start=1&end=100&topic_by=&product_by=&type_by=All Types&show_abstract=true&search_by=&industry_by=&series_title_by= - последняя статья датирована 9-м августа. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2016, 11:46 |
|
|
start [/forum/topic.php?all=1&fid=43&tid=1600504]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 208ms |
0 / 0 |