powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Oracle to DB2 Conversion Guide: Compatibility Made Easy
72 сообщений из 72, показаны все 3 страниц
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097250
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FYI ...

Oracle to DB2 Conversion Guide: Compatibility Made Easy -
http://publib-b.boulder.ibm.com/abstracts/sg247736.html?Open

Kind regards,
Vadim.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097424
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVF,

предлагаю выполнить код на Oracle и DB2, сравнить время и предложить сделать что-нибудь, чтобы разница была поменьше.
(этот код взят из HammerDB, и я над ним ещё немного понадругался).

Я знаю, что замена number на integer, bigint и double там, где это имеет смысл, даёт некоторое улучшение, и полагаю, что переписывание кода на DB2-шные inline-функции позволит даже сильно обогнать (именно благодаря инлайнингу). Но если этим не заниматься?

Кстати, нашёл что-то TPC-C-подобное, расчитанное и на DB2: http://sourceforge.net/projects/tpccruner/?source=directory
(сомнительное, правда, потому что написано в стиле типичных Java-программистов - но, с другой стороны, может быть этим и ценно).
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097565
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,

Я вот пытаюсь перевести базу с Oracle на db2 и ряд вопросов.
(Вроде эту тему можно продолжать ибо она как раз об этом)
Я скачал явовский TPC...а для чего он? в readme написано.

Кстати очень неудобно что нет FAQ как в форуме оракле для новичков,чтобы вхождение было попроще.
(я например научался с поднятием базы(У меня linux) чтоб он порт прослушивал
пока
db2 update dbm cfg using svcename 50000 не сделал.
)

Я присоединился к базе через clpplus
Код: plsql
1.
select user from dual


Почему то не работает.
(погуглив)Надо использовать
Код: plsql
1.
select user from sysibm.sysdummy1


(а я то хотел нахрапом с оракле на db2 вскочить :-) )

И вот помогите понять парадигму(техническую философию).
Понять schema и user.
В оракле если database user имеет таблицы...это уже как schema.

Код: plsql
1.
create user operator identified by pass;




Код: plsql
1.
2.
3.
4.
create user shop identified by pass;
connect shop/pass;
create table goods(.....)
grant select,insert,delete,update on goods to operator;



Код: plsql
1.
2.
connect operator/pass;
select * from shop.goods


Как мне это в 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
авторизуется...
Разъясните пожалуйста.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097605
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы создадите базу c Oracle-совместимостью, dual должен быть.
http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html

Что касается
Код: sql
1.
select user from sysibm.sysdummy1

,
запрос
Код: sql
1.
values(USER)

более db2-шный путь. (Здесь и далее под DB2 подразумевается DB2 for Linux,Unix,Windows (LUW))
Код: sql
1.
2.
3.
select 1,2,3 from dual
union all
select 4,5,6 from dual


по-db2-шному более удобно записывать как
Код: sql
1.
values(1,2,3),(4,5,6)


и, чтобы два раза не вставать,
Код: sql
1.
2.
3.
update xxx
set a=x,b=y
where c=z and d=t


можно записать как
Код: sql
1.
2.
3.
update xxx
set (a,b)=(x,y)
where (c,d)=(z,t)


А что касается юзеров, в базе их нет и потому create user тоже нет. Юзеров и группы определяют в операционной системе (кстати, для линуха очень большие ограничения в длине имени - 8 символов, преодолели совсем недавно - в DB2 10.5 fixpak 5). Когда коннектитесь (я традиционно использую connect to база user имя using пароль , хотя в ряде случаев работает connect to base - это как в Oracle connect / ), DB2 спрашивает у операционки, есть ли такой с таким паролем, и интересуется также группами, в которых он состоит. Поэтому, в отличие от Oracle, схема и юзер не привязаны друг к другу, можно давать grant'ы несуществующим юзерам, удаление юзера никак не сказывается на базе и т.д. Текущая схема совпадает с именем юзера, её можно менять:
Код: sql
1.
set current schema вашановаятекущаясхема
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097609
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инсталляторов DB2 под линухом два (не считая rpm-пакет) - текстовый и GUI-вый. Второй, запускаемый от root'а, делает работу полностью, а первый, насколько я помню, только частично (т.е. он для любителей поэкономить байты и поработать руками). Я пользуюсь вторым.

TPC-C - http://www.tpc.org/tpcc/default.asp
HammerDB - http://www.hammerdb.com/
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097612
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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...
А тут сложность,которую мне предстоит решить.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097615
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
а всё увидел по ссылке выше про tpc
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097621
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097718
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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-пакет, где ещё больше ручной работы...
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097739
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Благодарю dual заработал
(Вдруг кому то надо будет)
Надо сделать
db2set DB2_COMPATIBILITY_VECTOR=ORA
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097753
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2_COMPATIBILITY_VECTOR - как и многое, это серьёзная тема, требующая внимательного изучения. Как минимум, если нужна oracle-совместимость, задавайте ORA *до* создания базы.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39097763
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaDB2_COMPATIBILITY_VECTOR - как и многое, это серьёзная тема, требующая внимательного изучения. Как минимум, если нужна oracle-совместимость, задавайте ORA *до* создания базы.

Да наверное, так и есть ибо ранее синтаксис(Number(1)
Код: plsql
1.
create table test (id number(1));


Не работало.
А после пересоздания заработало.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100103
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Продолжаю изучать совместимость...
Простое..работает
Перешёл к менее банальным вещам.
пакет dbms_sql
Мой оракловый пакет(package body) даже скомпилился...но не отрабатывает.
ошибка.
Спо
Код: html
1.
SQL0286N  A table space could not be found with a page size of at least "4096"


Более того ...беру стандартый пример с сайта 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.
BEGIN
  DECLARE handle INTEGER;
  DECLARE col_cnt INTEGER;
  DECLARE col DBMS_SQL.DESC_TAB;
  DECLARE i INTEGER DEFAULT 1;
  DECLARE CUR1 CURSOR FOR S1;

  CALL DBMS_SQL.OPEN_CURSOR( handle );
  CALL DBMS_SQL.PARSE( handle, 
      'select * from section', DBMS_SQL.NATIVE );
CALL DBMS_SQL.DESCRIBE_COLUMNS( handle, col_cnt, col );

  IF col_cnt > 0 THEN
    CALL DBMS_OUTPUT.PUT_LINE( 'col_cnt = ' || col_cnt );
    CALL DBMS_OUTPUT.NEW_LINE();
    fetchLoop: LOOP
      IF i > col_cnt THEN
        LEAVE fetchLoop;
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'i = ' || i );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_name = ' || col[i].col_name );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_name_len = ' || 
          NVL(col[i].col_name_len, 'NULL') );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name = ' || 
          NVL( col[i].col_schema_name, 'NULL' ) );

      IF col[i].col_schema_name_len IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name_len = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name_len = ' || 
            col[i].col_schema_name_len);
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_type = ' || col[i].col_type );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_max_len = ' || col[i].col_max_len );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_precision = ' || col[i].col_precision );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_scale = ' || col[i].col_scale );

      IF col[i].col_charsetid IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetid = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetid = ' || col[i].col_charsetid );
      END IF;

      IF col[i].col_charsetform IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetform = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetform = ' || col[i].col_charsetform );
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_null_ok = ' || col[i].col_null_ok );
      CALL DBMS_OUTPUT.NEW_LINE();
      SET i = i + 1;
    END LOOP;
  END IF;
END;
/




И получаю ту же ошибку на стандартном примере
Код: plsql
1.
2.
3.
Ошибка рядом со строкой 1:
SQL0286N  A table space could not be found with a page size of at least "4096"
 that authorization ID "DB2" is authorized to use.


Ну как тут может какого-то ресурса не хватать??? ...у меня в этой тестовой базе "пол таблицы и одна восьмая pl/sql кода."
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100106
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100115
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По производительности -
между
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)

может быть не просто существенная, а гигантская разница в скорости (во втором случае выражения инлайнятся, и это даёт эту разницу). (Очевидно, часть процедур наверняка можно переписать как функции, даже те, у которых много выходных параметров, и при проблемах с производительность имеет смысл это сделать).

То же самое относится к триггерам - они могут инлайниться или нет, в зависимости от того, как написаны.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100611
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
BEGIN
  DECLARE handle INTEGER;
  DECLARE col_cnt INTEGER;
  DECLARE col DBMS_SQL.DESC_TAB;
  DECLARE i INTEGER DEFAULT 1;
  DECLARE CUR1 CURSOR FOR S1;

  CALL DBMS_SQL.OPEN_CURSOR( handle );
  CALL DBMS_SQL.PARSE( handle, 
      'select * from section', DBMS_SQL.NATIVE );
CALL DBMS_SQL.DESCRIBE_COLUMNS( handle, col_cnt, col );

  IF col_cnt > 0 THEN
    CALL DBMS_OUTPUT.PUT_LINE( 'col_cnt = ' || col_cnt );
    CALL DBMS_OUTPUT.NEW_LINE();
    fetchLoop: LOOP
      IF i > col_cnt THEN
        LEAVE fetchLoop;
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'i = ' || i );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_name = ' || col[i].col_name );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_name_len = ' || 
          NVL(col[i].col_name_len, 'NULL') );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name = ' || 
          NVL( col[i].col_schema_name, 'NULL' ) );

      IF col[i].col_schema_name_len IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name_len = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_schema_name_len = ' || 
            col[i].col_schema_name_len);
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_type = ' || col[i].col_type );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_max_len = ' || col[i].col_max_len );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_precision = ' || col[i].col_precision );
      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_scale = ' || col[i].col_scale );

      IF col[i].col_charsetid IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetid = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetid = ' || col[i].col_charsetid );
      END IF;

      IF col[i].col_charsetform IS NULL THEN
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetform = NULL' );
      ELSE
        CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_charsetform = ' || col[i].col_charsetform );
      END IF;

      CALL DBMS_OUTPUT.PUT_LINE( 'col[i].col_null_ok = ' || col[i].col_null_ok );
      CALL DBMS_OUTPUT.NEW_LINE();
      SET i = i + 1;
    END LOOP;
  END IF;
END;
/





Выдаёт блин ошибку
Код: html
1.
2.
3.
4.
Ошибка рядом со строкой 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.



Вообще не понятно...вчера вечером всё работало ...потушил базу db2stop штатно.
сегодня хотел продолжить изучение..такая лажа.
И на сайте по этой ошибке ничего толком то и нет.

Более того...перелогиниваюсь...запускаю этот же скрипт что выше и уже всё заработало...что за глюки...или я что-то не так делаю.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100700
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Вот ещё небольшой такой взгляд глазами "ораклиста"
Выполняю скрипт
Код: plsql
1.
2.
3.
4.
5.
6.
declare
lclob clob;
begin
lclob:=get_sqllitesript.get_sql('select name from section','section');
end;
/



Получаю ошибку
Код: plsql
1.
2.
3.
SQL0171N  The statement was not processed because the data type, length or value
of the argument for the parameter in position "1" of routine
 "DBMS_LOB.WRITE_CLOB" is incorrect. Parameter name: "LOB_LOC".



И вот "некомильфо" не выдаются весь стек ошибки.
Что где вызывалось на кокой строке в пакете и на какой последней строке в пакете споткнулся.
Оракле бы выдал типа

Код: plsql
1.
2.
3.
4.
error on anonymouse pl/sql blok on line 2
error on get_sqllitesript.get_sql on line 12
error on get_sqllitesript.procone on line 237
error on line 432 on "DBMS_LOB.WRITE_CLOB" 
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39100731
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
select @ПРЕЦЕДУРА,что возвращает CLOB@  from dual.


По оракловскому.(я хотел сразу результат увидеть)
В этой процедуре было внутри dbms_sql.describe_cloumn.
Так по-оракловскому db2 не позволяет.
И дальше она блокирует все вызовы dbms_sql.describe_cloumn.(в том числе и штатные)
Пока не сделаешь rollback;
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102385
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заливаю данные из оракловой базы и столкнулся с проблемой.
У меня есть таблица товаров
В ней есть Символьный уникальный столбец kod и barcode(штрихкод)
И эти столбцы могут быть в определённых записях пустыми.!!!!
(где есть штрихкод там пустой код)
Где есть код там как правило пустое поле штрихкод.
И вместе они могут быть пустыми.

И вот чудеса ,-DB2 меня обязывает,
для того чтобы создать unique constraint мне надо указать что столбец
NOT NULL....что в принципе, нарушает фундаментальную логику моей КИС.

Я погуглил и там советуют сделать unique index....
НО ...в DB2 он создаётся по типу INTEGER,
а у меня эти поля Varchar2. (и numberом их сделать нельзя ибо там есть и символы)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102414
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

И что, вот это не работает?
Код: sql
1.
2.
3.
create table test_uniq(c1 varchar2(10), c2 varchar2(10)) in userspace1;
create unique index test_uniq on test_uniq(c1, c2) exclude null keys;
insert into test_uniq values ('',''), ('', '');
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102432
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinirbis_al,

И что, вот это не работает?
Код: sql
1.
2.
3.
create table test_uniq(c1 varchar2(10), c2 varchar2(10)) in userspace1;
create unique index test_uniq on test_uniq(c1, c2) exclude null keys;
insert into test_uniq values ('',''), ('', '');



Благодарю получилось
ключевое слово тут exclude null keys;
В оракле такого выражения нет а в гугле что-то не попадалось.
И Вычисляемый столбец рекомендовали и триггер.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102443
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тоже не нашёл(возможно плохо искал..но примеры с таким же решением)
Можно ли организовать,чтобы DB2 мне "прокричало" ограничение.
чтоб пользователь сразу знал,где накосячил.
Сейчас мне если уникальный код нарушить отвечает
Код: plsql
1.
 unique constraint or unique index identified by "3"


а уникальный штрихкод нарушить отвечает
Код: plsql
1.
 unique constraint or unique index identified by "4"


цифры 3 и 4 вообще ни о чём не говорят.
Оракле например отвечает типа
Код: html
1.
constraint BARCODEUNIQUE  not valid


Код: html
1.
constraint KODUNIQUE  not valid
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102467
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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>".

Только имена схемы и таблицы в запросе - в верхнем регистре.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39102641
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alБлагодарю получилось
ключевое слово тут exclude null keys;
В оракле такого выражения нет а в гугле что-то не попадалось.
И Вычисляемый столбец рекомендовали и триггер.
exclude null keys - для DB2 это довольно новая вещь, поэтому и не попадалось. И в Oracle, конечно, такого нет, потому что там все индексы такие. Кстати, если помните смысл ораклячьего create index ... compess XXX; у DB2 индексы такие по дефолту, т.е. на неуникальном индексе напротив одного index key может лежать куча RID'ов, что может сэкономить кучу места на диске.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103490
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103508
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Возможно поможет эта информация...если в таблице нет constraint(или индексов).
Т.е просто таблица без всяких индексов и ограничений.
то в db2 удаляется мгновенно
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103518
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы, скорее, ожидал, что db2 должна быть быстрее - при прочих равных, ибо нет манипуляций с undo tbs. На скорость удаления должны ещё влиять настройки транзакционных логов, ибо транзакции сперва пишутся туда. Есть ещё три техники быстрого удаления всего:
* truncate ... immediate (с разными опциями)
* alter table ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE; commit
* load (пустой источник)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103525
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Вроде с диагностикой определились.
В этой таблице есть столбец,что ссылается сам на себя.
Код: plsql
1.
alter table goods add constraint fgoodsref_id foreign key (GOODSREF_ID ) references goods(id);


И именно он тормозит всё удаление,что и неудивительно рекурсия на себя.
Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте.
Когда я его добавил результат оракла xe 40 секунд
oracle большого 20 секунд
db2 express-c 3 min: 23 s:
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103538
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alirbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Вроде с диагностикой определились.
В этой таблице есть столбец,что ссылается сам на себя.
Код: plsql
1.
alter table goods add constraint fgoodsref_id foreign key (GOODSREF_ID ) references goods(id);


И именно он тормозит всё удаление,что и неудивительно рекурсия на себя.
Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте.
Когда я его добавил результат оракла xe 40 секунд
oracle большого 20 секунд
db2 express-c 3 min: 23 s:

И наконец может всем будет интересно.
Создаю индекс по этому столбцу
Код: plsql
1.
create index igoodsref_id on goods(goodsref_id);


Oracle xe 2,8 s
Db2 express-c => 2 s: 260 ms
Oracle EE 1,281 c
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103572
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
неинтересно, особенно на таких мелких объёмах, с непонятной структурой, типами данных (к примеру, number или integer этот ваш GOODSREF_ID?), самими данными, неизвестными настройками, неизвестным железом. Берите пример со Льюиса (на книгу которого я сослался в названии одной из тем).

Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Потом изучать поведение, нагрузку, статистику, как что меняется при изменении чего-то.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103578
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать.

Да вот мне как раз неинтересно те примеры запускать.
Они абстрактны...и меня слабо касаются.
Я заинтересован в результате.
Если уж тратить время ,то с пользой.
.я перекладываю свою КИС с оракле на db2 на реальной работающей схеме.
и хочу получить реально работающую на db2.
или убедится в обратном,что это сделать проблематично.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103586
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был пример того, какие бывают примеры. А без знания основ не на чем основываться.

Если хотите сравнивать производительность с пользой для себя, вы должны понимать хотя бы в обших чертах, как устроено то, что вы сравниваете. И как работают диски, и как данные лежат на этих дисках, и как принимает решение оптимизатор ( "Cost Based Oracle Fundamentals" by Jonathan Lewis), и как происходит сортировка... Льюис показал, что даже в наибанальнейшем на первый взгляд запросе SELECT * FROM T1 есть много интересного.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103587
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103595
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaВот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны.
Согласен ...многое неизвестно...
Но есть и общее= Oracle XE по дефолту
И Db2 express-c по дефолту.
(Когда заходишь во что-то новое дефолтное дружественное окружение очень важно....чем оно дружественнее тем степень вхождения ниже(можно быть менее таким крутым спецом и тратить меньше времени на мануалы))

Типы данных одинаковы.Количество строк одинаково ...констраинты одинаковы.Индексирование столбцов одинаково.

В оракле я могу сказать Вам параметры...а в DB2 не могу...я ещё не знаю как их получить.
ещё до этого не дошёл..(пока другие вещи интересуют более критичные.)
Выкладываю сюда свои наблюдения на пути .
Определённые выводы сделать можно...например на проиндексированном столбце DB2 express-c чуть выигрывает у Oracle xe ,а на неприндексированном сильно отстаёт.
Для меня уже какой-то опыт...если я увижу ,что в следующих тестах моей КИС будет сильно заваливаться производительность ,-первым делом посмотрю,"-А все ли нужные столбцы проиндексированы ".
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103596
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забывайте статистику собирать, a la
runstats on table xxx with distribution and detailed indexes all

а про индексы спрашивайте у утилиты db2advis.

А одинаковые условия не означают правильных или справедливых условий. Напр., X выиграл у Y матч в шахматы в нормальных условиях. А если их заставили бы играть обоих вниз головой или по пояс в холодной воде, результат точно остался бы неизменным?

Oracle, если я правильно помню, понимает слово INTEGER (подменяя на NUMBER с точностью 0) - тогда, если вы пройдётесь по своим таблицам, подменяя NUMBER на INTEGER там, где целое по смыслу, вроде суррогатных ключей, результат может измениться, а ведь условия по-прежнему равны.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103716
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется.

По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103731
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaЗабыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется.

По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции.

Благодарю...посмотрю обязательно...когда перелью данные...и адаптирую к синтаксису pl/sql пакеты.
Я обслуживаю в основном мелкий и средний бизнес.(крупного несколько организаций) так что супер-пупер объёма данных там не будет ....в самой большой таблице максимум 15-25 миллионов строк.
(Но oracle xe и с этого объёма "вырастает" ,особенно по оперативной памяти)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103747
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положим, диск SAS, время чтения одного блока 4мс. Доступ по индексу глубиной 3. На поиск 1 строки уйдут 4 чтения, 16мс.

62 строки в секунду - каково? За какое время будет прочитан миллион?

Я, конечно, супер-утрирую, но неудачное расположение данных и/или неудачный план дорого стоят.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39104073
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка),
деактивируется, когда все коннекты ушли (при этом чистятся буферный пул и т.п.). В однопользовательском режиме это может быть довольно заметно.

Можно явно активировать базу - ACTIVATE DB <имябазы>. Тогда перед db2stop её надо будет деактивировать (DEACTIVATE DB <имябазы>), или придётся воспользоваться db2stop force.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39104338
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка),

Не ну я работаю то в clpplus...там присоеденился и всё.
Ещё скачал IBM admin studio.(Но что-то мне в ней совсем не комфортно)
И в студии есть настройка типа каждый раз новое соединение или использовать одно.(у меня использовать одно)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106164
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'), на самотёк пускать нельзя.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106168
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alНе ну я работаю то в clpplus...там присоеденился и всё.
Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106179
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsairbis_alНе ну я работаю то в clpplus...там присоеденился и всё.
Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают.

А я другого инструмента и не знаю, clplus похож на oracle sqlplus...только clplus на java.

а с ibm studio(которая тоже на java) я не подружился.
Новый sqldeveloper от oracle можно заточить на db2...как нибудь попробую.(тем более подходит время большие пакеты адаптировать к db2)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106184
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106188
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alВообще с точки зрения ораклиста довольно странное поведение.
Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
Не помню я там именно такого поведения.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106195
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Величина undo tablespace ограничена (тогда как архивных логов может быть сколько угодно), по этому поводу Oracle может принять какие-то меры. А вот чтобы "если сеанс прожил такое-то время с незакрытой транзакцией, её надо прибить" - абсолютно не помню.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106210
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsairbis_alВообще с точки зрения ораклиста довольно странное поведение.
Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
Не помню я там именно такого поведения.

Тут тоже надо будет поэкспериментировать.
В оракле есть параметр limit idle_time
Сам не DBA не знаю...НО неоднократно наблюдал воочию такую картину.
Что если пользователь не вышел из КИС ....дня через два.пробовал дальше в ней работать.(естественно ни сервер,ни комп клиента не перегружались) то писалось что сессия отключена.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106221
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно есть.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106253
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На эту тему 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 всё равно стоит посматривать.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106752
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё одна вещь, на которую может больно налететь ораклист - подавляющее количество DDL не автокоммитит после себя. В принципе, это хорошо и правильно и так и должно быть, но если забыть закоммитить/отроллбачить за собой, учитывая блокировки на системных каталогах, можно незаметно для себя всех подвесить.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39109470
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день....
Ещё нужна помощь или рекомендация.
Есть схема shop
(Реального linux userа нет)
Код: plsql
1.
set schema=shop


Есть скомпилированный пакет pl/sql goodspackage.
Компилирую новый пакет(в этой же схеме) в нём есть вызов этого goodspackage.
и если в пакете записано так.
Код: plsql
1.
GOODSPACKAGE.addchowner(параметры)


Отгребаю ошибку компиляции
Код: plsql
1.
2.
3.
Ошибка рядом со строкой 194:
SQL0440N  No authorized routine named "GOODSPACKAGE.ADDCHOWNER" of type
 "PROCEDURE" having compatible arguments was found.


Но как только я делаю вот так(с прямым указанием схемы)
Код: plsql
1.
shop.GOODSPACKAGE.addchowner(параметры)


То компилится всё нормально.
Как мне избежать такого хардкодного прямого назначения схемы.
(Для меня это важно,- Ведь всё решение может быть и в другой схеме)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39109560
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 изначально имел весьма мало общего с ораклячьим).
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39109624
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В старые времена встроенного языка 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, и пошла/добавилась путаница в терминологиях.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39109640
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
set path=shop,system path;


Помогло.
Просто без system path
Код: plsql
1.
set path=shop;


ругалось на shop.goodspackage.raise_application_error.(т.е системную raise_application_error. он искал только в shop).

А это нужно только для компиляции или вообще в приложении теперь
после соединения первым делом
дать команду
Код: plsql
1.
set path=&shema,system path;


чтобы
Код: plsql
1.
&shema.goodspackage.anyproсname(Параметры)


Отработало.
(макро имя &shema КИС меняет на соответствующую строку реальную схему СУБД,что прописано в стартовом инициализационном xml файле)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39109647
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статика на то и статика, чтобы проверило права, разрешило пути, скомпилировало планы и легло в базу, пока не позовут.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39117427
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги,вот ещё нужна помощь.
Сам не разобрался по ошибке.
Выполняю запрос
Код: plsql
1.
2.
set define off(иначе на $ ругается)
select * from shop.u$module order by module


Отгребаю ошибку
Код: html
1.
2.
SQL1585N  A temporary table could not be created because there is no available
 system temporary table space that has a compatible page size.


На сайте 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.
select * from shop.u$module 


Выполняется всё пучком.
Индексирую столбец module ...теперь с order
Код: plsql
1.
select * from shop.u$module order by module


Всё выполняется...
В таблице 9 записей...я не хочу создавать индекс по этому полю.
Пробовал создать temporary tablespace на 50м как user так и system...не помогает.

P.s(Нет ни clob ни blop ни raw полей..все простые типы...)

desc u$module
Код: plsql
1.
2.
3.
4.
ID                  DECIMAL       SYSIBM               4       0 N     Not     
MODULE              VARCHAR       SYSIBM              50       0 Y     Not     
INITSQL             VARCHAR       SYSIBM            4000       0 Y     Not     
KOD                 VARCHAR       SYSIBM              15       0 Y     Not     
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39117480
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

С каким размером страницы (блока по-оракловому) вы создавали system temporary tablespace?

Дайте вывод запросов:

Код: sql
1.
2.
3.
4.
5.
6.
select tbspace, pagesize
from syscat.tablespaces
where datatype='T';

select bpname, pagesize
from syscat.bufferpools;
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39117889
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinirbis_al,

С каким размером страницы (блока по-оракловому) вы создавали system temporary tablespace?

Дайте вывод запросов:

Код: sql
1.
2.
3.
4.
5.
6.
select tbspace, pagesize
from syscat.tablespaces
where datatype='T';

select bpname, pagesize
from syscat.bufferpools;



Возможно я создавал неправильно.
Код: plsql
1.
2.
create system temporary tablespace temp1 PREFETCHSIZE 50m;
create user temporary tablespace shoptemp PREFETCHSIZE 50m;


PREFETCHSIZE Это мне просто подсказал синтаксический анализатор после
обычной по оракловому команды
create user temporary tablespace shoptemp SIZE 50m;(Там написало,что нет такого,а возможно требуется PREFETCHSIZE )
(К интернету был доступ ограничен).
Когда я попробовал то удалил.(опять создал заново сейчас)

Вывод команд
Код: html
1.
2.
3.
4.
TBSPACE                                               PAGESIZE
-------------------------------------------------- -----------
TEMPSPACE1                                                4096
TEMP1                                                     4096



(А пользовательского shoptemp не вижу)

На второй запрос
Код: html
1.
2.
3.
BPNAME                                                PAGESIZE
-------------------------------------------------- -----------
IBMDEFAULTBP                                              4096
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118010
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 с такой страницей).
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118015
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 стоит указать, иначе база будет юникодной).

Я срузу юникодную делаю...

Так а сейчас то мне что делать? Базу получается пересоздавать.?
(И экспорт импорт какой нибудь,чтоб данные перегнать?)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118030
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

Вам пишется, что нет системного временного пространства с подходящим размером страницы .
Код: sql
1.
2.
3.
DROP TABLESPACE TEMP1;
CREATE BUFFERPOOL BP8K PAGESIZE 8 K;
CREATE SYSTEM TEMPORARY TABLESPACE TMP8K PAGESIZE 8 K BUFFERPOOL BP8K;
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118035
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinirbis_al,

Вам пишется, что нет системного временного пространства с подходящим размером страницы .
Код: sql
1.
2.
3.
DROP TABLESPACE TEMP1;
CREATE BUFFERPOOL BP8K PAGESIZE 8 K;
CREATE SYSTEM TEMPORARY TABLESPACE TMP8K PAGESIZE 8 K BUFFERPOOL BP8K;



Благодарю ...Это помогло.
(Я понимаю,что пишется,что нет некоторых ТУ(Тех.условий)...но я не знал как их создать :-) )
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118039
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально у DB2 (for OS/2) был только один размер страницы - 4K, потому это дефолт.

На http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html рекомендация по созданию базы есть, хотя, возможно, автору следовало чётче объяснить, почему.

Я думаю, что базу лучше пересоздать, и лучше сейчас, чем потом, потому потом будет труднее. Хотя это и дело вкуса, поскольку вы можете создавать табличные пространства с разным размером страницы в одной базе.

На тему переноса данных см. db2move.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118045
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
Max          Max   Page size of
Record       Cols  temporary
Length             table space
-----------  ----  ------------
4005  bytes  500   4K
8101  bytes  1012  8K
16293 bytes  1012  16K
32677 bytes  1012  32K

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
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118047
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaИзначально у DB2 (for OS/2) был только один размер страницы - 4K, потому это дефолт.

На http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html рекомендация по созданию базы есть, хотя, возможно, автору следовало чётче объяснить, почему.

Я думаю, что базу лучше пересоздать, и лучше сейчас, чем потом, потому потом будет труднее. Хотя это и дело вкуса, поскольку вы можете создавать табличные пространства с разным размером страницы в одной базе.

На тему переноса данных см. db2move.

Чтоб пересоздать базу,мне ещё рано...я пока не знаю вообще никаких параметров.(Ну кроме того ,что выше по топику...и то я просто повторил...сути пока не понимаю)
Пока я исследую...насколько возможно КИС переложить на DB2...И возможно ли вообще.(И если возможно буду уже глубоко вникать...и оптимизировать)
Действительно они(IBMцы) довольно много сделали для совместимости с ораклом.
И даже первые простые интерфейсные формы КИС у нас заработали под DB2.
Пока споткнулись об именные параметры(но это на форму java надо).
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118048
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
Max          Max   Page size of
Record       Cols  temporary
Length             table space
-----------  ----  ------------
4005  bytes  500   4K
8101  bytes  1012  8K
16293 bytes  1012  16K
32677 bytes  1012  32K

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


Благодарю...буду пользоваться.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39118053
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alПока споткнулись об именные параметры(но это на форму java надо).Если это jdbc для db2jcc(4).jar, то не надо на форум java - они вас всё равно сюда пошлют.
Named parameter markers in JDBC applications
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39127604
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinsteinirbis_alПока споткнулись об именные параметры(но это на форму java надо).Если это jdbc для db2jcc(4).jar, то не надо на форум java - они вас всё равно сюда пошлют.
Named parameter markers in JDBC applications
Благодарю за ссылку ...кое в чём серьёзно помогла .(в частности более подробно озвучивать исключения)
К именованным параметрам не пригодилась..
Я пользуюсь фреймвоком от оракла ADF...
И внутри себя в глубине он назначает нумерованные параметры...разница в том что для оракла можно
Код: plsql
1.
select * from tab where name=:name


И в jdbc можно
Код: java
1.
2.
3.
setString(name,'Строка');
И можно так 
setString(1,'Строка');//И так он и делал во фреймвоке почему-то


Для DB2 если указал именные параметры при инициализации то можно только так
Код: java
1.
2.
3.
4.
5.
setString(name,'Строка');
//На вот это ругается.Типа что надо использовать имя 
setString(1,'Строка');
А чтоб работало как во фреймвоке setString(1,'Строка');
Надо запрос подать на вход только таким


Код: plsql
1.
select * from tab where name=?


Но у меня была подобная подстройка-парсер-заменитель.(и КИС не хардкодная)
И как бы проблема решилась.

Продвинулись чуть дальше...ещё больше форм заработало и столкнулись вот с таким.
если запрос использующий деление ,умножение
Код: plsql
1.
select price*quantity summa....


то DB2 возвращала тип decfloat(Это типа 2.2+Е11)
И оракловый java фреймвок (даже последний) не знал этот тип.(Чтоб привести его к java типу)
(Благо в последней версии ADF дали исходники и по ним мы эту проблему вычислили )
сделали cast приведения типа запрос
Код: plsql
1.
select casr(price*quantity as decimal) summa....


И иногда
Код: plsql
1.
2.
select sum(column)...
select cast(sum(column) as decimal)...


В некоторых случаях надо делать привидение типов ,а некоторые select sum отрабатывают нормально...
Пока закономерность-принцип не понял.
Но там пишут с округлением для decfloat могут быть проблемы.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39127641
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
call admin_cmd('describe select sum(price*quantity) from table(values (cast(1 as decimal), cast(2 as decimal))) t (price, quantity)')


Процедура возвращает result set с описанием типов полей.

decfloat(Это типа 2.2+Е11): обычно это представление типа double, а не decfloat. Хотя, ваша программа вывода результатов может иметь на этот счет свое мнение.

Аккуратнее с cast(... as decimal). Это равносильно cast(... as decimal(5, 0)). Т.е. можно ошибку переполнения получать.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39127711
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
call admin_cmd('describe select sum(price*quantity) from table(values (cast(1 as decimal), cast(2 as decimal))) t (price, quantity)')


Процедура возвращает 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 переделаем с нужной точностью)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39236139
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39367489
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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-м августа.
...
Рейтинг: 0 / 0
72 сообщений из 72, показаны все 3 страниц
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Oracle to DB2 Conversion Guide: Compatibility Made Easy
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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