|
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?fid=43&gotonew=1&tid=1600504]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 474ms |
0 / 0 |