« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          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
    Популярное
Функция AccessResource

Перемещение изображения по форме с помощью мыши

Создание простого COM-объекта

Схемы блокировок в Базах Данных

Словарь IT'шника

Функция GetAtomName

Журнал регистрации

Функция KillTimer

Библиотека для создания мастера (wizard) под .NET Framework 2.0

Hooks - аспекты реализации.




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 186
Пользователей: 0

Статьи:: Базы данных :: Oracle :: Разработка .NET-хранимых процедур для Oracle10g Database for Windows. Профессионалу-разработчику



отправить ссылку другу версия для печати  Обсудить на форуме

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



Игорь Мельников melnikov_ii@mail.ru

СОДЕРЖАНИЕ


Введение

Признавая популярность платформы 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
    4. Вопросы отладки и распространения .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 for Visual Studio .NET Для поддержки процесса разработки .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 Class1
    {
        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 getDatabaseVersionStr()
        {
            String v_xResult;

            // Получаем объект соединения с базой данных:
            OracleConnection v_xConnection = new OracleConnection();
            v_xConnection.ConnectionString = "context connection=true";
            
            //открываем соединение:
            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




Подгрузка через AJAX HTML-кода, содержащег....

AJAX

При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Обзор нового релиза самой мощной Ajax библ....

AJAX

Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Firebug 1.3 и 1.4 alpha — что нового и инт....

Вебмастеру

Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 19.11.2008

Остальные статьи:

Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для о...
Пишем правильный online WYSIWYG-редактор


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия