IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Information Management  >

Новые возможности по миграции на DB2 и Informix в IBM Migration Toolkit 1.4.9

Миграция Oracle PL/SQL и не только!

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: простой

Хемант Бхатия, инженер по программному обеспечению, IBM
Николас Гейб, инженер по программному обеспечению, IBM

18.06.2007

Январь - время приятных перемен, и много удачных изменений было внесено в IBM® Migration Toolkit (MTK), что несомненно заслуживает поздравлений! Последняя версия бесплатного набора инструментов IBM по миграци, MTK 1.4.9, включает новые функции, позволяющие еще более упростить миграцию (перенос) на платформу СУБД от IBM: поддержка дополнительных функций DB2® , поддержка миграции Oracle PL/SQL на IBM Informix® Dynamic Server (IDS), пакет Oracle UTL_FILE и др. Ознакомьтесь с кратким описанием данных улучшений.

Oracle в DB2

В MTK добавлено множество новых функций по поддержке миграции в DB2 для Linux®, UNIX®и Windows® (DB2 LUW). Среди этих усовершенствований: поддержка миграции на DB2 версии 9, а также поддержка трансляции новых SQL-предложений и улучшение существующих преобразований некоторых SQL-предложений. В данном разделе представлен обзор трех новых функций, применяемых в MTK для трансляции в DB2 LUW:

  1. Секционирование по диапазонам;
  2. Сжатие данных;
  3. Оператор MERGE.

Секционирование по диапазонам

Теперь в MTK имеется поддержка трансляции секционирования по диапазонам Oracle (также известного как секционирование таблиц). Трансляция данной функции поддерживается только в том случае, когда в качестве целевой платформы используется DB2 версии 9.1 или выше. MTK транслирует range_values_clause и встроенную функцию PARTITION().

В данной версии трансляция операторов, содержащих предложение секционирования по диапазонам, поддерживается только для операторов, включенных во входной файл при помощи опции импорта в MTK. В DB2 UDB не разрешается использовать после MAXVALUE другие значения, а диапазон должен быть действительным для каждого значения раздела. Решить проблему можно, изменив значения в команде ENDING следующим образом: (MAXVALUE, MAXVALUE, MAXVALUE).

В листингах 1 и 2 показана трансляция секционирования по диапазонам, выполняемая MTK:


Листинг 1. Предложение секционирования по диапазонам
                
CREATE TABLE accessnumbers (area INT, exchange INT)
PARTITION BY RANGE (area, exchange)
       ( PARTITION access1 VALUES LESS THAN (1,1),
         PARTITION access2 VALUES LESS THAN (10,100),
         PARTITION access3 VALUES LESS THAN (MAXVALUE, MAXVALUE) );
SELECT * FROM accessnumbers PARTITION(access1) ;


Листинг 2. Трансляция MTK
                
CREATE TABLE accessnumbers(
    area DECIMAL(31,0),
    exchange DECIMAL(31,0)
)
PARTITION BY RANGE(
    area,
    exchange
)(
    PARTITION access1 STARTING (MINVALUE, MINVALUE) INCLUSIVE
        ENDING (1, 1) EXCLUSIVE,
    PARTITION access2 STARTING (1, 1) INCLUSIVE
        ENDING (10, 100) EXCLUSIVE,
    PARTITION access3 STARTING (10, 100) INCLUSIVE
        ENDING (MAXVALUE, MAXVALUE) EXCLUSIVE)!

SELECT * FROM accessnumbers WHERE DATAPARTITIONNUM(area) =
    ( SELECT SEQNO FROM SYSCAT.DATAPARTITIONS WHERE TABNAME = UPPER('accessnumbers')
          AND  DATAPARTITIONNAME = UPPER('access1'))!

Сжатие данных

MTK теперь обеспечивает поддержку трансляции предложения Oracle table_compression. Трансляция данной функции поддерживается только для миграции на DB2 версии 9.1 или выше.

В преобразовании в DB2 версии 9.1 поддерживается оператор ALTER TABLE со сжатием данных, а также имеется поддержка оператора CREATE TABLE. Для оператора CREATE TABLE трансляция предложения Oracle key_compression и секционированных таблиц со сжатием не поддерживается. В DB2 версии 9.1 сжатие выполняется только после создания словаря таблиц, которое, как правило, осуществляется на этапе реорганизации таблиц (REORG).

В листингах 3 и 4 показана трансляция предложения table_compression, выполняемая MTK:


Листинг 3. Предложение table_compression
                
CREATE TABLE SALES_HISTORY_COMP1 (
  PART_ID       VARCHAR2(50) NOT NULL,
  STORE_ID      VARCHAR2(50) NOT NULL,
  SALE_DATE     DATE NOT NULL,
  QUANTITY      NUMBER(10,2) NOT NULL
)
COMPRESS;
ALTER TABLE SALES_HISTORY COMPRESS;


Листинг 4. Трансляция MTK
                
CREATE TABLE SALES_HISTORY_COMP1(
    PART_ID VARCHAR(50) NOT NULL,
    STORE_ID VARCHAR(50) NOT NULL,
    SALE_DATE TIMESTAMP NOT NULL,
    QUANTITY DECIMAL(10,2) NOT NULL
) COMPRESS YES!

ALTER TABLE SALES_HISTORY COMPRESS YES!

Оператор MERGE

В MTK теперь также имеется поддержка трансляции оператора Oracle MERGE в DB2 UDB. Предложение DELETE merge_update_clause транслируется в отдельное условие сопоставления и условие поиска DB2. Трансляция данной функции поддерживается, если в качестве целевой базы данных выбрана DB2 версии 8.1 или выше. Трансляция оператора Oracle MERGE error_logging_clause не поддерживается.

В листингах 5 и 6 показана трансляция оператора Oracle MERGE, выполняемая MTK:


Листинг 5. Оператор MERGE
                
MERGE INTO merge_tab10b t
USING (SELECT  school_id,teacher_name,field FROM merge_tab10a) s
ON (0 = 1)
WHEN NOT MATCHED THEN
INSERT VALUES (s.teacher_name,s.field)
WHERE s.school_id = 100;


Листинг 6. Трансляция MTK
                
MERGE INTO merge_tab10b t USING
(SELECT school_id, teacher_name, field FROM merge_tab10a) s
      ON ( 0 = 1 )
      WHEN NOT MATCHED
      AND s.school_id = 100
      THEN INSERT  VALUES (s.teacher_name,s.field)!



В начало


Oracle PL/SQL в IDS

Ранее в этом году в MTK была объявлена ограниченная поддержка миграции с Oracle на IBM IDS. В последней версии MTK 1.4.9 возможна миграция с процедурного языка программирования Oracle (PL/SQL) на язык хранимых процедур IDS (SPL). Многие пользователи Oracle применяют PL/SQL для добавления пользовательской логики к обработке данных различными способами. Такая логика может быть довольно сложной и для ее миграции вручную часто требуется довольно много времени. MTK 1.4.9 позволяет автоматически перенести логику PL/SQL в процедурах, функциях, курсорах, пакетах и т.д. в IDS:

  1. Процедуры и функции;
  2. Триггеры;
  3. Курсоры;
  4. Обработка исключений.

Процедуры и функции

Все элементы Oracle PL/SQL основаны на двух компонентах: в Oracle они называются подпрограммами и анонимными PL/SQL блоками. Подпрограммы существуют в двух формах -- процедуры или функции. Обе эти формы содержат набор операторов PL/SQL и назначают этому набору имя, что позволяет легко ссылаться на логику из других конструкций PL/SQL и SQL-кода. Процедуры и функции часто находятся в базах данных Oracle, MTK выполняет миграцию и тех и других. С другой стороны, анонимные PL/SQL блоки не назначают имена наборам логических операторов. Как правило, они применяются для разработки или тестирования процедур и функций и не хранятся в базе данных Oracle. MTK не выполняет миграцию анонимных PL/SQL блоков.

Заданы следующие процедуры и функции Oracle:


Листинг 7. Процедуры и функции Oracle
                
CREATE PROCEDURE ADD_NEW_EMPLOYEE (empName CHAR(50)) AS
	nextEid INT DEFAULT 0;
BEGIN
	SELECT MAX(eid) INTO nextEid FROM employee;
	nextEid := nextEid + 1;
	INSERT INTO employee VALUES (nextEid, empName);
END;

CREATE FUNCTION NUM_DEPARTMENTS RETURN INT AS
  i1 INT;
BEGIN
  SELECT COUNT(*) INTO i1 FROM dept;
  RETURN i1;
END;

MTK создает следующие IDS SPL:


Листинг 8. IDS SPL, созданные MTK
                
CREATE PROCEDURE ADD_NEW_EMPLOYEE (empName CHAR(50) )
    DEFINE nextEid DECIMAL(32,0);
    LET nextEid = 0.0;
    SELECT ROUND(MAX(eid)) INTO nextEid FROM employee;
    LET nextEid = nextEid + 1;
    INSERT INTO employee VALUES (nextEid,empName);
END PROCEDURE;

CREATE FUNCTION NUM_DEPARTMENTS()
RETURNING DECIMAL(32,0)
    DEFINE i1 DECIMAL(32,0);
    LET i1 = NULL;
    SELECT COUNT(*) INTO i1 FROM dept;
    RETURN i1;
END FUNCTION;

В дополнение к вышеприведенным примерам MTK выполняет миграцию процедур, использующих такие функции, как позиционные и именованные параметры, перегрузка и рекурсия. Для MTK имеются некоторые ограничения, например, поддерживаются только параметры IN. Подробнее о поддерживаемых областях и ограничениях см. документацию на программный продукт.

Триггеры

Триггеры представляют собой наборы PL/SQL, автоматически выполняемые при возникновении в базе данных определенных условий. Используйте MTK 1.4.9 для автоматической миграции триггеров Oracle в IDS. Например, рассмотрим триггер Oracle в листинге 9, выполняющий регистрацию процентного изменения и дату изменения заработной платы сотрудника, и трансляцию IDS (листинг 10):


Листинг 9. Триггер Oracle
                
CREATE TRIGGER salary_change_trigger
BEFORE UPDATE OF salary on emp_salary
REFERENCING OLD as old NEW as NEW FOR EACH ROW
BEGIN
	INSERT INTO salary_change VALUES (:new.eid,
		:new.salary / :old.salary, CURRENT_DATE);
END;


Листинг 10. Трансляция IDS
                
CREATE TRIGGER salary_change_tri1
UPDATE OF salary ON emp_salary
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
(
      INSERT INTO salary_change VALUES (NEW.eid,NEW.salary /
      OLD.salary,CURRENT YEAR TO FRACTION(5))
);

Некоторые функции триггеров Oracle не поддерживаются IDS, поэтому MTK не выполняет их трансляцию. Сюда включается определение нескольких триггеров для одного события INSERT, UPDATE или DELETE для одной таблицы, синтаксис Oracle REFERENCING PARENT и триггеры INSTEAD OF.

Курсоры

Курсоры представляют собой общие абстракции баз данных, позволяющие программам и пользователю просматривать и, таким образом, обрабатывать за раз результаты одной строки запросов. Курсоры Oracle могут объявляться, открываться, выбираться и закрываться. Oracle также позволяет тесно связывать курсоры с оператором цикла, конструкцией, называемой циклом курсора FOR. В противоположность этому IDS SPL поддерживает аналогичный оператор цикла курсора, но не разрешает явно объявлять, открывать или закрывать курсоры. Данная функция доступна в других инструментах (например, в языке программирования ESQL/C).

MTK поддерживает миграцию курсоров Oracle в IDS. Но из-за некоторых различий имеются следующие ограничения:

  • Все операторы FETCH должны быть с одними и теми же переменными;
  • Можно объявить и использовать не более одного курсора на блок PL/SQL;
  • Курсоры во вложенных блоках PL/SQL не поддерживаются;
  • В операторах цикла (WHILE, LOOP, например) не должно содержаться операторов FETCH;
  • Атрибуты курсоров не поддерживаются;
  • Переменные курсоров не поддерживаются.

В листингах 11 и 12 представлены примеры курсора Oracle и трансляции IDS:


Листинг 11. Курсор Oracle
                
CREATE OR REPLACE FUNCTION sum_remaining_vacation RETURN INT AS
  vac_sum INT DEFAULT 0;
  cursor emp_cur IS SELECT * FROM employee;
BEGIN
	FOR emp_rec in emp_cur LOOP
		vac_sum := vac_sum + emp_rec.vac_days;
	END LOOP;
	RETURN vac_sum;
END;


Листинг 12. Трансляция IDS
                
CREATE FUNCTION sum_remaining_vac1()
RETURNING DECIMAL(32,0)
    DEFINE vac_sum DECIMAL(32,0);
    DEFINE emp_rec_EID DECIMAL(32,0);
    DEFINE emp_rec_ENAME CHAR(50);
    DEFINE emp_rec_VAC_DAYS DECIMAL(32,0);
    LET vac_sum = 0.0;
    FOREACH emp_cur for SELECT * INTO emp_rec_EID, emp_rec_ENAME,
    emp_rec_VAC_DAYS FROM employee
	LET vac_sum = vac_sum + emp_rec_VAC_DAYS;

    END FOREACH;
    RETURN vac_sum;
END FUNCTION ;
			

Обработка исключений

В базах данных могут возникать ошибки, Oracle PL/SQL обеспечивает взаимодействие с ошибками при помощи концепции EXCEPTION. PL/SQL предоставляет множество функциональных возможностей для обработки исключений, их можно обрабатывать или регистрировать, можно определять новые исключения и т.д. MTK поддерживает большинство операторов исключений PL/SQL.

Некоторые исключения являются общими и сгруппированы в набор предварительно заданных или системных исключений. Среди таких исключений ZERO_DIVIDE, ROWTYPE_MISMATCH и LOGIN_DENIED. Хотя предварительно заданные исключения Oracle представляют собой символы или слово, исключения IDS являются номерами. MTK автоматически сопоставляют эти типы исключений. Кроме того, Oracle разрешает сопоставлять слова исключений номерам при помощи объявления PRAGMA EXCEPTION_INIT. Обработку таких исключений MTK выполняет автоматически.

MTK переносит в IDS пользовательские исключения Oracle, вызовы процедуры RAISE_APPLICATION_ERROR и операторы, вызывающие и обрабатывающие исключения.



В начало


Пакет Oracle UTL_FILE

База данных Oracle содержит пакеты, предоставляющие функции, находящиеся вне области традиционных баз данных. Один из таких пакетов, UTL_FILE, содержит методы утилит, обеспечивающие взаимодействие с файловой системой компьютера, на котором размещена база данных. Эти методы пакета можно вызывать с помощью PL/SQL программ в других средах программирования. Хотя сигнатуры и функции данных методов различны в разных версиях, основной набор функций одинаков.

MTK поддерживает миграцию на DB2 UDB для LUW и IDS шести основных методов UTL_FILE. Поддерживаются только сигнатуры Oracle 9.2 данных методов. Функциональные возможности методов Oracle 9.2 обеспечиваются за счет серии пользовательских функций, развертываемых MTK в целевой базе данных. Поддерживаемые шесть методов UTL_FILE:

  • FOPEN;
  • FCLOSE;
  • GET_LINE;
  • PUT_LINE;
  • FRENAME;
  • FREMOVE.

В листинге 13 показан пример программы Oracle PL/SQL, считывающей данные из одного файла и записывающей их в другой файл:


Листинг 13. Программа Oracle PL/SQL
                
CREATE PROCEDURE COPY_START_OF_FILE(numLines INT) AS
	file1 utl_file.file_type;
	file2 utl_file.file_type;
	line VARCHAR(3000);
	i INT DEFAULT 0;
BEGIN
	file1 := utl_file.fopen('DIR1', 'readme.txt', 'r', 3000);
	file2 := utl_file.fopen('DIR1', 'write_to_me.txt', 'w');

        WHILE i < numLines LOOP
		utl_file.get_line(file1, line);
		utl_file.put_line(file2, line);
		i := i + 1;
	END LOOP;

	utl_file.fclose(file1);
	utl_file.fclose(file2);
END;

В листингах 14 и 15 показаны трансляции MTK и IDS для DB2 UDB для LUW:


Листинг 14. Трансляция MTK в DB2 UDB для LUW
                
CREATE PROCEDURE COPY_START_OF_FILE (numLines DECIMAL(31,0) )
LANGUAGE SQL

BEGIN
    DECLARE file1 DECIMAL(31,0);
    DECLARE file2 DECIMAL(31,0);
    DECLARE line VARCHAR(3000);
    DECLARE i DECIMAL(31,0) DEFAULT 0.0;
    DECLARE file1_OFFSET BIGINT DEFAULT 0;

    SET file1 = ORA.FOPEN('/tmp', 'readme.txt', 'r', 3000);
    SET file2 = ORA.FOPEN('/tmp', 'write_to_me.txt', 'w');

    WHILE i < numLines DO
        CALL ORA.GET_LINE('/tmp','readme.txt','r',3000,
					line,3000,3000,file1_OFFSET);
        CALL ORA.PUT_LINE('/tmp','write_to_me.txt','w',1,line);
        SET i = i + 1;
    END WHILE ;

    CALL ORA.FCLOSE(file1);
    CALL ORA.FCLOSE(file2);
END!


Листинг 15. Трансляция MTK в IDS
                
CREATE PROCEDURE COPY_START_OF_FILE (numLines DECIMAL(32,0) )
    DEFINE file1 DECIMAL(32,0);
    DEFINE file2 DECIMAL(32,0);
    DEFINE line LVARCHAR(3000);
    DEFINE i DECIMAL(32,0);
    DEFINE file1_OFFSET INT8;

    LET file1 = NULL;
    LET file2 = NULL;
    LET line = NULL;
    LET i = 0.0;
    LET file1 = ORA.FOPEN('/tmp', 'readme.txt', 'r', 3000);
    LET file2 = ORA.FOPEN('/tmp', 'write_to_me.txt', 'w');

    WHILE i < numLines
        LET file1_OFFSET = 0;
        SELECT temp_file1_OFFSET, temp_line INTO file1_OFFSET, line
          FROM informix.dual
          WHERE ORA.GET_LINE('/tmp', 'readme.txt', 'r', 3000,
			temp_line # LVARCHAR, 3000, 3000, file1_OFFSET,
			temp_file1_OFFSET # INT8) = 1;

        EXECUTE PROCEDURE PUT_LINE('/tmp','write_to_me.txt',
						'w',1,line);

        LET i = i + 1;
    END WHILE ;

    EXECUTE PROCEDURE ORA.FCLOSE(file1);
    EXECUTE PROCEDURE ORA.FCLOSE(file2);
END PROCEDURE;



В начало


Дополнительные улучшения

В этом разделе описаны изменения и усовершенствования, добавленные в MTK с момента выхода версии MTK 1.4, в дополнение к вышеописанным функциям:

  1. Миграция на DB2 UDB на платформе iSeries;
  2. Установка Windows без вмешательства пользователей;
  3. Компоновка JRE;
  4. Вопросы и ответы по MTK;
  5. MTK 2.0.1.1 поддерживает MySQL.

Миграция на DB2 UDB на платформе iSeries

В MTK добавлены различные усовершенствования для миграции на DB2 UDB на iSeries. Среди них:

  1. Поддержка миграции на версию V5R4M0 DB2 for i5/OS;
  2. Снято ограничение на схему развертывания в DB2, при создании сценариев данных и во время размещения можно задать другую схему;
  3. Улучшена поддержка миграции для случаев, когда исходный компьютер и компьютер с iSeries не доступны в одной сети. Можно извлечь объекты базы данных и создать сценарии переноса данных в одной сети. Затем можно заархивировать проект и отправить его на удаленный компьютер. После разархивирования проекта на компьютере в другой сети MTK может развернуть объекты и данные базы данных на удаленной системе;
  4. Поддержка сопоставления типов данных VARCHAR и CHAR, обеспечивающая лучшую производительность DB2 UDB for i5/OS. Данное сопоставление поддерживается для всех источников, которые можно перенести на DB2 UDB for i5/OS;
  5. Использование для повышения производительности, по возможности, встроенных операторов, аналогичных DB2, для трансляции Sybase и SQL Server.

Установка Windows без вмешательства пользователей

MTK теперь можно устанавливать без вмешательства пользователей на платформе Windows. Для выполнения такой установки MTK на Windows выполните следующие операции:

  1. Разархивируйте ZIP-файл, загруженный с сайта MTK. (ZIP-файл содержит файл MTKSilentInstall.iss file, файл readme и файл mtk.exe);
  2. Запустите установку при помощи файла ответов MTKSilentInstall.iss. Для этого выполните следующую команду:

    mtk.exe -s -f1"<полный путь к файлу MTKSilentInstall.iss>" 
    -f2"<полный путь к файлу журнала установки>"

Параметр -s указывает, что установка будет выполняться без вмешательства пользователей. Обратите внимание, что между параметром f1 и местоположением файла iss установки без вмешательства пользователей не должно быть пробела. Также не должно быть пробелов между параметром -f2 и местоположением файла журнала установки.

После завершения установки без вмешательства пользователей, можно открыть файл журнала установки и проверить значение ResultCode. Если значение ResultCode соответствует 0, установка выполнена успешно.

Компоновка JRE

Программа установки MTK больше не включает среду JRE. Поэтому необходимо установить среду JRE 1.4.2 или более поздней версии, и указать к ней путь в переменной окружения PATH. Можно проверить доступность Java и версию (должна быть не ниже 1.4.2) с помощью следующей команды:

java -version

Вопросы и ответы по MTK

В документацию по MTK добавлен раздел "Часто задаваемые вопросы (FAQ) о MTK". Эти вопросы и ответы отобраны по результатам запросов различных пользователей, полученных группой разработки MTK. Вопросы охватывают широкий диапазон тем, связанных со всеми пятью этапами миграции, выполняемыми MTK. Подробные ответы в этом разделе помогут пользователям решить обычные проблемы, возникающие при работе с MTK. Пользователям перед отправкой запросов в группу разработки MTK настоятельно рекомендуется просмотреть раздел "Вопросы и ответы" в документации по MTK.

MTK 2.0.1.1 поддерживает MySQL

Для загрузки доступен прототип MTK 2.0.1.1. Данный прототип включает поддержку миграции MySQL (версий 4 и 5) в Informix Dynamic Server, DB2 UDB на Linux, Unix и Windows, и DB2 UDB for i5/OS.



В начало


Подключение к исходной базе данных

MTK позволяет непосредственно подключиться к исходной базе данных. После подключения MTK может автоматически извлекать объекты базы данных (например, таблицы, представления и индексы ) и данные из таблиц. Подключение к исходной базе данных ( например, Oracle) выполняется довольно просто.

  1. Прежде всего загрузите и установите драйвер Oracle JDBC. (Поскольку для MTK требуется Java 1.4 или выше, то подойдет драйвер ojdbc14.jar);
  2. Выполните инструкции Oracle по настройке соответствующих переменных среды (например, PATH и CLASSPATH);
  3. Затем в проекте миграции MTK на вкладке Specify Source нажмите Extract . Открывается диалоговое окно "Connect to Database" (см. рисунок 1):

    Рисунок 1. Диалоговое окно подключения к исходной базе данных
    Диалоговое окно подключения к исходной базе данных



  4. Укажите соответствующие сведения о подключении.

    Поскольку подключение выполняется к Oracle, можно просмотреть файл конфигурации Oracle tnsnames.ora. Пример файла конфигурации представлен далее в листинге Listing 16. (Как правило, этот файл находится в папке ORACLE_HOME/network/admin или ORACLE_HOME/net80/admin);

    Листинг 16. Пример файла tnsnames.ora
                            			
    MY_ORACLE_DB =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = brutus)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = ORA_ON_BRUTUS)
          (SERVER = DEDICATED)
        )
      )
    

  5. Определите элементы базы данных, которые требуется перенести;
  6. Наконец, введите данную информацию в диалоговое окно Connect to Database (см. рисунок 1):
    1. Идентификатор сервиса (SID) из файла tnsnames.ora указан в первой строке диалогового окна MTK;
    2. Установите флажок Use native JDBC driver;
    3. Для определения IP-адреса HOST brutus используйте программу, такую как nslookup, затем введите в соответствующие поля данный адрес и порт;
    4. Наконец, введите имя пользователя и пароль учетной записи.

Теперь к базе данных Oracle можно подключиться через MTK!

Поделитесь мнением...

digg Отзыв на digg.com
del.icio.us Публикация на del.icio.us
Slashdot Публикация на slashdot



Ресурсы

Научиться

Получить продукты и технологии
  • Загрузите MTK: Загрузите удобный инструмент, позволяющий перенести данные из различных исходных баз данных в DB2 или Informix Dynamic Server независимо от платформы;

  • Используйте в следующем проекте по разработке ознакомительные версии ПО от IBM , которые можно загрузить непосредственно с портала developerWorks.


Обсудить


Об авторах

Хемант Бхатия работает инженером по программному обеспечению в лаборатории Lenexa компании IBM. Он также работал с программными продуктами IBM Informix 4GL, классическими базами данных Informix, DB2 Information Integrator и IBM Migration Toolkit.


Николас Гейб является инженером по программному обеспечению в лаборатории Lenexa компании IBM и занимается IBM Migration Toolkit.




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



ДаНетНе знаю
 


 


12345
 


В начало


IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.

    IBM в России Конфиденциальность Контакты