![]() |
|
|
Дипломная работа: Использование Internet/intranet технологий для организации доступа к базам данных3.3. обеспечение доступа к приложению Web через URL После создания HTML файла приложения и размещения соответствующего FMX-файла, требуется предоставить конечным пользователям доступ к приложению. Для этого необходимо просто обеспечить пользователей URL HTML файла приложения. Конечные пользователи будут вызывать URL в Java-совместимом Web-обозревателе и запускать соответствующее приложение. Для этого можно создать HTML-страницу, содержащую URL-ссылку на HTML файл приложения. Пример URL: http://gemini.math.cgu.chel.su/web_html/bibliogr.htm Расшифровка URL: Протокол: http Домен: gemini.csu.ac.ru Виртуальный каталог для HTML файлов: /web_html Статический HTML файл: bibliogr.htm 4. настройка клиента форм Когда конечный пользователь запускает Web приложение Oracle, с сервера приложений в его обозреватель загружается клиент форм (и файлы родственных Java-классов). В процессе работы пользователя с приложением, по мере необходимости могут подгружаться файлы дополнительные Java-классы. Существует возможность управления тем, как файлы классов будут загружаться в обозреватель пользователя. Есть два метода загрузки: Инкрементная (Increment). Является настройкой по умолчанию и обеспечивает загрузку только тех файлов с Java-классами, которые необходимы для отображения начального состояния приложения. Архивная (Bundled). В момент запуска приложения, на клиентскую машину загружаются один или несколько архивов с Java-классами. Преимущество архивов в том, что каждый архив загружается за одну сетевую транзакцию. Для использования этого варианта необходимо указать имена соответствующих JAR-файлов в HTML файле приложения. Клиенты. Клиентская часть системы практически не требует настройки, так как базируется на ⌠тонком клиенте■ - Java-совместимом Web-обозревателе. Необходимо использовать обозреватель, имеющий поддержку JDK (Java Development Kit √ стандарт Java) версии 1.1.x или выше. 3.2 Технология доступа к базам данных на стороне сервера с использованием механизма CGI В соответствии с идеологией CGI-интерфейсов, вся функциональность размещается на сервере приложений. Ее реализует один или несколько CGI-скриптов, которые получают от Web-сервера запрос пользователя. Результатом выполнения скрипта является HTML-документ, содержащий информацию из базы данных. Этот документ передается Web-серверу, а затем отправляется в клиентский обозреватель по протоколу HTTP. Дополнительно, в результате выполнения скрипта возможно изменение информации в базе данных. Для реализации взаимодействия "клиент-сервер" важно, какой метод HTTP запроса использует клиентская часть при обращении к WWW серверу. В общем случае, запрос - это сообщение, посылаемое клиентом серверу. Первая строка HTTP запроса включает в себя метод, который должен быть применен к запрашиваемому ресурсу, идентификатор ресурса (URI - Uniform Resource Identifier), и используемую версию HTTP-протокола. Применительно к CGI, клиентская часть использует методы запроса POST и GET. Метод POST применяется для запроса серверу, чтобы тот принял информацию, включенную в запрос, как относящуюся к ресурсу, указанному идентификатором ресурса. Метод GET используется для получения любой информации, идентифицированной идентификатором ресурса в HTTP запросе. Согласно спецификации, CGI определяет 4 информационных потока: Переменные окружения; Стандартный выходной поток; Стандартный входной поток; Командная строка. Переменные окружения Ниже приводится значение некоторых переменных, объявленных в стандарте CGI: CONTENT_LENGTH - значение этой переменной соответствует длине стандартного входного потока в символах; QUERY_STRING - значение этой переменной соответствует строке символов следующей за знаком "?" в URL соответствующему данному запросу. Эта информация не декодируется сервером. 2. Стандартный вывод CGI - модуль выводит информацию в стандартный выходной поток. Этот вывод может представлять собой или документ, сгенерированный cgi-модулем, или инструкцию серверу, где получить необходимый документ. Обычно cgi-модуль производит свой вывод. Преимущество такого подхода в том, что cgi-модуль не должен формировать полный HTTP заголовок на каждый запрос. Вывод cgi-модуля должен начинаться с заголовка содержащего определенные строки и завершаться двумя символами CR (0x10). Любые строки не являющиеся директивами сервера, посылаются непосредственно клиенту. На данный момент, CGI спецификация определяет три директивы сервера: Content-type MIME или тип возвращаемого документа. Например: Content-type: text/html <CR><CR> сообщает серверу, что следующие за этим сообщением данные - есть документ в формате HTML; Location указывает серверу, что возвращается не сам документ, а ссылка на него. Если аргументом является URL, то сервер передаст указание клиенту на перенаправление запроса. Если аргумент представляет собой виртуальный путь, сервер вернет клиенту заданный этим путем документ, как если бы клиент запрашивал этот документ непосредственно. Status задает серверу HTTP/1.0 строку-статус, которая будет послана клиенту в формате: nnn xxxxx где: nnn - 3-х цифровой код статуса ххххх - строка причины Например: HTTP/1.0 200 OK Server: NCSA/1.0a6 Content-type: text/plain <динамически генерируемый текст сообщения3. Стандартный входной поток В случае метода запроса POST данные передаются как содержимое HTTP запроса и будут посланы в стандартный входной поток. Данные передаются cgi-модулю в следующей форме: name=value&name1=value1&...&nameN=valueN где name - имя переменной, value - значение переменной, N - количество переменных На файловый дескриптор стандартного потока ввода посылается CONTENT_LENGTH байт. Так же сервер передает cgi-модулю CONTENT_TYPE (тип данных). Сервер не посылает символ конца файла после передачи CONTENT_LENGTH байт данных или после того, как cgi-модуль их прочитает. Переменные окружения CONTENT_LENGTH и CONTENT_TYPE устанавливаются в тот момент, когда сервер выполняет cgi-модуль. Таким образом, если в результате исполнения формы с аргументом тега FORM - METHOD="POST" сформирована строка данных firm=МММ&price=100023, то сервер установит значение CONTENT_LENGTH равным 21 и CONTENT_TYPE в application/x-www-form-urlencoded, а в стандартный поток ввода посылается блок данных. В случае метода GET, строка данных передается как часть URL. Например http://host/cgi-bin/script?name1=value1&name2=value2 В этом случае переменная окружения QUERY_STRING принимает значение name1=value1&name2=value2 4. Аргументы командной строки СGI-модуль в командной строке от сервера получает: остаток URL после имени cgi-модуля в качестве первого параметра (первый параметр будет пуст, если присутствовало только имя cgi-модуля); список ключевых слов в качестве остатка командной строки для скрипта поиска, или чередующиеся имена полей формы с добавленным знаком равенства и соответствующих значений переменных. Ключевые слова, имена и значения полей формы передаются декодированными (из HTTP-URL формата кодирования) и перекодированными в соответствии с правилами кодирования Bourne shell [12] так, что cgi-модуль в командной строке получит информацию без необходимости осуществлять дополнительные преобразования (рассматривается реализация на Unix-платформе). Исходя из разницы методов запросов GET и POST, можно определить последовательность действий для обработки входных данных cgi-модуля для разных типов запросов. I. Для метода GET Получить значение переменной QUERY_STRING; Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.); Сформировать структуру соответствия "имя - значение" для дальнейшего использования в cgi-модуле. II. Для метода POST Получить из стандартного входного потока CONTENT_LENGTH символов; Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.); Сформировать структуру соответствия "имя-значение" для дальнейшего использования в cgi-модуле. После формирования структуры "имя-значение" можно приступить к решению задач, ради которых, собственно, создавался cgi-модуль. Следующим важным моментом является динамическое формирование cgi-модулем HTML-документа (оформление результата работы модуля). Например, таблицы выборки из базы данных. Для этого cgi-модуль должен выдать в стандартный выходной поток заголовок, состоящий из строки: Content-type: text/html и пустой строки (двух символов CR). После этого заголовка можно выдавать любой текст в формате HTML. Как уже говорилось ранее, CGI-скрипт играет роль посредника между Web-сервером и другими видами серверов, в частности с сервером баз данных. В качестве языка CGI-скриптов часто выступает язык Perl [11] (Practical Extraction and Report Language)- интерпретируемый язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Здесь будет освящен вопрос доступа к базе данных Oracle из языка perl. Это возможно благодаря наличию в свободно-доступной библиотеке Perl-модулей (доступна на http://www.perl.com/CPAN/) пакетов для работы с базами данных: DBI и DBD-Oracle. DBI представляет собой абстрагированный от конкретного SQL-сервера интерфейс-надстройку над интерфейсом DBD-xxxx, который закреплен за конкретным SQL-сервером. Ниже приводятся описание некоторых функций из пакета DBI: $dbh = DBI->connect('dbi:Oracle:'.'db_alias', 'db_user', 'db_pwd', {RaiseError => 1}); $dbh->{RaiseError} = 1; # do this, or check every call for errors - установка соединения с базой данных Oracle $cursor = $dbh->prepare("SELECT Fie1d, Field2 FROM Table1 ORDER BY Field2"); $cursor->execute; while (@row = $cursor->fetchrow_array) { print "$row[0], $row[1] \n"; } - выполнение запроса к базе данных (значения полей Field1, Filed2 помещаются в массив @row) my($Field1, $Field2, $Field3); $cursor = $dbh->prepare("SELECT Field1, Field2, Field3 FROM Table1"); $cursor->bind_columns(undef, \($Field1, $Field2, $Field3)); $cursor->execute; while $cursor->fetch) { print "$Field1, $Field2, $Field3 \n"; } - выполнение запроса к базе данных (значения полей Field1, Field2, Field3 помещаются в переменные $Field1, $Field2, $Field3) $rc = $cursor->finish; $rc = $dbh->disconnect; - закрытие курсора и отсоединение от базы данных. Рассмотрим реализацию, базирующуюся на Web-сервере Apache для Unix-систем. Для того чтобы Web-сервер мог выполнять CGI-скрипты, написанные на языке perl, файл с perl-программой должен иметь атрибут ⌠исполняемый■. Если файлы с программой расположены в каталоге, отличном от каталога, прописанного в директиве ScriptAlias (обычно cgi-bin) файла конфигурации Web-сервера srm.conf, то дополнительно необходимо создать строку, вида AddHandler cgi-script .cgi в файле srm.conf (предполагается, что файлы будут иметь расширение .cgi). После внесения любых изменений в файлы конфигурации Web-сервера, его необходимо перезапустить командой $ Apache_HOME/sbin/apachectl restart где Apache_HOME √ каталог, где расположен Web-сервер. Первой строкой perl-программы должна быть строка, вида #!/usr/local/bin/perl задающая путь до интерпретатора языка perl в системе. 4. Приложения технологогии доступа к базам данных через Web 4.1 Реализация информационно-поисковой системы ⌠Библиографический каталог по программированию и базам данных■ с помощью технологии Oracle Web deployment Ключевым моментом в вопросе реализации системы является выбор инструментальных средств. В качестве СУБД для реализации была выбрана реляционная СУБД Oracle для Windows NT. Это связано с мощностью и гибкостью сервера Oracle как многопользовательского сервера баз данных, а также с широким набором средств разработки для этой системы. Немаловажно также было и то, что Oracle поставляет технологию, называемую Web deployment, которая позволяет легко помещать работающие приложения Oracle в Web. Согласно технологическому циклу разработки приложений для Web, описанному в главе 3, процесс реализации разбился на подзадачи реализации отдельных частей (на сервере баз данных, на сервере приложений и на клиенте): Перенос базы данных Были подготовлены текстовые файлы SQL-сценариев (SQL - Structure Query Language √ базовый язык Oracle [7]), создающие структуру базы данных (см. Приложение). В системе MS Access реализована служебная программа Import, генерирующая файл SQL-сценария с данными из базы данных MS Access. Такой подход делает базу данных легко переносимой, так как она может быть представлена как совокупность текстовых файлов, содержащих SQL инструкции. Для создания структуры базы данных и занесения данных необходимо выполнить эти файлы, работающие в пакетном режиме, с помощью инструментов SQL *Plus (или SQL Worksheet), представляющих собой SQL-консоль Oracle. Для упрощения процесса переноса базы данных были созданы командные файлы MS-DOS (а для CGI-реализации √ командные файлы Unix), вызывающие утилиту SQL *Plus с необходимыми параметрами. Настройка сервера приложений разработка и тестирование формы; В качестве основного инструментария использовался пакет Forms Builder 5.0, входящий в систему разработки Oracle Developer/2000 R2.0. С его помощью была разработана клиентская часть системы (и сгененрирован FMX-файл), работающая в среде Developer/2000 Forms Runtime (см. Приложение). настройка сервера приложений (создание виртуальных каталогов); В качестве сервера приложений использовался Microsoft Internet Information Server. запуск и настройка сервера форм; обеспечение доступа к приложению через сервер приложений (создание ссылки на приложение, регистрация специального пользователя). Был создан пользователь Oracle (с именем Bibl), имеющий право только на чтение данных из таблиц базы данных. Клиентская часть В качестве клиентов, были опробованы следующие Web-обозреватели: Microsoft Internet Explorer 4.0, Netscape Communicator 4.04 (более ранние версии не рассматривались, в силу того, что они заведомо несовместимы со стандартом JDK 1.1.x). Корректная поддержка руского языка в Java-апплетах существовала лишь в Microsoft Internet Explorer 4.0 rus, поэтому в качестве клиентской части было решено взять этот обозреватель. Однако, интерфейс с использованием Java является недостаточно эффективным в силу низких скоростных характеристик имеющихся каналов связи, а также недостаточной надежности построенных на основе описаной технологии приложений. Поэтому, для рализации было решено использовать интерфейс на базе CGI, который является более эффективным в данном контексте. 4.2 Реализация информационно-поисковой системы ⌠Библиографический каталог по программированию и базам данных■ с использованием механизма CGI В данной разработке в качестве Web-сервера выступала машина под управлением ОС Linux и Web-сервером Apache. На этой же машине была установлена СУБД Oracle в объеме клиентской инсталляции (около 30 Мб). Сервер баз данных под управлением СУБД Oracle был установлен на машине с системой Windows NT. Физически система представляет собой набор CGI-скриптов, написанных на языке perl. Ниже следует описание функциональности каждого скрипта с указанием параметров его вызова. search.cgi √ скрипт, который выполняет поиск и печатает его результаты в форматированном виде (может передавать управление скрипту card.cgi) Параметры вызова: search.cgi?search_string=search_string&search_type=search_type&portion=portion где search_string √ искомая подстрока (или код записи при поиске по ссылке), search_type √ тип поиска (1 √ шифр, 2 √ автор, 3 √ название, 4 - ключевое слово, 5 √ тема), portion √ указатель текущего блока записей относительно всех записей, возвращенных запросом card.cgi √ скрипт, выводящий информацию по выбранной единице библиографического каталога Параметры вызова: card.cgi?code где code √ код записи, хранящей информацию о выбранной единице reference.cgi √ скрипт, создающий выпадающий список для выбора библиографической единицы по ссылке (затем передает управление скрипту search.cgi) Параметры вызова: нет subject.cgi √ скрипт, ответственный за представление 3-х уровневого систематического каталога (затем передает управление скрипту search.cgi) Параметры вызова: subject.cgi √ первый уровень систематического каталога, subject.cgi?code1 √ второй уровень систематического каталога, subject.cgi?code1&code2 √ третий уровень систематического каталога, subject.cgi?code1&code2&code3 √ выдача библиографических единиц, подходящих под текущую классификацию, где code1, code2, code3 √ коды соответствующих тем систематического каталога common.cgi, module.cgi √ модули, содержащие общие для всей системы подпрограммы и константы Кроме того, система содержит несколько HTML-форм, хранящихся в файлах author.html, index.shtml, keyword.html, title.html. CGI-скрипты вызываются как напрямую, так и из этих форм. Для предотвращения ввода пустой строки поиска, в формы встроен код на языке Java-Script, препятствующий этому. В случае если результат запроса содержит много записей, предусмотрена постраничная передача результата запроса клиенту. 4.3 Реализация системы отчетности по торгам на Южно-Уральской Фондовой Бирже с использованием механизма CGI Торги на Южно-Уральской Фондовой Бирже проходят с использованием электронной Торговой Системы. Торговая Система Южно-Уральской Фондовой Биржи предназначена для организации биржевых торгов ценными бумагами на ЮУФБ в соответствии с ⌠Правилами совершения операций с ценными бумагами в НП ЮУФБ■. В системе реализована работа с областными краткосрочными облигациями (ОКО) Челябинской области, регламентируемая ⌠Положением о выпуске и обращении ОКО■. Торговая система работает под управлением СУБД Oracle 7.3.2 для SCO Unix Open Server Enterprise v.5.0.4. Клиентские рабочие места организованы под управлением SQL*Oracle Forms 3.0, SQL*Oracle Menu 5.0 и SQL*Oracle Reports Writer 1.1. Была поставлена задача расширить существующую систему автоматического предоставления отчетности по торгам в соответствии с ⌠Положением о представлении отчетности организаторами торговли на рынке ценных бумаг■, утвержденном постановлением Федеральной комиссии по рынку ценных бумаг (ФКЦБ). Разработанная система соответствует ⌠Положению о представлении отчетности организаторами торговли на рынке ценных бумаг■, утвержденному постановлением ФКЦБ и представляет собой программный комплекс, написанный на языке perl и работающий через обозреватель Internet. В системе реализованы ежедневный и ежемесячный отчеты: ⌠Итоги торгов эмиссионными ценными бумагами за торговый день■ и ⌠Сведения о участниках торгов, имеющих наибольшую сумму совершенных сделок с ценными бумагами, допущенными к обращению через организатора торговли■. В систему интегрирован ⌠электронный календарь■, с помощью которого можно выбрать дату для отчета. Это позволяет получить отчет за любой период времени, используя базу данных Торговой Системы. Система работает под управлением системы SCO Unix Open Server Enterprise v.5.0.4. и представляет собой набор CGI-скриптов, т.е. внешних по отношению к Web-серверу программ. При наборе URL (Uniform Resource Locator) скрипта, Web-сервер запускает программу и передает ей соответствующие параметры вызова. Программа, в свою очередь, соединяется по протоколу SQL*Net с сервером Oracle (который в данной реализации расположен на отдельной машине) и выбирает необходимые ей для отчета данные. Затем на основе полученных данных CGI-скрипт генерирует HTML-код и возвращает его Web-серверу. Web-сервер пересылает полученный от программы-скрипта HTML-код Internet-обозревателю клиента, который и выводит его в своем окне. Физически система находится в 4-х файлах (1 модуль с общими функциями и 3 файла, реализующие функциональность электронного календаря■ и 2-х отчетов соответственно). Заключение При выполнении дипломного проекта были получены следующие основные результаты: освоена технология разработки приложений на базе СУБД Oracle с использованием системы разработки Oracle Developer/2000 R2.0; изучена технология создания Oracle приложений с WWW-интерфейсом на базе механизма OracleWeb deployment; используя технологию Web deployment, при использовании системы разработки приложений Oracle Developer/2000 R2.0 создано приложение ⌠Справочно-библиографическая система■; предложена технология создания Web-ориентированных интерфейсов к базам данных с использованием интерфейса CGI; на основе описанной CGI-технологии создана Internet версия аннотированного ⌠библиографического каталога по программированию и базам данных■; разработан и реализован механизм переноса данных из базы данных библиографического каталога в формате MS-Access в новую базу данных в формате Oracle; осуществлено внедрение в промышленную эксплуатацию Internet версии библиографического каталога по программированию и базам данных на математическом факультете Челябинского государственного университета: http://reindeer.math.cgu.chel.su/oracle/bibl (акт о внедрении прилагается); на основе описанной CGI-технологии реализована и внедрена в промышленную эксплуатацию система отчетности по торгам на Южно-Уральской фондовой бирже: http://www.suse.ru:8001/ (акт о внедрении прилагается); по теме дипломной работы выполнена одна публикация: Соколинский Л.Б., Апанасенко Е.В. Технологические аспекты разработки Internet версии аннотированного библиографического каталога по программированию и базам данных // Телематика'99: Тез. докл. Всерос. конф. Санкт-Петербург. 1999. Список литературы Когаловский М.Р. Технология баз данных на персональных ЭВМ. - М.: ⌠Финансы и статистика■. 1992. - 256 с. Разработка приложений Microsoft Access 7.0 для Windows 95. - Microsoft Corp. Publ. - 1996. 898 с. Сайгин Ю., Филимонов Б., Глонти Н. Создание приложений Web к базам данных Oracle // СУБД 1996. √ N 5-6 Кузнецов С.Д. Доступ к базам данных посредством технологии WWW // СУБД 1996.- N 5-6 Oracle Developer/2000. Forms 4.5 Reference Manual. - Oracle Corp. - 1995. Vol 1-2 Developer/2000 Guidelines for Building Applications Release 2.0 √ - Oracle Corp. - 1997. Oracle Server V2, 3, ..., 7.0, 7.1 ... and Counting. // EOUG Oracle User Forum 94 17-20 April 1994, Maastriht, The Netherlands. The Committee for Advanced DBMS Function. Third Generation Database Manifesto. // SIGMOD Record, 1990. - Vol. 19, N 3, pp. 31-44 Лашманов А. ORACLE √ история, состояние и перспективы // СУБД 1995.- N1, C.55 В. Цишевский, Язык и архитектура Java, Jet Infosystems - electronic version Wall L., Christiansen T., Schwartz R. Programming Perl. 2nd ed. O'Reilly & Associates, 1996. Кристиан К. Введение в операционную систему UNIX. - М.: Финансы и статистика. 1985. √ 318 с. Oracle Product Documentation Library. √ Oracle Corp. - 1995. Приложение 1. Описание структуры базы данных ⌠Библиографического каталога■ Соответствие названий таблиц в базе данных-прототипе (MS Access) и в разработанной базе данных (Oracle).
Исходный текст файла-сценария SQL, создающего структуру базы данных и хранимые процедуры: DROP TABLE Alphabetical_Catalogue; DROP TABLE SC2; DROP TABLE SC3; DROP TABLE Systematic_Catalogue; CREATE TABLE Alphabetical_Catalogue (Code NUMBER(6) NOT NULL, Reference VARCHAR2(25) NULL, Authors VARCHAR2(120) NULL, Title VARCHAR2(250) NULL, Is_Article NUMBER(1) NULL, Magazine_Or_Publisher VARCHAR2(200) NULL, Year VARCHAR2(20) NULL, Volume NUMBER(2) NULL, Issue VARCHAR2(20) NULL, From_Page NUMBER(4) NULL, Till_Page NUMBER(4) NULL, Is_Russian NUMBER(1) NULL, Abstract LONG NULL, Paper VARCHAR2(50) NULL, Code1 NUMBER(6) NULL, Code2 NUMBER(6) NULL, Code3 NUMBER(3) NULL, Keyword1 VARCHAR2(50) NULL, Keyword2 VARCHAR2(50) NULL, Keyword3 VARCHAR2(50) NULL, Keyword4 VARCHAR2(50) NULL, Keyword5 VARCHAR2(50) NULL, Keyword6 VARCHAR2(50) NULL, Keyword7 VARCHAR2(50) NULL, Keyword8 VARCHAR2(50) NULL, Priority NUMBER(2) NULL, Home_Library NUMBER(1) NULL, CSU_Library NUMBER(1) NULL) ; CREATE TABLE SC2 (Code2 NUMBER(6) NOT NULL, Title2 VARCHAR2(40) NULL, Code1 NUMBER(6) NULL) ; CREATE TABLE SC3 (CODE3 NUMBER(6) NOT NULL, TITLE3 VARCHAR2(35) NULL, CODE2 NUMBER(6) NULL) ; CREATE TABLE Systematic_Catalogue (Title1 VARCHAR2(30) NULL, Code1 NUMBER(6) NOT NULL) ; CREATE OR REPLACE VIEW A_C AS SELECT Code, Reference, Authors, Title, Is_Article, Magazine_Or_Publisher, Year, Volume, Issue, From_Page, Till_Page, Is_Russian, Abstract, Paper, Keyword1, Keyword2, Keyword3, Keyword4, Keyword5, Keyword6, Keyword7, Keyword8, Priority, Home_Library, CSU_Library, Title1, Title2, Title3 FROM Alphabetical_Catalogue, Systematic_Catalogue, SC2, SC3 WHERE Alphabetical_Catalogue.Code1=Systematic_Catalogue.Code1 AND Alphabetical_Catalogue.Code2=SC2.Code2 AND Alphabetical_Catalogue.Code3=SC3.Code3 WITH READ ONLY; CREATE INDEX iA_C1 ON Alphabetical_Catalogue (Code); CREATE INDEX iA_C2 ON Alphabetical_Catalogue (Reference); CREATE INDEX iA_C3 ON Alphabetical_Catalogue (Keyword1); CREATE INDEX iA_C4 ON Alphabetical_Catalogue (Keyword2); CREATE INDEX iA_C5 ON Alphabetical_Catalogue (Keyword3); CREATE INDEX iA_C6 ON Alphabetical_Catalogue (Keyword4); CREATE INDEX iA_C7 ON Alphabetical_Catalogue (Keyword5); CREATE INDEX iA_C8 ON Alphabetical_Catalogue (Keyword6); CREATE INDEX iA_C9 ON Alphabetical_Catalogue (Keyword7); CREATE INDEX iA_C10 ON Alphabetical_Catalogue (Keyword8); CREATE INDEX iA_C11 ON Alphabetical_Catalogue (Authors); CREATE INDEX iSystematic_Catalogue_1 ON Systematic_Catalogue (Code1); CREATE INDEX iSystematic_Catalogue_2 ON Systematic_Catalogue (Title1); CREATE INDEX iSC2_1 ON SC2 (Code2); CREATE INDEX iSC2_2 ON SC2 (Title2); CREATE INDEX iSC3_1 ON SC3 (CODE3); CREATE INDEX iSC3_2 ON SC3 (Title3); CREATE OR REPLACE PACKAGE bibl IS FUNCTION GetYear (S VARCHAR2) RETURN NUMBER; PRAGMA RESTRICT_REFERENCES (GetYear, WNDS, WNPS); END bibl; / CREATE OR REPLACE PACKAGE BODY bibl IS FUNCTION GetYear (S VARCHAR2) RETURN NUMBER IS i NUMBER; done BOOLEAN; BEGIN done := FALSE; i := LENGTH (S); WHILE NOT done AND (i>1) LOOP IF SUBSTR (S, i, 1) NOT IN ('0','1','2','3','4','5','6','7','8','9') THEN done := TRUE; ELSE i := i-1; END IF; END LOOP; IF done THEN RETURN TO_NUMBER (SUBSTR (S, i+1)); ELSE RETURN TO_NUMBER (SUBSTR (S, i)); END IF; END; END bibl; / Приложение 2. Спецификации переноса базы данных из MS Access в Oracle Деструктуризация процесса переноса базы данных Перенос осуществляется в 4 этапа: экспорт из MS Access в файл SQL-сценария import.sql (в каталог c:\), осуществляемый программой export.mdb; сжатие полученного файла сценария с помощью программы gzip; передача сжатого файла по протоколу FTP на Unix-машину; импорт из созданного файла в базу данных Oracle (запуск файла loaddata.sh). Ограничения на данные в исходных таблицах Для правильного экспорта таблиц из MS Access в файл длина MEMO-поля - Алфавитный каталог. Аннотация не должна превышать 2000 символов (строки имеющие MEMO-поля длиной больше 2000 символов автоматически урезаются до этой длины при экспорте во внешний файл). Импорт Импорт производится запуском файла loaddata.sh на Unix-машине, из каталога, где находится сжатый файл SQL-сценария import.sql.gz. Следует быть уверенным, что в файле имеются корректные имя пользователя, его пароль, а также строка соединения (алиас) с базой данных, в виде user_name/user_password@connect_string. После окончания импорта следует проверить созданный .log файл на предмет ошибок и отвергнутых записей. Кроме того, необходимо наличие на Unix-машине установленной и сконфигурированной клиентской части Oracle. Список литературы Для подготовки данной работы были использованы материалы с сайта www.csu.ac.ru |
Страницы: 1, 2
![]() |
||
НОВОСТИ | ![]() |
![]() |
||
ВХОД | ![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |