(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 Processor License
    Oracle Database Personal Edition Named User Plus Software Update License & Support
    Oracle Database Personal Edition Named User Plus License
    Oracle Database Standard Edition 2 Named User Plus License
    Oracle Database Standard Edition 2 Named User Plus License
     
    Другие предложения...
     
    Курсы обучения   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Магазин сертификационных экзаменов   WWW.ITSHOP.RU
     
    Другие предложения...
     
    3D Принтеры | 3D Печать   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Новости по теме
     
    Рассылки Subscribe.ru
    Информационные технологии: CASE, RAD, ERP, OLAP
    Новости ITShop.ru - ПО, книги, документация, курсы обучения
    CASE-технологии
    СУБД Oracle "с нуля"
    Новые материалы
    Новые программы для Windows
    Windows и Office: новости и советы
     
    Статьи по теме
     
    Новинки каталога Download
     
    Исходники
     
    Документация
     
     



        
    rambler's top100 Rambler's Top100