(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Разработка .NET-хранимых процедур для Oracle10g Database for Windows.

Признавая популярность платформы Microsoft .NET среди разработчиков приложений на платформе Windows , Oracle Corporation , начиная с версии 10g Rel.2 интегрировала .NET CLR в свою СУБД. Теперь разработчики приложений для Oracle Database for Windows могут создавать хранимые процедуры в виде сборок .NET . Интеграция с CLR предлагает множество выгод разработчикам приложений для Oracle Database :

  • Стало возможным, для разработки серверной бизнес-логики базы данных, использовать любой язык программирования .NET Framework . Теперь разработчики не ограничены только PL/SQL и Java Stored Procedure .
  • Дополнительно к увеличению производительности разработчика, компании также выиграют, так как разработчики на платформе .NET могут разрабатывать логику приложения базы данных без необходимости изучать специализированный язык PL/SQL .
  • Разработчики приложений теперь могут выбрать - они могут развернуть логику приложения в слое базы данных, в среднем слое, или на компьютере клиента.
  • Платформа .NET имеет в своем составе мощную библиотеку классов. Разработчики баз данных могут увеличить свою продуктивность, используя эту библиотеку. Не требуется создавать собственные библиотеки с "нуля", как это часто происходит в случае с PL/SQL . Дополнительно, на рынке имеется большое количество готовых .NET -компонентов - они также могут быть использованы при создании .NET -хранимых процедур в Oracle Database .

В настоящей статье будет рассмотрены следующие практические вопросы:

  1. Установка и конфигурирование Oracle Database 10g Rel.2 для выполнения .NET -хранимых процедур
  2. Создание .NET -хранимых процедур в среде MS Visual Studio 2005 и .NET Framework 2.0
  3. Публикация хранимых процедур .NET в среду выполнения на сервер Oracle Database
    • Вопросы отладки и распространения .NET -хранимых процедур из среды разработки в промышленную среду

    Теория

    Рассмотрим технологию создания и выполнения .NET -хранимых процедур. Ключевым инструментом для создания .NET -хранимых процедур является Oracle Developer Tools for .NET [ODT .NET] - представляет собой набор свободно доступных инcтрументов разработчика для платформы .NET . В состав ODT .NET входят подключаемые модули ( plug-ins ) к средам разработки Microsoft Visual Studio .NET 2003/2005 . ODT .NET позволяет, наряду с разработкой .NET -хранимых процедур, также создавать клиентские приложения работающие с СУБД Oracle Database. Для взаимодействия с базами данных Oracle используются механизмы ADO .NET .
    В случае если для выполнения приложений используется окружение NET Framework версии 1.1, то для разработки используется MS Visual Studio 2003 и ADO .NET 1.1. Если же приложения планируется выполнять в окружении .NET Framework версии 2.0 - для разработки используется MS Visual Studio 2005 и ADO .NET 2.0.

    Для трансляции высокоуровневых вызов ADO .NET в "родные" ( native ) низкоуровневые вызовы Oracle Call Interface , корпорация Oracle поставляет свой собственный провайдер ADO DB .NET . В составе клиентского программного обеспечения Oracle Database 10g Rel.2 Client поставляется два провайдера доступа - для версий ADO .NET 1.1 и ADO .NET 2.0 .

    Для выполнения хранимых процедур, реализованных в сборках .NET , на сервере базы данных, предназначен компонент Oracle Database Extensions for .NET [ODE .NET] . Указанный компонент входит в дистрибутив Oracle Database 10.2.0 for Windows .


    Рис.1 Поддержка технологий .NET в Oracle Database for Windows

    Установка

    Установка Oracle Database

    Прежде всего, необходимо отметить тот очевидный факт, что возможность создания .NET -хранимых процедур возможна только для Oracle Database на платформе MS Windows . Поддержка выполнения .NET -хранимых процедур доступна во всех редакциях СУБД Oracle : начиная от бесплатной версии ( Express Edition ) и заканчивая корпоративной редакцией ( Enterprise Edition ).

    Для включения возможности выполнения .NET -хранимых процедур, при установке программного обеспечения Oracle Database 10g Rel.2 for Windows , в списке компонентов необходимо выбрать Oracle Database Extensions for .NET .


    Рис.2 Выбор установки ODE.NET в среде Oracle Universal Installer

        Установка ODE .NET 10.2.0.2

    Следующим шагом, для включения поддержки .NET Framework версии 2.0 в .NET-хранимых процедурах, нужно установить обновление (patch) ODE .NET 10.2.0.2. ODE .NET 10.2.0.2 входит в состав Oracle Developer Tools for .NET.

    Загрузить ODT .NET можно с сайта Oracle Technology Network по следующему адресу: /technology/software/tech/dotnet/utilsoft.html

    При установке обновления ODT .NET 10.2.0.2 , в списке компонентов необходимо выбрать Oracle Database Extensions for .NET


    Рис.3 Выбор Oracle Database Extensions for .NET при установке ODT .NET

    Нужно обратить внимание, что ODE .NET необходимо устанавливать в тот же каталог, в который установлен Oracle Database .


    Рис.4 Выбор при установке ODE 10.2.0.2, каталога с установленной Oracle Database

    Далее, следует выбрать: с помощью какой версии .NET Framework будут созданы и будут далее выполняться .NET-хранимые процедуры.


    Рис.5 Выбор версии .NET Framework для выполнения .NET-хранимых процедур

    После установки обновления ODE .NET 10.2.0.2 , в среде SQL*Plus следует скомпилировать новую версию пакета DBMS_CLR , с помощью следующего набора команд:

    SQL> connect / as sysdba
    SQL> @?/rdbms/admin/dbmsclr.plb

    Установка Oracle Developer Tools Установка Oracle Developer Tools for Visual Studio .NET Установка Oracle Developer Tools Для поддержки процесса разработки .NET -хранимых процедур, необходимо установить подключаемый модуль, входящий в состав ODT .NET , к среде MS Visual Studio .
    В случае установки Oracle Developer Tools for Visual Studio .NET на машине с уже установленной Oracle Database , ODT .NET необходимо установить в отдельный каталог ( ORACLE_HOME ).

    Oracle Developer Tools for Visual Studio .Net , также как и ODE .NET , входит в состав Oracle Developer Tools for .NET 10.2.0.2 .


    Рис.6 Установка Oracle Developer Tools for Visual Studio .NET

    На следующем шаге необходимо выбрать набор компонентов для соответствующей версии MS Visual Studio .NET :


    Рис.7 Выбор компонентов для MS Visual Studio .NET 2005

    Конфигурирование

    Процесс настройки ПО Oracle Database для выполнения .NET -хранимых процедур состоит из двух шагов:

    • установки ключей реестра для соответствующего ORACLE_HOME ;
    • настройки прослушивающего процесса Oracle Listener .

        Настройка реестра MS Windows

    Для определения версии .NET Framework, которая будет использоваться при создании и выполнении .NET-хранимых процедур, необходимо вручную создать строковый ключ реестра с именем ".NETFramework" в разделе:

    "HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_(HOMENAME)ODE"
    Где: HOME_NAME - внутреннее имя для домашнего каталога, в который установлено ПО Oracle Database .

    Значения ключа " .NET Framework " могут быть следующими:

    • v1.0.3705
    • v1.1.4322
    • v2.0.50727

    Рис.8 Определение версии .NET Framework 2.0 для выполнения .NET-хранимых процедур

    На Рис.8 приведен пример определения Net Framework версии 2.0 в качестве среды выполнения .NET -хранимых процедур.

    Настройка сетевого прослушивающего процесса Oracle Listener

    В случае создания сетевого прослушивающего процесса с помощью Net Configuration Assistant , файлы listener.ora и tnsnames.ora создаются автоматически, но также их можно создать и вручную.

    Содержимое файла listener.ora (ПО Oracle Database в данном случае установлено в каталог c:oracleproduct10.2.0db ) должно иметь следующий вид:

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = c:oracleproduct10.2.0db)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = c:oracleproduct10.2.0db)
          (PROGRAM = extproc)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = mypc)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
      )
    

    Содержимое файла tnsnames.ora должно включать в себя два алиаса:

    ORACLR_CONNECTION_DATA и EXTPROC_CONNECTION_DATA :

    ORACLR_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = CLRExtProc)
          (PRESENTATION = RO)
        )
      )
    
    EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )
    

    В заключение, необходимо убедиться, что запущены два сервиса, которые необходимы для выполнения .NET-хранимых процедур:

    • Oracle(KEY_NAME)ClrAgent
    • Oracle(KEY_NAME)TNSListener


    Рис.9 Для выполнения .NET-хранимых процедур на сервере должны быть запущены сервисы TNSLlistener и CLRAgent

    Создание .NET-хранимых процедур в среде MS Visual Studio 2005 и .NET Framework 2.0

    В данном разделе будет рассмотрен процесс создания и выполнения .NET -хранимых процедур с помощью среды разработки MS Visual Studio 2005 и среды выполнения .NET Framework 2.0 .
    После установки ODT .NET в среде MS Visual Studio 2005 доступен новый шаблон проекта " Oracle Projects ".


    Рис.10 Выбор шаблона проекта "Oracle Project" в среде MS Visual Studio 2005

    После выбора шаблона проекта " Oracle Project ", автоматически генерируется следующий шаблон кода (используется язык программирования C# ):

      using System;
      using System.Collections.Generic;
      using System.Text;
      using System.Data;
      using Oracle.DataAccess.Client;
      using Oracle.DataAccess.Types;
    
     namespace OraNetSPSample1
    {
         public class  public static void StoredProcedure1()
            {
              // enter you code here
            }
        }
    }
    

    В качестве примера, будет создана хранимая функция getDatabaseVersionStr , возвращающая строку с версией базы данных Oracle Database :

     using System;
     using System.Collections.Generic;
     using System.Text;
     using System.Data;
     using Oracle.DataAccess.Client;
     using Oracle.DataAccess.Types;
    
     namespace OraNetSPSample1
    {
         public class Class1
        {
             public static String v_xResult;
    
                // Получаем объект соединения с базой данных:OracleConnection();
                OracleConnection v_xConneсtion =  newOracleConnection();
                
                //открываем соединение:
                v_xConnection.Open();
    
                //создаем команду-запрос к базе даных:
                OracleCommand v_xCommand = v_xConnection.CreateCommand();
                v_xCommand.CommandText = "select * from v$version";
    
                //выполняем запрос:
                OracleDataReader v_xReader = v_xCommand.ExecuteReader();
    
                //считываем результат
                v_xReader.Read();
                v_xResult = v_xReader.GetString(0);
    
                //освобождаем объекты
                v_xReader.Close();
                v_xCommand.Dispose();
    
                //Возвращаем результат:
                 return v_xResult;
            }
        }
    }
    

    В одной сборке может содержаться несколько .NET -хранимых процедур. Все они должны быть реализованы как статические методы класса.

    Публикация .NET-хранимых процедур в среду выполнения на сервере Oracle Database Процесс публикации .NET-хранимой процедуры на сервере Oracle Database состоит из двух шагов:

    • копирование скомпилированной сборки на файловую систему сервера с установленной БД Oracle Database ;
    • создание PL/SQL -оболочки для прозрачного вызова .NET -процедуры в коде PL/SQL .

    В отличие от Java -хранимых процедур, PL/SQL -оболочка создается не явным образом, а в виде зашифрованной PL/SQL -процедуры с вызовами внутреннего системного пакета DBMS_CLR . Генерацию этой процедуры-оболочки производит мастер установки ( deploy wizard ) ODT .NET .

    В ходе процесса публикации, также создается внешняя библиотека ( library ) базы данных Oracle . Указанная библиотека ссылается на dll -файл сборки .NET .

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

    Для запуска мастера публикации сборки необходимо в среде MS Visual Studio выбрать пункт меню " Build/Deploy <имя проекта>".


    Рис.11 Запуск мастера публикации сборки на сервере Oracle Database

    В появившемся диалоговом окне необходимо создать соединение к нужной базе данных:

    Рис.12 Создание соединения к базе даных
    Следует обратить внимание, что пользователь, указанный в соединении, должен иметь роль SYSDBA .

    В следующем диалоговом окне необходимо выбрать режим публикации сборки с хранимой процедурой на стороне сервера Oracle Database . Всего возможны три режима публикации:

    • Copy assembly and generate stored procedure;
    • Copy assembly only
    • Generate stored procedures only.

    При первой установке .NET -хранимой процедуры следует выбрать пункт " Copy assembly and generate stored procedure ".


    Рис.13 Выбор режима публикации .NET-процедуры

    В следующем диалоговом окне необходимо указать имя библиотеки (external library) Oracle Database; по умолчанию устанавливается имя dll-файла сборки.


    Рис.14 Определение имени внешней библиотеки (external library) Oracle Database

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


    Рис.15 Выбор файлов дял копирования на сервер

    Для определения схемы БД, в которой будет опубликована .NET -хранимая процедура, предназначен следующий шаг мастера.


    Рис.16 Определение схемы БД для публикации хранимой процедуры

    Важным аспектом публикации .NET -хранимой процедуры является установка соответствия между типами ее параметров и типами PL/SQL . Установка соответствия производится с помощью выбора кнопки " Parameter Type Mapping: ".


    Рис.17 Установка соответствия типов .NET и Oracle Database

    Более полная информация по соответствию типов содержится в документе OracleR Data Provider for .NET Developer's Guide 10g Release 2 (10.2.0.2)B28089-01

    На заключительном шаге можно просмотреть и сохранить SQL -скрипт создания PL/SQL -оболочки для .NET -хранимой процедуры.


    Рис.18 Выполнение .NET-хранимых процедур

    После публикации .NET -хранимой процедуры на сервере базы данных Oracle Database , ее вызов аналогичен вызову любой другой PL/SQL-процедуры.
    Для проверки работоспособности процедуры можно выполнить в среде SQL*Plus следующий набор команд:

    SQL> conn spnet_demo/spnet_demo
    Соединено.
    SQL> set serveroutput on
    SQL> exec dbms_output.put_line(GetDatabaseVersionStr);
    Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod
    
    Процедура PL/SQL успешно завершена.
    

    Отличительной особенностью .NET -хранимых процедур является возможность их отладки на стороне клиента. Для этого достаточно заменить строку соединения в свойстве ConnectionString класса OracleConnection на соединение к удаленной базе данных. Для этого можно использовать либо макроподстановку, либо глобальную строковую переменную:

    v_xConnection.ConnectionString = v_xConnectionStr;

    В преведенным выше примере кода, простой заменой значения переменной v_xConnectionStr на значение "context connection=true" , можно обеспечить возможность выполнения статических методов на сервере БД Oracle .
    Для разработки .NET -хранимых процедур можно использовать любые среды и языки программирования которые поддерживают Microsoft .NET , например Borland Delphi 2005/2006. Для этого необходимо лишь сгенерировать процедуру создания PL/SQL оболочки в среде MS Visual Studio 2003 , и перевести заголовок класса в соответствующий эквивалент на языке Object Pascal. Для публикации сборки, созданной в Borland Delphi , на сервер Oracle Database , достаточно просто скопировать dll-файл сборки в каталог %ORACLE_HOMEbinclr .

    Заключение

    Обеспечив возможность создания и выполнения .NET-хранимых процедур, корпорация Oracle предоставила в распоражение разработчиков мощные возможности по созданию приложений .NET которые работают с Oracle Database на платформе MS Windows.
    Использование .NET-хранимых процедур позволит объединить огромную мощь серверов Oracle Database10g с новыми технологическими и архитектурными решениями которые предлагает платформа Microsoft .NET.

    Игорь Мельников,
    Oracle СНГ,
    ведущий специалист по технологиям Oracle GRID

    Ссылки по теме


     Распечатать »
     Правила публикации »
      Написать редактору 
     Рекомендовать » Дата публикации: 11.02.2008 
     

    Магазин программного обеспечения   WWW.ITSHOP.RU
    Oracle Database Standard Edition 2 Named User Plus License
    Oracle Database Personal Edition Named User Plus Software Update License & Support
    Oracle Database Standard Edition 2 Processor License
    Oracle Database Personal Edition Named User Plus License
    Quest Software. Toad for Oracle Development Suite
     
    Другие предложения...
     
    Курсы обучения   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Магазин сертификационных экзаменов   WWW.ITSHOP.RU
     
    Другие предложения...
     
    3D Принтеры | 3D Печать   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Новости по теме
     
    Рассылки Subscribe.ru
    Информационные технологии: CASE, RAD, ERP, OLAP
    Новости ITShop.ru - ПО, книги, документация, курсы обучения
    CASE-технологии
    OS Linux для начинающих. Новости + статьи + обзоры + ссылки
    СУБД Oracle "с нуля"
    Новые материалы
    Краткие описания программ и ссылки на них
     
    Статьи по теме
     
    Новинки каталога Download
     
    Исходники
     
    Документация
     
     



        
    rambler's top100 Rambler's Top100