Опубликованы новые листовки по Oracle Spatial, Locator, Mapviewer на русском языке.
Обзор возможностей Oracle Locator
Обзор возможностей Oracle Spatial
Обзор возможностей Mapviewer
Эти листовки также есть в печатном виде.
Читать далее...
Опубликованы новые листовки по Oracle Spatial, Locator, Mapviewer на русском языке.
Обзор возможностей Oracle Locator
Обзор возможностей Oracle Spatial
Обзор возможностей Mapviewer
Эти листовки также есть в печатном виде.
Как известно, компания Navteq – глобальный партнер Oracle и поставщик данных для Oracle. Главное их отличие от остальных поставщиков – это ориентированность в поставках именно на СУБД Oracle (http://solutions.oracle.com/partners/navteq). Аналогичное партнерство у Oracle существует и с компанией Teleatlas.
Компания Navteq поставляет данные в формате табличных пространств для Oracle. Это позволяет избежать утомительной загрузки данных из дампов.
Ниже я опишу процесс загрузки данных. Предварительно я скачал и распаковал партнерский пакет данных Navteq для Oracle. Пакет состоит из трех типов данных: карта, данные для маршрутизации и данные для геокодирования. Пакет у меня за первый квартал 2008 года – общий объем 105 Гб.
Вот такой список файлов:
Тип данных | Файлы | Количество | Объем данных |
Карта | MAP_EU_Q108_XX.ORA | 8 штук (XX от 01 до 08) | 30 Гб |
Данные для маршутизации | RC_EU_Q108_XX.ORA | 18 штук (XX от 01 до 18) | 45 Гб |
Данные для геокодирования | GC_EU_Q108_01.ORA | 14 штук (XX от 01 до 14) | 36 Гб |
- Для использования этих данных необходима база данных Oracle Database Enterprise Edition with Spatial с версией минимум 10.2.0.3. Версия Oracle Database 11.1.0.6 работать не будет. Версия 11.1.0.7 работает нормально.
???? Перед заливкой данных проверьте параметр COMPATIBLE черех SQL plus:
???? SHOW parameter COMPATIBLE;
- NLS настройки должны быть следующими:
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
Желательно выставить NLS_LANG в значение AMERICAN_AMERICA.UTF8. Если значение у Вас другое, то стоит проконсультироваться с поддержкой.
- нужно понимание того, как работает технология Transportable Tablespaces. Эти знания можно почерпнуть в документации в разделе “8 Managing Tablespaces” в книге Oracle® Administrator's Guide 10g Release 2 (10.2) или аналогичной для 11-ой версии базы.
- поддерживаемое количество файлов db_files (файл параметров Oracle init.ora) должно быть достаточным. Полная инсталляция требует как видно из таблицы 30 файлов данных. Прибавьте сюда файлы уже имеющиеся в базе данных. Перед импортом данных нужно установить этог параметра в приемлимое значение
- набор данных от Navteq использует блок Oracle размером 8 кб. Ваша база должна быть с тем же размером блока. Посмотреть можно командой SHOW PARAMETER db_block_size. Если база имеет другой размер блока, то самое время почитать раздел “Setting the Buffer Cache Initialization Parameters” в книге Oracle® Administrator's Guide 10g Release 2 (10.2) о поддержке разных размеров блоков данных в Oracle.
- для Oracle Database 10g желательно установить патч 10.2.0.4 – это связано с рядом проблем с геокодирование и маршрутизацией.
2. Подготовка
2.1 Общая информация
Данные поставляются в 3-х табличных пространствах. Данные для каждого модуля Geocoding (GC), Route Calculation (RC), Map Display (MAP) лежат в свое табличном пространстве. Мы будем все импортировать в одну базу данных. Если нужно, чтобы данные загрузились не табличное пространство или пользователя по-умолчанию, то при импорте данных можно выполнить ремапинг. Для более подробной информации можно посмотреть документацию по impdp.
Имя пользователя для данных генерируется компанией Navteq по следующей схеме: <Prefix>_<Region>_<Quarter><Year>
Пример:
Набор данных для Европы (куда входит Россия) (EU) квартала Q1/2008 поставляется со следующими именами пользователя и табличных пространств
Пользователь = ODF_EU_Q108
Geocoding Tablespace = GC_EU_Q108
Routing Tablespace = RC_EU_Q108
Map Display Tablespace = MAP_EU_Q108
Имена регионов:
TTS Short Identifier | Регион |
EU | Европа |
NA | Северная Америка |
WM | World Markets |
MEX | Мексика |
Файлы данных имеют расширение “.ORA”. Файлы дампа имеет имя “.DMP”.
2.2. Создание пользователя-владельца пространственных данных.
GRANT CONNECT, CREATE TABLE, CREATE VIEW, CREATE ANY TABLE, CREATE
PROCEDURE, CREATE SEQUENCE, CREATE ANY INDEX TO <ODF User> IDENTIFIED BY
<ODF password>;
Имя пользователя в <> нужно изменить на нужное. В моем случае для Европы в 1-ом квартале 2008 года было так:
GRANT CONNECT, CREATE TABLE, CREATE VIEW, CREATE ANY TABLE, CREATE
PROCEDURE, CREATE SEQUENCE, CREATE ANY INDEX TO ODF_EU_Q108 IDENTIFIED BY
oracle;
2.3. Копирование, проверка и распаковка данных
Данные необходимо скопировать с DVD дисков. В результате получим структуру каталогов: data, doc, sql. В каталоге будет множество компрессированных файлов (*.gz). Нужно будет проверить их на целостность. Сделать это можно с помощью md5.
md5sum -c GC_digest.md5
md5sum -c MAP_digest.md5
md5sum -c RC_digest.md5
Файлы контрольных сумм должны лежать в том же каталоге, что и файлы (*.gz). В поставке Windows md5sum нет. Взять его можно, например, в cygwin.
Дале нужно распаковать все файлы
gzip -d *.gz
После распаковки Navteq рекомендует защить файлы от записи. У себя я сделал вот так
chmod -R u-w,o-w,g-w /u02/navteqdata/data
3. Загрузка данных (делается для каждого типа данных отдельно)
Загружать можно через Enterprise Manager, либо через impdp. В разделе 3.1 – через Enterprise Manager, в 3.2 – через impdp.
• Войдите в Enterprise Manager Web Console (обычно адрес в 10-ке http://server:1158/em, в 11g https://server:1158/em)
• Для Oracle Database 10g выбрать “Maintenance” –> “Data Movement” -> “Move Database Files” -> “Transport Tablespaces”. Для 11g “Data Movement” –> “Transport Tablespaces”
• Выбрать “Integrate an existing transportable tablespace set”. Введите имя пользователя и пароль для операционной системы (для Windows: пользователь должен обладать правами Log on as Batch Job - подробнее здесь)
• Шаг 1 (файлы):
- Выбрать имя файла (*.DMP), вводите полный путь к файлу (у меня это файлы GC_EU_Q108.DMP, MAP_EU_Q108.DMPRC_EU_Q108.DMP). Пусть мы грузим данные для карты, т.е. файл MAP_EU_Q108.DMP
- Выбрать формат файлов “Datapump”
Добавьте файлы данных: Введите маску файлов, включая полный путь (например /u02/navteqdata/data/MAP*.ORA), затем нажмите “Add”
• Шаг 2(местоположение файлов):
- Для более быстрого импорта выберите “Do not copy the datafiles”
• Шаг 3 (Options):
- Если необходимо провести ремаинг схем, то укажите из какой схемы в какую. Мы это делать не будем
- Выберите “Put the transportable tablespaces into read/write mode”.
(Note: Если импорт пройдет с ошибкой, то tablespace останется в read-only и нужно будет вручную сделать его Read-Write)
• Шаг 4 (Schedule):
- Укажите имя работы (по нему в будущем можно будет отследить состоянии импорта)
- Выберите когда начинать импорт
• Шаг 5 (Review):
Проверитьте параметры
• Нажмите Submit job.
4. Действия после загрузки
4.1. Если это не произошло автоматические переведите табличное пространство в режим Read Write.
ALTER TABLESPACE <TABLESPACE_NAME> READ WRITE;
4.2. Установите табличное пространство по-умолчанию для пользователя ODF
ALTER USER <ODF user> DEFAULT TABLESPACE <TABLESPACE_NAME>;
ALTER USER <ODF user> QUOTA UNLIMITED ON <TABLESPACE_NAME>;
4.3 Загрузите информацию о пространственных индексах.
Сделать это можно двумя способами – использовать уже построенные индексы транспортированные индексы (4.3.1), либо строить их с нуля (4.3.2). Первый вариант предпочтительнее
4.3.1. Загрузка индексов из TTS
- убедитесь, что табличное пространство в состоянии READ WRITE
- восстановите информацию об индексах (запускается из под ODF пользователя)
update SDO_INDEX_TTS_METADATA$
set SDO_INDEX_OWNER = '<YOUR_ODF_IMPORT_USER>';
commit;
у меня это было вот так
update SDO_INDEX_TTS_METADATA$Запустите SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS();
- удалите таблицу SDO_INDEX_TTS_METADATA$ после загрузки подключившись под пользователем ODF
drop table SDO_INDEX_TTS_METADATA$;
4.3.2. Перестройка индексов с помощью скриптов SQL
- запустите sql/CF_Create_Procedures.sql
этот скрипт нужно запускать только один раз
- для карты (MAP) запустите скрипты:
sql/xCreate_WOM_SDO.sql
sql/xNTC_Create_MapSDO.sql
- для Geocoding (GC) запуститет скрипт (вместо <GC_TABLESPACE> – укажите имя табличного пространства):
sql/GC_CreateSpatialIndex.sql <GC_TABLESPACE>
- для маршрутизации (RC) запустите скрипт (вместо <GC_TABLESPACE> – укажите имя табличного пространства):
sql/RC_CreateSpatialIndex.sql <RC_TABLESPACE>
!!! После каждого скрипта (MAP, GC, RC) нужно удалять таблицу SDO_INDEX_TTS_METADATA$
drop table SDO_INDEX_TTS_METADATA$;
1. Если получили вот такую ошибку
Import: Release 11.1.0.7.0 - Production on Monday, 24 November, 2008 8:45:45
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Username:
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."INTEGRATETTS000001" successfully loaded/unloaded
Starting "SYSTEM"."INTEGRATETTS000001": SYSTEM/******** dumpfile=MAP_EU_Q108.DMP
directory=EM_TTS_DIR_OBJECT transport_datafiles=/u02/navteqdata/data/MAP_EU_Q108_01.ORA
job_name=INTEGRATETTS000001 logfile=IMPORT.LOG
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29345: cannot plug a tablespace into a database using an incompatible character set
Job "SYSTEM"."INTEGRATETTS000001" stopped due to fatal error at 08:46:03
то нужно будет создавать новую базу с соответствующей кодировкой – AL32UTF8 (см. предварительные требования). Если это неприемлимо, то придется создавать новую базу данных, импортировать туда данные, экспортировать и импортировать в целувую базу данных уже стандартными средствами. А вообще пора мигрировать в UTF8.
Если Вы хотите использовать Enterprise Manager (или как его еще называют Database Control) для резервного копирования, экспорта или импорта необходимо проделать некоторые манипуляции по правам пользователя в Windows
Обычно, когда Вы пытаетесь настроить, скажем, импорт Oracle запрашивает от Вас пользователя в операционной системе от имени которого будут выполняться операции:
После того как введете имя пользователя (даже администратора) – получите ошибку:
Validation Error
Examine and correct the following errors, then retry the operation:
RemoteOperationException: ERROR: Wrong password for user
ПРИЧИНА:
Связано это с тем, что указанный пользователь не имеет прав на выполнение так называемых батч операций (Batch Job).
РЕШЕНИЕ:
Чтобы решить эту проблему добавьте пользователю привилегию “log on as a batch job”:
1. Запустите консоль управления правами
control panel-> administrative tools->local security settings->local policies->user rights assignments
2. Добавьте привилегию
Выберите log on as a batch job и добавьте Вашу группу или имя пользователя в список.
При поддержке наших европейский коллег в миграционном центре Oracle для ISV-партнеров c 17 по 19 ноября прошел трехдневный Workshop по Oracle Spatial.
Курс читал один из опытнейших специалистов по этому направлению – Альберт Годфринд (Albert Godfrind). Альберт – один из авторов самой популярной книги по Oracle Spatial - Pro Oracle Spatial for Oracle Database 11g.
На семинаре рассматривались все темы по продукту Oracle Spatial – начиная с импорта данных из SHP файлов и заканчивая использованием сетевой модели базы данных Oracle и настройкой Mapviewer.
Нужно сказать, что такого уровня семинар по Oracle Spatial проводится впервые. Будем надеяться, что не в последний раз. К сожалению этот курс проводился на английском и очень многие вещи трудно воспринимать в таком сжатом режиме, да еще и на английском языке. Oracle CIS получил разрешение от Альберта на перевод его материалов и создания собственного семинара на его основе. Так что, я думаю, к весне мы запустим такой же семинар – может быть даже удлинив его или разбив на части для большей нацеленности на уровень слушателей – начальный или продвинутый.
Если у Вас есть какие-нибудь пожелания по расширению содержания или по его углублению – присылайте эти предложения мне.
Shape файлы – это ГИСовский формат данных, разработанный компанией ESRI: http://en.wikipedia.org/wiki/Shapefile. Это формат де-факто стал стандартныv и большинство ГИСовского программного обеспечения умеет экспортировать в него данные. Т.е. его можно использовать как промежуточный формат для загрузки в другие форматы. Основное его достоинство - распространенность и открытость.
В комплекте базы данных Oracle (на диске с примерами) идет загрузчик shape файлов в Spatial. В версии 10.2.0.4 это загрузчик работает некорректно. Правильную версию можно взять в дистрибутиве базы данных Oracle 11.1.0.6 или 11.1.0.7 обычно он лежит в каталоге $ORACLE_HOME/md/jlib в файле sdoutl.jar. Загрузчик написан на java и имя класса oracle.spatial.util.SampleShapefileToJGeomFeature.
Его можно скачать здесь.
Если запустить этот класс без параметров, то будет выведена помощь (смотрите листинг ниже). Но есть один недокументированный факт. Это загрузчик может осуществлять загрузку файлов DBF в различных кодировках.
К примеру, если запустить с параметрами по-умолчанию, то будет взята кодировка 1251. Для того, чтобы загрузить данные в другой кодировке ISO-8859-5 – в вызов виртуальной машины java нужно добавить параметр -Dfile.encoding=ISO-8859-5. Список кодировок можно взять здесь.
Например вот так
java -Dfile.encoding=ISO-8859-5 -cp %clpath% oracle.spatial.util.SampleShapefileToJGeomFeature -h orabi -p 1521 -s orcl -u mvdemo -d mvdemo -t %1 -f C:\maxidata\RUS_Shape_With_Names\%1 -r 8307 -g geom
В этом случа загрузка будет проведена корректно.
Параметры загрузчика:
USAGE: java -cp [ORACLE_HOME]/jdbc/lib/ojdbc14.jar;./sdoutl.jar;./sdoapi.jar SampleShapefileToJGeomFeature -h db_host -p db_port -
s db_sid -u db_username -d db_password -t db_table -f shapefile_name [-i table_id_column_name][-r srid][-g db_geometry_column][-x
max_x,min_x][-y max_y,min_y][-o tolerance]
Usage explanation (parameters used):
<-h>: Host machine with existing Oracle database
<-p>: Host machine's port with existing Oracle database (e.g. 1521)
<-s>: Host machine's SID with existing Oracle database
<-u>: Database user
<-d>: Database user's password
<-t>: Table name for the result
<-f>: File name of an input Shapefile (without extension)
[-i]: Column name for unique numeric ID; if required
[-r]: Valid Oracle SRID for coordinate system; use 0 if unknown
[-g]: Preferred or valid SDO_GEOMETRY column name
[-x]: Bounds for the X dimension; use -180,180 if unknown
[-y]: Bounds for the Y dimension; use -90,90 if unknown
[-o]: Load tolerance fields (x and y) in metadata, if not specified, tolerance fields are 0.05
[-a]: Append shapefile data to an existing table
[-n]: Start ID for column specified in -i parameter
[-c]: Commit interval. Default, commits every 1000 conversions and at the end of a run
[-v]: Println interval. Default, displays every 10 conversions.
Обычно ошибка возникает при загрузки данных из текстового файла с помощью Oracle Sqlloader. Ошибка связана с тем, что в России разделитель целой и дробной часть запятая, а в США и Европе – точка.
Если попытаться загрузить в базу некорректно отформатированные данные, то Oracle их не поймет. Выйти из этого положения можно несколькими способами. Некоторые проще, некоторые сложне. Давайте рассмотрим их. Вначале простые, к концу более сложные и, возможно, чреватые проблемами.
1|New York|NY|7322564|1|2001|8307|-73.943849000|40.669800000|
заменяем на
1|New York|NY|7322564|1|2001|8307|-73,943849000|40,669800000|
Тут всеп просто. Никаких подводных камней, кроме того, что точки могут встречаться не только в числах и это надо отслеживать, иначе испортите данные.
Например в Linux это легко сделать с помощью sed (для Windows можно взять отсюда или использовать, скажем, perl). Команда не создает резервной копии.
sed -i 's/\./,/g' filename.txt
Например, если загрузка осуществляется следующим скриптом батником:
sqlldr scott/tiger@orcl control=us_cities\us_cities.ctl data=us_cities\us_cities.dat
то ошибки можно избежать с помощью выполнения предварительно в bat-файле вот такой команды:
set nls_lang=american_america.CL8MSWIN1251
sqlldr scott/tiger@orcl control=us_cities\us_cities.ctl data=us_cities\us_cities.dat
Я считаю этот вариант наиболее предпочтительным.
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\NLS_LANG
Нужно будет вместо значения RUSSIAN_RUSSIA.CL8MSWIN1251 прописать AMERICAN_AMERICA.CL8MSWIN1251.
Это решение может очень сильно повлиять на систему в целом. Действие этого параметра может повлечь неработоспособность другого приложения.
Стандарт Open Geospatial Consortium Web Feature Service (WFS) определяет интерфейс, позволяющий запрашивать географические объекты (features) через web, используя платформенно независимые вызовы. В 2006 году, комитет OGC одобрил принятие стандарта OpenGIS GML Simple Features Profile. Этот стандарт разработан для того, чтобы повысить возможности взаимозаменяемости WFS серверов и повысить простоту реализации стандарта WFS.
Спецификация WFS определяет интерфейс для операций над географическими объектами. Включены такие операции как :
Получить (Get) или Выполнить запрос (Query) к географическим объектам на основе пространственнго или непространственного условия
Создать (Create) новый географический объект
Удалить (Delete) существующий географический объект
Изменить (Update) существующий географический объект
Простейший функционал Web Feature Service позволяет “получать” и “выполнять запросы” к географическим объектам. Транзакционный Web Feature Service (WFS-T) позволяет создавать, удалять и изменять географические объекты.
WFS описывает формат запроса. Клиент генерирует запрос и передает его WFS-серверу с использованием HTTP. WFS-cервер запускает запрос . Спецификация WFS использует HTTP как транспортный протокол, но это не жестко закрепленное требование.
В настоящее время определены два стандарта кодирования операций WFS:
XML (HTTP POST/SOAP)
Keyword-Value pairs (HTTP GET/Remote procedure call)
Более подробную информацию по WFS можно посмотреть здесь.
А мы перейдем к рассмотрению как WFS реализован в СУБД Oracle
WFS в СУБД реализована как веб-сервис и должна быть развернута в Oracle Containers for Java (OC4J), включенной в Oracle Application Server.
WFS имеет слой метаданных, которые хранятся в базе данных. Эти данные необходимы для ответа на WFS запросы. Метаданные включают пространственные столбцы, которые могут быть запрошены и обработаны с использованием интерфейса Oracle Spatial. Метаданные также содержат ассоциацию непространственных и пространственных столбцов географических объектов, так как Web Feature Service предоставляет их клиенту.
Ниже показана архитектура Web Feature Service.
Как показано на слайде:
WFS – часть контейнера Oracle Application Server.
WFS – взаимойствует с Web service клиентом с использованием WFS запросов и ответов в SOAP/XML формате.
WFS – выполняет операции по доступу к пространственным данным и метаданные через JDBC вызовы к базе данных.
В базе хванятся как WFS метаданные, так и сами пространственные данные.
Необходимо проинсталлировать Oracle Database 11g. Сделать это можно как описано в инструкции.
Проинсталлировать Oracle Database 11g Companion CD.
Скачать JDeveloper с сайта OTN и проинсталлировать его.
Скачать последнюю версию J2SE с Javasoft и проинсталлировать.
Создать рабочий каталог и скопировать в него файл wsclient.jar из папки $ORACLE_HOME/md/demo/ws/client.
Скачать файл xsds.jar в Ваш рабочий каталог.
Убедиться, что пользователи mdsys, spatial_csw_admin_usr и spatial_wfs_admin_usr разблокированы. Сделать это можно следующими командами из sqlplus.
connect sys/oracle as sysdba
alter user mdsys identified by oracle account unlock;
alter user spatial_csw_admin_usr identified by oracle account unlock;
alter user spatial_wfs_admin_usr identified by oracle account unlock;
В этой секции описываются шаги, необходимые для конфигурации oc4j для инсталляции пространственных веб-сервисов (spatial web services) и демонстрационных пользователей. Вы полним следующие шаги:
1. Из терминального окна
cd $OC4J_HOME/j2ee/home/config
nano system-jazn-data.xml
где $OC4J_HOME – папку, куда Вы проинсталлировали OC4J
2. Добавим в этот файл после последней секции <user> следующий текст:
<user> <name> SpatialWsUser0 </name> <display-name>Spatial WS user 0</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials>
</user>
<user> <name>SpatialWsUser1</name> <display-name>Spatial WS user 1</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials>
</user>
<user> <name>SpatialWsUser2</name> <display-name>Spatial WS user 2</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials>
</user>
<user> <name>SpatialWsUser3</name> <display-name>Spatial WS user 3</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials>
</user>
<user> <name>wfs_rel_user</name> <display-name>wfs_rel_user</display-name> <description>Spatial WFS user </description> <credentials>!wfs_rel_user</credentials>
</user>
<user> <name>wfs_doc_user</name> <display-name>wfs_doc_user</display-name> <description>Spatial WFS user </description> <credentials>!wfs_doc_user</credentials>
</user>
<user> <name>csw_user</name> <display-name>csw_user</display-name> <description>Spatial CSW user </description> <credentials>!csw_user</credentials>
</user>
В файле нажмем Ctrl-O для сохранения, затем Ctrl-X для выхода.
1. В терминальном окне введем следующие команды:
cd $OC4J_HOME/bin
nano oc4j
2. Добавьте следующие строки в начало:
ORACLE_HOME=<путь к OC4J>
JAVA_HOME=<путь к JDK>
Если при сохранении возникнет ошибка [ Could not open file for writing: Permission denied ] – необходимо зайти под пользователем root и выполнить следующие команды
cd $OC4J_HOME/bin
chmod 777 oc4j
затем повторить действия, которые не получились.
Создадим и зарегистрируем разделяемые библиотеки
1. Из терминального окна вводим следующие команды для создания каталога разделяемых библиотек:
mkdir $OC4J_HOME/j2ee/home/shared-lib/sdows2. Регистрируем библиотеки в server.xml. Для этого вводим следующие команды:
cd $OC4J_HOME/j2ee/home/config
nano server.xml
Добавляем следующие строки перед секцией rmi-config:
<shared-library name="sdows" version="1.0">
<code-source path="*"/>
<import-shared-library name="oracle.xml"/>
<import-shared-library name="oracle.jdbc"/>
</shared-library>
В файле нажмем Ctrl-O для сохранения, затем Ctrl-X для выхода.
3. Регистрируем библиотеки в файл application.xml
cd $OC4J_HOME/j2ee/home/config
nano application.xml
Добавляем следующие строки перед закрывающим тэгом </imported-shared-libraries>:
<import-shared-library name="sdows"/>
Если секции </imported-shared-libraries> нет, то добавляем немного больше в конце файла перед </orion-application>:
<imported-shared-libraries>
<import-shared-library name="sdows"/>
</imported-shared-libraries>
Сохраняем и выходим.
Скопируем файлы в папку разделяемых библиотек
1. Из терминального окна выволним следующие команды, чтобы скопировать файлы из и в папку разделяемых библиотек, которую мы только что создали (здесь $ORACLE_HOME – домашний каталог СУБД Oracle):
cd $OC4J_HOME/j2ee/home/shared-lib/sdows/1.0
cp $ORACLE_HOME/md/jlib/sdowfscs.jar .
cp $ORACLE_HOME/md/jlib/sdoutl.jar .
cp $ORACLE_HOME/md/jlib/sdotype.jar .
cp $ORACLE_HOME/md/jlib/sdoapi.jar .
cp $ORACLE_HOME/md/jlib/sdowshandlers.jar .
cp $ORACLE_HOME/md/jlib/sdowspool.jar .
cp $ORACLE_HOME/md/jlib/sdowshandlerols.jar .
cp $ORACLE_HOME/rdbms/jlib/xdb.jar .
Пропатчим xmlparser2.jar файл
1. Из терминального окна выволним следующие команды, чтобы скопировать файл xmlparserv2.jar из инсталляции ORACLE Database 11g в OC4J:
Извлекаем файлы из wsclient.jar
1. Из терминального окна выволним следующие команды, чтобы извлечь файл из JAR-файла wsclient.jar:
export CLIENT_HOME=/home/oracle/wsclient
cd $CLIENT_HOME
unzip wsclient.jar
В этой секции описано как запустить экземпляр OC4J. Выполните следующие шаги:
1. В терминальном окне введите команды
cd $OC4J_HOME/bin
./oc4j –start
2. При запросе пароля введите любой пароль (для определенности будем считать, что ввели admin). Затем введите тот же пароль для подтверждения. Дождитесь появления сообщения “Oracle Containers for J2EE 10g (10.1.3.4.0) initialized”
В этой секции описано, как развернуть Spatial Web сервис в экземпляре oc4j, запущенном на предыдущем шаге
1. Откройти браузер и введите в строке адреса http://orabi:8888/em/, где orabi – это имя или ip адрес Вашего сервера, где стартован OC4J.
2. В открывшемся окне введите пароль (мы условились, что это admin)
3. Перейдем на закладку Applications и нажмем кнопку Deploy
4. Укажите, что Ваш файл уже лежит на сервере и введите путь к файл sdows.ear. Он расположен в стандартной инсталляции Oracle Database в папке $ORACLE_HOME/md/jlib. В моем случае это папка /u01/app/oracle/product/11.1.0/db_1/md/jlib/sdows.ear. Затем нажмите Next
5. В имени приложений укажите sdows, затем Next
6. На последней странице нажмите Deploy. Дождитесь завершения развертывания приложения сообщением COMPLETES.
7. В результате приложение должно запуститься
В этой секции описано как сконфигурировать источники данных, используемые нашими веб-сервисами. Выполним следующие шаги:
1. Завершим выполнение ранее запущенной OC4J комбинацией клавиш Ctrl-C:
2. В терминальном окне введем следующие команды
cd $OC4J_HOME/j2ee/home/applications/sdows/META-INF
nano data-sources.xml
Сконфигурируем следующие источники данных:
jdev-connection-WfsProxyConnection
jdev-connection-NdmProxyConnection
jdev-connection-CatalogProxyConnection
jdev-connection-OpenLsProxyConnection
jdev-connection-ConferenceProxyConnection
Изменим их так, чтобы они могли подключаться к нашей базе данных под такими параметрами:
url="jdbc:oracle:thin:@localhost:1521:orcl"
user="mdsys"
password="oracle"
Вот примерно так
Для источников jdev-connection-CSW_ADMIN_CONN_NAME и jdev-connection-WFS_ADMIN_CONN_NAME нужно будет ввести только строку подключения и пароль. Пользователь уже задан:
url="jdbc:oracle:thin:@localhost:1521:orcl"
password="oracle"
Сохраняйте Ctrl-O и выходите Ctrl-X.
3. Загрузите OGC XSD-схему для WFS по любому адресу. Распакуйте xsds.jar в папку $OC4J_HOME/j2ee/home/default-web-app/examples/servlets/. Запомните место, где эти файлы будут лежать. Сделать все это можно следующими командами:
mkdir -p $OC4J_HOME/j2ee/home/default-web-app/examples/servlets/
cd $OC4J_HOME/j2ee/home/default-web-app/examples/servlets/
cp /home/oracle/xsds.jar $OC4J_HOME/j2ee/home/default-web-app/examples/servlets/
unzip xsds.jar
4. Отредактируйте файл WSConfig.xml, чтобы указать местоположение xsd. Из терминального окна введите:
cd $OC4J_HOME/j2ee/home/applications/sdows/sdows/WEB-INF/conf
nano WSConfig.xml
В файле укажите URL где XSDs были сохранены
<wfs_xsd_loc_url>http://<machine_name>:8888/examples/servlets/xsds/</wfs_xsd_loc_url>
Не забудьте убрать коментирующие теги.
Сохраните и выйдите из nano.
5. Отредактируем файлы wfsrelmd.sql, wfsdocmd.sql, and cswmd.sql, заменив $DATA_DIR_PATH на путь к каталогу $CLIENT_HOME/src. Эта папка недавно создана при распаковке wsclient.jar. Из терминального окна введем команды
cd $CLIENT_HOME/src/sql
nano wfsrelmd.sql
Заменим $DATA_DIR_PATH на путь к каталогу src (в моем случае /home/oracle/wsclient/src):
Аналогичные действия проделаем для файлов wfsdocmd.sql и cswmd.sql:
6. Изменим строки для подключения к базе данных в следующих файлах:
- For WFS: oracle.spatial.ws.admindemo.WFSAdminDemo.java file
- For CSW: oracle.spatial.ws.admindemo.CSWAdminDemo.java file
Из терминального окна вводим
cd $CLIENT_HOME/src/oracle/spatial/ws/admindemo
nano WFSAdminDemo.java
Редактируем следующее выражение для того, чтобы дескриптор подключения был правильным
OracleConnection conn =
(OracleConnection) DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:orcl","WFS_ADMIN_USR","WFS_ADMIN_USR");
Аналогично для CSWAdminDemo.java
cd $CLIENT_HOME/src/oracle/spatial/ws/admindemo
nano CSWAdminDemo.java
7. В файле TestWfsCsBase.java измените строку http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort на нужную Вам (можно было оставить и так, но я на всякий случай заменил на http://orabi:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort). По этой строке должно откликаться развернутое ранее Вами приложение.
cd $CLIENT_HOME/src/oracle/spatial/ws/svrproxy
gedit TestWfsCsBase.java
8. Запустим OC4J:
cd $OC4J_HOME/bin
./oc4j –start
Дождемся пока запустится
1. Откройте браузер и введите адрес Enterprise Management Console (здесь orabi – имя моего сервера, где развернут OC4J):
2. Перейдем на закладку Administration
3. Кликнем на значек рядом с пунктом JDBC Resources
4. Будем теперь нажимать ссылку Test Connection рядом с каждым пунктом
5. Тестирование должно проходить корректно:
Все на этом WFS сервер можно считать развернутым ;) Пока непонятно как к нему цепляться :))) Сейчас над этим работаем.
Ну вот и свершилось то, чего так долго ждали. Вышла новая версия VMWare.
Установил, создал виртуальную машину, поработал – все вроде работает. Но… Теперь начинаются но…
Для управления виртуальной машиной теперь доступен только web интерфейс
Может кому-то и нравится, но не мне. Требует много ресурсов, зависит от версии браузера, не очень быстр.
Но ладно – с этим может быть и смирился бы, но оказывается, что для работы с виртуальной машиной теперь приходится инсталлировать plug-in для браузера. Я использую Chrome, поэтому мне нужен plug-in именно для него ;) Сами понимаете – такого plug-in нет и приходится запускать всеми любимый Internet Explorer.
Следующий не очень приятный момент – это убогая функциональность этой консоли. Как можно видеть из слайда ниже – можно отключить DVD, но подключить, например, другой образ с сервера в этой консоли невозможно. Можно, конечно, пойти в центральную консоль и все там сделать, но слишком много телодвижений.
И еще – с какого перепугу перезагрузка виртуальной машины попала в Troubleshoot
Короче, привыкать к новой версии и привыкать. Переходить на новую версию – решайте сами. Я пока остаюсь на 1.0.8 :)
Как Вы знаете – Oracle Spatial это одна из опций базы данных Oracle. Т.е. Oracle Spatial – это составная часть базы данных, использующая все ее возможности и все остальные опции, функции и расширения, такие Oracle Real Application Cluster, Data Guard, Stream и т.д. Т.е. имеет смысл рассматривать ее не просто как отдельный компонент, а как составную часть большой и очень мощной машины.
Чтобы показать Вам все эти опции и их взаимодействие мы проводим семинар Database Options Details.
Следующий семинар будет проходить 4-5 декабря в Москве. В него будет включена секция по Oracle Spatial, Mapviewer, Семантическим сетям.
Более подробную информацию можно найти здесь DBOD v2.
Для работы нам понадобится
1. VMWare Server http://www.vmware.com/products/server/. Нужно скачать сам сервер и зарегистрироваться для получения серийного номер. Продукт абсолютно бесплатный. Инсталляция его проблем не приносит.
2. Oracle Enterprise Linux – можно использовать также другие версии Linux, но эту версия обладает рядом преимущест (помимо того, что она выпускается корпорацией Oracle :)
Качаем отсюда http://www.oracle.com/technologies/linux/index.html. Для себя я выбрал версию Oracle Enterprise Linux 4 Update 7. Достаточно пропатчена плюс достаточно консервативна с минимумом всяких рюшечек.
3. Oracle Database 11.1.0.6 for Linux берем отсюда http://www.oracle.com/technology/software/products/database/index.html
4. Желательно, но не обязательно иметь патч 11.1.0.7. Берем как обычно с metalink.oracle.com. Патч имеет номер 6890831.
5. Far 1.7. Нужен будет для удобства передачи данных на виртуальную машину. http://www.rarlab.com/download.htm
6. WinSCP Far Plugin http://winscp.net/eng/download.php. Позволяет работать с виртуальной машиной через протокол SSH, как через обычный FTP.
7. PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/. Также не обязателей, но очень удобен в работе.
Когда все это у нас есть – приступаем к инсталляции.
Мы создали виртуальную машину. Теперь она стоит и мигает нам разными огоньками. Давайте запустим ее. Для этого вверху нажмем такую зелененькую кнопочку.
Виртуалка запустится. Я использовал в качестве браузера Chrome и при переходе на закладку Console увидел замечательное сообщение
Как не жалко, но пришлось уходить в Internet Explorer. В Internet Explorer кликнем на Install Plug-in и чудесным образом увидим выскочит окошко, предлагающее инсталляцию специальной Vmware Console.
В ней надо будет кликнуть на ссылку Open the console in a new window и получаем специальное окошечко с виртуальной машиной Linux.
Пока что там пусто, операционки нет и ее нужно проинсталлировать, чем мы и займемся.
Для инсталляция нам понадобятся образы CD дисков Oracle Enterprise Linux 4 Update 7, ранее скачанные с сайта Oracle.
Инструкцию по инсталляции можно найти в дистрибутиве Oracle. Здесь я приведу более краткие выдержки из Quick Installation Guide.
Oracle Enterprise Linux 4.0 | Oracle Enterprise Linux 5.0 |
binutils-2.15.92.0.2-18 compat-libstdc++-33.2.3-47.3 elfutils-libelf-0.97-5 elfutils-libelf-devel-0.97-5 glibc-2.3.9.4-2.19 glibc-common-2.3.9.4-2.19 glibc-devel-2.3.9.4-2.19 gcc-3.4.5-2 gcc-c++-3.4.5-2 libaio-devel-0.3.105-2 libaio-0.3.105-2 libgcc-3.4.5 libstdc++-3.4.5-2 libstdc++-devel-3.4.5-2 make-3.80-5 sysstat-5.0.5 unixODBC-2.2.11 unixODBC-devel-2.2.11 | binutils-2.17.50.0.6-2.el5 compat-libstdc++-33-3.2.3-61 elfutils-libelf-0.125-3.el5 elfutils-libelf-devel-0.125 glibc-2.5-12 glibc-common-2.5-12 glibc-devel-2.5-12 gcc-4.1.1-52 gcc-c++-4.1.1-52 libaio-0.3.106 libaio-devel-0.3.106 libgcc-4.1.1-52 libstdc++-4.1.1 libstdc++-devel-4.1.1-52.e15 make-3.81-1.1 sysstat-7.0.0 unixODBC-2.2.11 unixODBC-devel-2.2.11 |
В нашем случае вывод будет следующим
[root@oel ~]# rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel glibc-headers gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC-devel
binutils-2.15.92.0.2-25
compat-libstdc++-33-3.2.3-47.3
elfutils-libelf-0.97.1-5
package elfutils-libelf-devel is not installed
glibc-2.3.4-2.41
glibc-common-2.3.4-2.41
glibc-devel-2.3.4-2.41
glibc-headers-2.3.4-2.41
gcc-3.4.6-10.0.1
gcc-c++-3.4.6-10.0.1
package libaio-devel is not installed
libaio-0.3.105-2
libgcc-3.4.6-10.0.1
libstdc++-3.4.6-10.0.1
libstdc++-devel-3.4.6-10.0.1
make-3.80-7.EL4
package sysstat is not installed
package unixODBC-devel
libaio-devel и unixODBC-devel можно найти на 3-ем диске. elfutils-libelf-devel и sysstat 4-ом.
Монтируем третий диск и запускаем команду
rpm -Uvh /media/cdrom/Enterprise/RPMS/libaio-devel-0.3.105-2.i386.rpm /media/cdrom/Enterprise/RPMS/unixODBC-devel-2.2.11-1.0.1.RHEL4.1.i386.rpm
[root@oel ~]# rpm -Uvh /media/cdrom/Enterprise/RPMS/libaio-devel-0.3.105-2.i386.rpm /media/cdrom/Enterprise/RPMS/unixODBC-devel-2.2.11-1.0.1.RHEL4.1.i386.rpm
warning: /media/cdrom/Enterprise/RPMS/libaio-devel-0.3.105-2.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing... ########################################### [100%]
1:unixODBC-devel ########################################### [ 50%]
2:libaio-devel ########################################### [100%]
Монтируем четвертый диск и запускаем команду
rpm -Uvh /media/cdrom/Enterprise/RPMS/sysstat-5.0.5-19.el4.i386.rpm /media/cdrom/Enterprise/RPMS/elfutils-libelf-devel-0.97.1-5.i386.rpm
[root@oel /]# rpm -Uvh /media/cdrom/Enterprise/RPMS/sysstat-5.0.5-19.el4.i386.rpm /media/cdrom/Enterprise/RPMS/elfutils-libelf-devel-0.97.1-5.i386.rpm
warning: /media/cdrom/Enterprise/RPMS/sysstat-5.0.5-19.el4.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing... ########################################### [100%]
1:elfutils-libelf-devel ########################################### [ 50%]
2:sysstat ########################################### [100%]
Создаем пользователя oracle и необходимые группы. В конце вводим пароль пользователя oracle
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
[root@oel /]# groupadd oinstall
[root@oel /]# groupadd dba
[root@oel /]# useradd -g oinstall -G dba oracle
[root@oel /]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Для корректной работы тестовой базы нужно изменить настройки ядра. Для этого в файл /etc/sysctl.conf в конец добавим следующие строки:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Можно это проделать командами
echo 'kernel.shmall = 2097152' >> /etc/sysctl.conf
echo 'kernel.shmmax = 2147483648' >> /etc/sysctl.conf
echo 'kernel.shmmni = 4096' >> /etc/sysctl.conf
echo 'kernel.sem = 250 32000 100 128' >> /etc/sysctl.conf
echo 'fs.file-max = 65536' >> /etc/sysctl.conf
echo 'net.ipv4.ip_local_port_range = 1024 65000' >> /etc/sysctl.conf
echo 'net.core.rmem_default = 4194304' >> /etc/sysctl.conf
echo 'net.core.rmem_max = 4194304' >> /etc/sysctl.conf
echo 'net.core.wmem_default = 262144' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 262144' >> /etc/sysctl.conf
В файл /etc/pam.d/login следующие строки
/etc/pam.d/login
В файл /etc/profile
echo 'if [ $USER = "oracle" ];' >>/etc/profile
echo ' then if [ $SHELL = "/bin/ksh" ];' >>/etc/profile
echo ' then '>>/etc/profile
echo ' ulimit -p 16384' >>/etc/profile
echo ' ulimit -n 65536' >>/etc/profile
echo ' else' >>/etc/profile
echo ' ulimit -u 16384 -n 65536' >>/etc/profile
echo ' fi' >>/etc/profile
echo 'fi '>>/etc/profile
Создадим необходимые для инсталляции каталоги:
Теперь перейдем непосредственно к инсталляции СУБД Oracle. Для этого давайте войдем под только что созданным пользователем oracle в Gnome. Щелкнем правой кнопкой на рабочем столе и запустим терминал Open Terminal
Мы будем инсталлировать базу данных с настройками по-умолчанию, но я все же для большей надежности применяю Advance Installation (не надо нам этого упрощенства)
Соглашаемся инсталлировать Inventory в папку /u01/app/oraInventory
Выбираем Enterprise Edition (отличие Enterprise и Standard можно посмотреть здесь TBD)
Далее идет проверка системы на соответствие требованияем Oracle. Кстати очень полезная штука. Раньше ее не было и очень часто в середине инсталляции Oracle Universal Installer вываливался с малопонятными и редко информативными сообщениями. Как можно видеть моя система не прошла по всем требованиям. Точнее одно требование просто проверено не было. Связано это с тем, что у меня виртуальная машина получает ip по DHCP. Если настроить статику, то такой проблемы не будет.
Жмем Next и соглашаемся продолжать даже в таких ужасных условиях. Говорим, что хотим создать базу данных.
База данных у нас будет общего назначения, поэтому выбираем General Purpose/Transaction Processing
Указываем, что база данных будет оба имени (Global Database Name и SID) иметь одинаковыми, т.е. “orcl”. Сделано это для простоты и если Вы в первый раз устанавливаете базу, то крайне рекомендуется эти имена сделать одинаковыми.
На следующей странице настроек нужно будет сделать несколько изменений. Во первых сделаем, чтобы память управлялась НЕавтоматически и увеличим ее объем до 600 Мб
На закладке Character Set выберем либо Use Unicode (если Вы хотите чтобы ваша база поддерживала любые символы вплоть до иероглифов), либо Cyrillic CL8MSWIN1251 (если Вы просто хотите включить поддержку кириллицы).
На закладке Security – отключим более жесткие настройки безопасности, введенные с 11-ой версии. В настоящее время не весь софт умеет с ними работать. Включение этих настроек приводит к тому, что пароль становится чувствительным к регистру (в 10-ке это было не так).
На закладке включим инсталляцию схем с примерами (это HR, OE и т.д.)
На следующих трех страницах принимаем настройки по-умолчанию
Вводим пароли для 4-х стандартных пользователей. Можно указать сразу для всех пользователей один и тот же пароль. Как мы и сделаем
На следующих двух страницах принимаем настройки по-умолчанию
Наблюдаем как все это инсталлируется.
Необходимо будет запустить два указанных скрипта под пользователем root и все настройки приниматься по-умолчанию
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.1.0/db_1/root.sh
Вот и все. База данных работает.