Сервер переехал на новый сайт http://www.oraclegis.com/blog. Здесь идет ретрансляция

вторник, 16 декабря 2008 г.

Две новые статьи

Дошли руки. Написал 2 давно задуманные статьи:

1. Об интеграции Mapviewer с MS Virtual Earth
2. О поддержке системы координат World mercator (54004) в Oracle Spatial


Читать далее...

FAQ по Oracle Mapviewer

Недавно компания Oracle опубликовала FAQ по Mapviewer. Его русская версия доступна здесь.


Читать далее...

суббота, 13 декабря 2008 г.

OdiInvokeWebService tool is not working properly when using Designer with Java 1.6

It is not possible to invoke a Web Service with the OdiInvokeWebService tool when using Designer with Java 1.6. Invoking an operation throws the following exception :

java.lang.AbstractMethodError:
org.apache.crimson.tree.XmlDocument.getXmlStandalone()Z
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfo(DOM2TO.jav a:373)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:127)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:94)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity (TransformerImpl.java:663)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)

и т.д.

Проблема решается установкой более ранней версии JDK (1.5) или upgradом на более новую версию ODI. Эта новая версия ODI либо 10.1.3.5, либо 11g :) А ее еще нет. По крайней мере я не нашел :))


Читать далее...

Отсутствует класс com.sunopsis.sdk.opentools.SnpsOpenToolAbstract

В Oracle Data integrator есть интересная возможность по расширую функциональности – OpenTool. Эта возможность позволяет на Java написать то, что еще не реализовано в ODI.

Достался этот функционал от старого доброго Sunopsis. Oracle потихоньку начал перекраивать функционал под свои нужды. Соответственно возникают коллизии. Вот на одну такую коллизию наткнулся. 

Я пытался запустить пример, поставляемый в дистрибутиве – SimpleMessageBox. Класс написан на старой версии Sunopsis и там же скомпилирован. В настоящий момент ряд классов переименованы – в частности такого класса как com.sunopsis.sdk.opentools.SnpsOpenToolAbstract не стало, а появился класс oracle.odi.sdk.opentools.OpenToolAbstract. Как результат – при попытке загрузить OpenTool из класса SimpleMessageBox получаем ошибку:

java.lang.NoClassDefFoundError: com/sunopsis/sdk/opentools/SnpsOpenToolAbstract
    Open Tool not acrivated. Your Open Tool references a class not found

Для того, чтобы решить проблему придется перекомпилировать класс SimpleMessageBox.

Для этого

1. Откроем файл $ODI_HOME/demo/plugins/src/com/myCompany/sunopsisOpenTools/SimpleMessageBox.java и делаем глобальную замену фразы "com.sunopsis.sdk.opentools" на фразу "oracle.odi.sdk.opentools". Кроме того, также глобальной заменой следует заменить "Snps" на "".

2. Компилируем класс SimpleMessageBox из каталога $ODI_HOME/demo/plugins/src/com/myCompany/sunopsisOpenTools/

/opt/jdk1.6.0_11/bin/javac –cp /u01/app/oracle/product/10.3.0.4/oracledi/lib/sunopsis.zip SimpleMessageBox.java

3. Копируем $ODI_HOME/demo/plugins/src/com/myCompany/sunopsisOpenTools/SimpleMessageBox.class в каталог $ODI_HOME/demo/plugins/bin/com/myCompany/sunopsisOpenTools/

Дальше можно делать по инструкции.


Читать далее...

среда, 3 декабря 2008 г.

Русский язык в параметрах JSP страниц (UTF-8, Windows-1251)

Борьба с детскими болезнями поддержки русского языка уже начинает надоедать. Связано это в первую очередь с исходной заточенностью многих технологий именно на ASCII символы, ну или, в крайнем случае, на западноевропейскую кодировку.

Очередная проблема с которой я столкнулся – это передача параметров на JSP страницу.

Начал я вот с такого куска кода JSP

<%@ page contentType="text/html;charset=UTF-8" %>
<% query2 = request.getParameter("query_1"); %>

<form action="jview1.jsp" name="jview" method="post">
query 2: <TEXTAREA style="font-size:28px;   font-family: arial, helvetica, sans-serif;" cols=40 name=query_2 rows=6><%=(query2!=null)?query2:""%></TEXTAREA>
</form>

Собственно, что может быть проще. Запостили страничку в UTF-8 с текстовым полем query_2, вытащили его из запроса и обратно затянули в это поле.

А вот и не просто. Вводим в поле текст следующего содержания

“select * from moscow where name='Город'”.

А в ответ получаем

“select * from moscow where name='Город'”.

Для решения этоq проблемы, в конце концов, пришел к вот такому коду (может не оптимальный и не универсальный, но в моем случае работает):

  String query1_temp = request.getParameter( "query_1" );
  query1 =query1_temp==null?null:new String(query1_temp.getBytes("ISO-8859-1"),response.getCharacterEncoding());

Если кто-то сделал по-другому – делитесь. :)


Читать далее...

четверг, 27 ноября 2008 г.

Листовки по Oracle Spatial, Locator и Mapviewer

Опубликованы новые листовки по Oracle Spatial, Locator, Mapviewer на русском языке.

Обзор возможностей Oracle Locator
Обзор возможностей Oracle Spatial
Обзор возможностей Mapviewer

Эти листовки также есть в печатном виде.


Читать далее...

вторник, 25 ноября 2008 г.

Импорт данных Navteq для Oracle Spatial

Как известно, компания 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 Гб

1. Предварительные требования

- Для использования этих данных необходима база данных 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$
set SDO_INDEX_OWNER = 'ODF_EU_Q108';
commit;

Запустите 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$;

 

Troubleshooting

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 в Windows

Если Вы хотите использовать Enterprise Manager (или как его еще называют Database Control) для резервного копирования, экспорта или импорта необходимо проделать некоторые манипуляции по правам пользователя в Windows

Обычно, когда Вы пытаетесь настроить, скажем, импорт  Oracle запрашивает от Вас пользователя в операционной системе от  имени которого будут выполняться операции:

image

После того как введете имя пользователя (даже администратора) – получите ошибку:

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 и добавьте Вашу группу или имя пользователя в список.


Читать далее...

суббота, 22 ноября 2008 г.

Завершился трехдневный Oracle Spatial Workshop

При поддержке наших европейский коллег в миграционном центре 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 получил разрешение от Альберта на перевод его материалов и создания собственного семинара на его основе. Так что, я думаю, к весне мы запустим такой же семинар – может быть даже удлинив его или разбив на части для большей нацеленности на уровень слушателей – начальный или продвинутый.

Если у Вас есть какие-нибудь пожелания по расширению содержания или по его углублению – присылайте эти предложения мне.

 HPIM4768HPIM4770 HPIM4774HPIM4775 HPIM4776 HPIM4781 HPIM4786


Читать далее...

пятница, 21 ноября 2008 г.

Загрузка шейп|shape (shp) файлов в Oracle Spatial

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.


Читать далее...

Ошибка ORA-01722: неверное число или ORA-01722: invalid number

Обычно ошибка возникает при загрузки данных из текстового файла с помощью Oracle Sqlloader. Ошибка связана с тем, что в России разделитель целой и дробной часть запятая, а в США и Европе – точка.

Если попытаться загрузить в базу некорректно отформатированные данные, то Oracle их не поймет. Выйти из этого положения можно несколькими способами. Некоторые проще, некоторые сложне. Давайте рассмотрим их. Вначале простые, к концу более сложные и, возможно, чреватые проблемами.

1. Зайти в файл и заменить все точки на запятые. Например

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

2. В локальном файле при загрузке данных установить соответствующие параметры NLS.

Например, если загрузка осуществляется следующим скриптом батником:

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

Я считаю этот вариант наиболее предпочтительным.

3. Если это Windows, то можно изменить глобальные настройки NLS. Сделать это можно в реестре в веточке

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\NLS_LANG

Нужно будет вместо значения RUSSIAN_RUSSIA.CL8MSWIN1251 прописать AMERICAN_AMERICA.CL8MSWIN1251.

Это решение может очень сильно повлиять на систему в целом. Действие этого параметра может повлечь неработоспособность другого приложения.


Читать далее...

пятница, 14 ноября 2008 г.

Инсталляция пространственных веб-сервис в OC4J

Стандарт WFS.

Стандарт 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

WFS в СУБД реализована как веб-сервис и должна быть развернута в Oracle Containers for Java (OC4J), включенной в Oracle Application Server.

WFS имеет слой метаданных, которые хранятся в базе данных. Эти данные необходимы для ответа на WFS запросы. Метаданные включают пространственные столбцы, которые могут быть запрошены и обработаны с использованием интерфейса Oracle Spatial. Метаданные также содержат ассоциацию непространственных и пространственных столбцов  географических объектов, так как Web Feature Service предоставляет их клиенту.

Ниже показана архитектура Web Feature Service.

  image

Как показано на слайде:

  • 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.

В этой секции описываются шаги, необходимые для конфигурации oc4j для инсталляции пространственных веб-сервисов (spatial web services) и демонстрационных пользователей. Вы полним следующие шаги:

  • сконфигурируем демонстрационных пользователей
  • сконфигурируем пути OC4J
  • Создадим и зарегистрируем разделяемые библиотеки
  • Скопируем файлы в папку разделяемых библиотек
  • Пропатчим xmlparser2.jar файл
  • Извлекаем файлы из wsclient.jar
Сконфигурируем демонстрационных пользователей

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>

image

В файле нажмем Ctrl-O для сохранения, затем Ctrl-X  для выхода.

Сконфигурируем пути OC4J

1. В терминальном окне введем следующие команды:

cd $OC4J_HOME/bin
nano oc4j

image

2. Добавьте следующие строки в начало:
ORACLE_HOME=<путь к OC4J>
JAVA_HOME=<путь к JDK>
image

Если при сохранении возникнет ошибка [ Could not open file for writing: Permission denied ] – необходимо зайти под пользователем root и выполнить следующие команды

cd $OC4J_HOME/bin
chmod 777 oc4j

затем повторить действия, которые не получились.

Создадим и зарегистрируем разделяемые библиотеки

1. Из терминального окна вводим следующие команды для создания каталога разделяемых библиотек:

mkdir $OC4J_HOME/j2ee/home/shared-lib/sdows
mkdir $OC4J_HOME/j2ee/home/shared-lib/sdows/1.0

image

2. Регистрируем библиотеки в 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  для выхода.

image

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>

image

Сохраняем и выходим.

Скопируем файлы в папку разделяемых библиотек

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 .

image

Пропатчим xmlparser2.jar файл

1. Из терминального окна выволним следующие команды, чтобы скопировать файл xmlparserv2.jar из инсталляции ORACLE Database 11g в OC4J:

image

Извлекаем файлы из wsclient.jar

1. Из терминального окна выволним следующие команды, чтобы извлечь файл из JAR-файла wsclient.jar:

export CLIENT_HOME=/home/oracle/wsclient
cd $CLIENT_HOME
unzip wsclient.jar

Запускаем OC4J

В этой секции описано как запустить экземпляр OC4J. Выполните следующие шаги:

1. В терминальном окне введите команды

cd $OC4J_HOME/bin
./oc4j –start

2. При запросе пароля введите любой пароль (для определенности будем считать, что ввели admin). Затем введите тот же пароль для подтверждения. Дождитесь появления сообщения “Oracle Containers for J2EE 10g (10.1.3.4.0)  initialized”

image

Развертывание EAR файлов

В этой секции описано, как развернуть Spatial Web сервис в экземпляре oc4j, запущенном на предыдущем шаге

1. Откройти браузер и введите в строке адреса http://orabi:8888/em/, где orabi – это имя или ip адрес Вашего сервера, где стартован OC4J.

image

2. В открывшемся окне введите пароль (мы условились, что это admin)

image

3. Перейдем на закладку Applications и нажмем кнопку Deploy

image

4. Укажите, что Ваш файл уже лежит на сервере и введите путь к файл sdows.ear. Он расположен в стандартной инсталляции Oracle Database в папке $ORACLE_HOME/md/jlib. В моем случае это папка /u01/app/oracle/product/11.1.0/db_1/md/jlib/sdows.ear. Затем нажмите Next

image

5. В имени приложений укажите sdows, затем Next

image

6. На последней странице нажмите Deploy. Дождитесь завершения развертывания приложения сообщением COMPLETES.

image 

7. В результате приложение должно запуститься

image

Конфигурирование Ваших источников данных

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

1. Завершим выполнение ранее запущенной OC4J комбинацией клавиш Ctrl-C:

image

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"

Вот примерно так

image

Для источников jdev-connection-CSW_ADMIN_CONN_NAME и jdev-connection-WFS_ADMIN_CONN_NAME нужно будет ввести только строку подключения и пароль. Пользователь уже задан:

url="jdbc:oracle:thin:@localhost:1521:orcl"
password="oracle"

image

Сохраняйте 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>

image

Не забудьте убрать коментирующие теги.

Сохраните и выйдите из 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):

image

Аналогичные действия проделаем для файлов wfsdocmd.sql и cswmd.sql:

image

image

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");

image

Аналогично для CSWAdminDemo.java

cd $CLIENT_HOME/src/oracle/spatial/ws/admindemo
nano CSWAdminDemo.java

image

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

image

8. Запустим OC4J:

cd $OC4J_HOME/bin
./oc4j –start

Дождемся пока запустится

image

Теперь будем тестить наши источники данных.

1. Откройте браузер и введите адрес Enterprise Management Console (здесь orabi – имя моего сервера, где развернут OC4J):

http://orabi:8888/em/

image

2. Перейдем на закладку Administration

image

3. Кликнем на значек рядом с пунктом JDBC Resources

image

4. Будем теперь нажимать ссылку Test Connection рядом с каждым пунктом

image

5. Тестирование должно проходить корректно:

image

image

Все на этом WFS сервер можно считать развернутым ;) Пока непонятно как к нему цепляться :))) Сейчас над этим работаем.


Читать далее...

VMWare Server 2.0

Ну вот и свершилось то, чего так долго ждали. Вышла новая версия VMWare.

Установил, создал виртуальную машину, поработал – все вроде работает. Но… Теперь начинаются но…

Для управления виртуальной машиной теперь доступен только web интерфейс

image

Может кому-то и нравится, но не мне. Требует много ресурсов, зависит от версии браузера, не очень быстр.

Но ладно – с этим может быть и смирился бы, но оказывается, что для работы с виртуальной машиной теперь приходится инсталлировать plug-in для браузера. Я использую Chrome, поэтому мне нужен plug-in именно для него ;) Сами понимаете – такого plug-in нет и приходится запускать всеми любимый Internet Explorer.

Следующий не очень приятный момент – это убогая функциональность этой консоли. Как можно видеть из слайда ниже – можно отключить DVD, но подключить, например, другой образ с сервера в этой консоли невозможно. Можно, конечно, пойти в центральную консоль и все там сделать, но слишком много телодвижений.

image

И еще – с какого перепугу перезагрузка виртуальной машины попала в Troubleshoot

image

Короче, привыкать к новой версии и привыкать. Переходить на новую версию – решайте сами. Я пока остаюсь на 1.0.8 :)


Читать далее...

Семинар по Database Options. Spatial Included.

Как Вы знаете – Oracle Spatial это одна из опций базы данных Oracle. Т.е. Oracle Spatial – это составная часть базы данных, использующая все ее возможности и все остальные опции, функции и расширения, такие Oracle Real Application Cluster, Data Guard, Stream и т.д. Т.е. имеет смысл рассматривать ее не просто как отдельный компонент, а как составную часть большой и очень мощной машины.

Чтобы показать Вам все эти опции и их взаимодействие мы проводим семинар Database Options Details.

Следующий семинар будет проходить 4-5 декабря в Москве. В него будет включена секция по Oracle Spatial, Mapviewer, Семантическим сетям.

Более подробную информацию можно найти здесь DBOD v2.


Читать далее...

Инсталляция СУБД Oracle для Linux (VMWare) – Oracle Enteprise Linux

Для работы нам понадобится

1. VMWare Server http://www.vmware.com/products/server/. Нужно скачать сам сервер и зарегистрироваться для получения серийного номер. Продукт абсолютно бесплатный. Инсталляция его проблем не приносит.

2. Oracle Enterprise Linux – можно использовать также другие версии Linux, но эту версия обладает рядом преимущест (помимо того, что она выпускается корпорацией Oracle :)

  • Для тестирования бесплатная
  • Легко скачать с интернет
  • Полная совместимость с Red Hat.
  • Включен ряд пакетов специально для СУБД 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/. Также не обязателей, но очень удобен в работе.

Когда все это у нас есть – приступаем к инсталляции.

 

1. Создание виртуальной машины Oracle Enteprise Linux

  1. Создаем виртуальную машину
      image
  2. Указываем, что виртуальная машина Red Hat Enterprise Linux 4 
    image
  3. Выделим 1 Гб для виртуальной машины – это минимальный рекомендованный объем памяти для Oracle Database 11.1.0.6
     image
  4. Создаем новый виртуальный диск размером 100 Гб (объем, занимаемый на диске будет зависеть от реального использованного пространства)
    image
  5. Сетевой адаптер укажем Bridged. В этом случае виртуальная машина будет доступна в сети и к ней можно будет подключаться с любого компьютера в Вашей локальной сетке.
    image
  6. Указываем, что хоти использовать физический DVD диск
    image
  7. Мапим этот диск на любой из физических DVD-ROMов.
    image
  8. Floppy диск говорим не добавлять вообще
    image
  9. Добавляем USB – в будущем будет полезно, если захотим цеплять USB диск или флешку снаружи.
    image 
  10. Соглашаемся с конфигурацией на последнем экране
    image

Мы создали виртуальную машину. Теперь она стоит и мигает нам разными огоньками. Давайте запустим ее. Для этого вверху нажмем такую зелененькую кнопочку.
image

Виртуалка запустится. Я использовал в качестве браузера Chrome и при переходе на закладку Console увидел замечательное сообщение
image

Как не жалко, но пришлось уходить в Internet Explorer. В Internet Explorer кликнем на Install Plug-in и чудесным образом увидим выскочит окошко, предлагающее инсталляцию специальной Vmware Console.
image

В ней надо будет кликнуть на ссылку Open the console in a new window и получаем специальное окошечко с виртуальной машиной Linux.

image

Пока что там пусто, операционки нет и ее нужно проинсталлировать, чем мы и займемся.

2. Инсталляция Oracle Enteprise Linux

Для инсталляция нам понадобятся образы CD дисков Oracle Enterprise Linux 4 Update 7, ранее скачанные с сайта Oracle.

  1. Перейдем обратно в окно с настройками виртуальной машины и выберем в этом окне DVD-ROM
    image
  2. Настроим его так, чтобы он смотрел на наши виртуальные образы
    image 
  3. Перезагрузим виртуальную машину
    image
  4. Жмем Enter и ожидаем появления окна с началом инсталляции.
    image
  5. Пропускаем (Skip) проверку
  6. Попадаем в графический экран, где на нас укоризненно взирает пингвин в бронежилете
    image
  7. Говорим, что Language у нас English. Клавиатура U.S. English
  8. Разбивку диска поручаем Automatically Partition, соглашаемся все затирать
    image
  9. Соглашаемся с разбивкой. На следующей странице также соглашаемся с инсталляцией GRUB.
  10. На странице с сетевыми настройками настраиваем имя компьютера и настраиваем IP адрес. У меня адреса в ести выдает DHCP, поэтому я оставил настройки по умолчанию. Обычно приходится настроить IP адрес.
    image
  11. Отключаем firewall и selinux
    image
  12. На странице с выбором дополнительных поддерживаемых языком соглашаемся с настройками по-умолчанию
  13. Указываем нашу временную зону
    image
  14. Задаем пароль пользователя Oracle
  15. Говорим, что хотим кустомизировать настройки пакетов для инсталляции. Делаем это для того, чтобы в будущем легче было инсталлировать Oracle Database
    image
  16. В настройках я убрал Web Server, Windows File Server, Printing Support. Добавил Development Tools, Legacy Software
    image
  17. Говорим два раза Next. Соглашаемся с тем, что у нас есть все диски для инсталляции.
  18. Откинувшись на спинку кресла и периодически меняя диски, наблюдаем хвалебные оды, которые поет о себе наш пингвин в бронежилете ;)
  19. После перезагрузки получаем
    image
  20. Жмем Next, Next, Next… до самого конца
    image
  21. Войдем и на рабочем столе щелкнем правой кнопкой. Запустим Terminal. Наберем в нем ifconfig и увидим там ip адрес нашего сервера. Дальше будем цеплять снаружи за этот ip адрес с помощью PuTTY. Но сначала нужно проделать один шаг – проинсталлировать VMWare Tools.
  22. Идем на домашнюю страницу виртуальной машины и говорим, что хотим инсталлировать VMware Tools:
    image
  23. Инсталлируем VMware tool внутри виртуальной машины командой
    rpm –Uvh /media/cdrom/VMwareTools-2.0.0-122956.i386.rpm
    image
  24. Запускаем /usr/bin/vmware-config-tools.pl.
  25. Везде соглашаемся с настройками по-умолчанию. В настройках разрешения экрана выбираем 1024x768.
  26. Oracle Enterprise Linux проинсталлирован и готов к работе
    image

3. Настраиваем подключение к виртуальной машине.

  1. Запускаем PuTTY
    image
  2. Вводим IP адрес нашего виртуального компьютера (мы его запоминали раньше)
    image
  3. Вводим имя и пароль.
  4. Теперь проинсталлируем Far и WinSCP.
  5. После инсталляции зайдем в FAR. Нажмем Alt-F2 и увидим новый пункт WinSCP
    image
  6. Выберем его и с помощью Shift-F4
    image
    image
  7. Зайдем в эту сессию и увидим диск виртуальной машины
    image
  8. Выполненные подключения будут помогать в будущем.

4. Инсталлируем базу данных Oracle Database 11.1.0.6.

Инструкцию по инсталляции можно найти в дистрибутиве Oracle. Здесь я приведу более краткие выдержки из Quick Installation Guide.

  1. Распаковываем дистрибутив Oracle Database и получившуюся папку с помощью Far копируем на виртуальный сервер через WinSCP
     image
  2. Пока копируется – будем проверять настройки для инсталляции Oracle. Войдем через PuTTY.
    image
  3. Проверим объем оперативной памяти. Должно быть минимум 1 Гб. Кроме того объем Swap должен быть не менее 1,5 объема оперативной памяти. Проверить это можно следующими командами
    grep MemTotal /proc/meminfo
    grep SwapTotal /proc/meminfo
    image
  4. Проверим наличие необходимых нам RPM пакетов.



    Для Oracle Enterprise Linux 4.0 и 5.0 можно запустить следующую команду
    rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat
    При это для разных версий должен быть разный вывод
    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

  • Применим настройки из sysctl.conf командой sysctl –p
  • В файл /etc/security/limits.conf добавим следующие строки
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
  • Можно это проделать командами

    echo 'oracle soft nproc 2047' >>/etc/security/limits.conf
    echo 'oracle hard nproc 16384'>>/etc/security/limits.conf
    echo 'oracle soft nofile 1024' >>/etc/security/limits.conf
    echo 'oracle hard nofile 65536' >>/etc/security/limits.conf
  • В файл  /etc/pam.d/login следующие строки

    session required pam_limits.so
  • Можно это проделать командами

    echo 'session required pam_limits.so' >>/etc/pam.d/login
  • В файл /etc/profile

    if [ $USER = "oracle" ];
        then if [ $SHELL = "/bin/ksh" ];
                   then
                         ulimit -p 16384
                         ulimit -n 65536
                   else
                         ulimit -u 16384 -n 65536
                 fi
    fi
  • Можно это проделать командами

    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

  • Создадим необходимые для инсталляции каталоги:

    mkdir -p /u01/app/
    chown -R oracle:oinstall /u01/app/
    chmod -R 775 /u01/app/
  • Разрешим всем пользователям доступ к папке /stage, где сложены дистрибутивы (на боевых серверах так делать не надо)
    chmod -R 777 /stage 
  • Теперь перейдем непосредственно к инсталляции СУБД Oracle. Для этого давайте войдем под только что созданным пользователем oracle в Gnome. Щелкнем правой кнопкой на рабочем столе и запустим терминал Open Terminal

  • Запустим инсталляцию
    image

  • Мы будем инсталлировать базу данных с настройками по-умолчанию, но я все же для большей надежности применяю Advance Installation (не надо нам этого упрощенства)
    image

  • Соглашаемся инсталлировать Inventory в папку /u01/app/oraInventory
    image

  • Выбираем Enterprise Edition (отличие Enterprise и Standard можно посмотреть здесь TBD)
    image

  • Соглашаемся с путем по-умолчанию
    image

  • Далее идет проверка системы на соответствие требованияем Oracle. Кстати очень полезная штука. Раньше ее не было и очень часто в середине инсталляции Oracle Universal Installer вываливался с малопонятными и редко информативными сообщениями. Как можно видеть моя система не прошла по всем требованиям. Точнее одно требование просто проверено не было. Связано это с тем, что у меня виртуальная машина получает ip по DHCP. Если настроить статику, то такой проблемы не будет.
    image

  • Жмем Next и соглашаемся продолжать даже в таких ужасных условиях. Говорим, что хотим создать базу данных.
    image

  • База данных у нас будет общего назначения, поэтому выбираем General Purpose/Transaction Processing
    image

  • Указываем, что база данных будет оба имени (Global Database Name и SID) иметь одинаковыми, т.е. “orcl”. Сделано это для простоты и если Вы в первый раз устанавливаете базу, то крайне рекомендуется эти имена сделать одинаковыми.
    image

  • На следующей странице настроек нужно будет сделать несколько изменений. Во первых сделаем, чтобы память управлялась НЕавтоматически и увеличим ее объем до 600 Мб
    image
    На закладке Character Set выберем либо Use Unicode (если Вы хотите чтобы ваша база поддерживала любые символы вплоть до иероглифов), либо Cyrillic CL8MSWIN1251 (если Вы просто хотите включить поддержку кириллицы).
    image
    На закладке Security – отключим более жесткие настройки безопасности, введенные с 11-ой версии. В настоящее время не весь софт умеет с ними работать. Включение этих настроек приводит к тому, что пароль становится чувствительным к регистру (в 10-ке это было не так).
     image
    На закладке включим инсталляцию схем с примерами (это HR, OE и т.д.)
    image

  • На следующих трех страницах принимаем настройки по-умолчанию
    image
    image
    image

  • Вводим пароли для 4-х стандартных пользователей. Можно указать сразу для всех пользователей один и тот же пароль. Как мы и сделаем
    image 

  • На следующих двух страницах принимаем настройки по-умолчанию
    image
    image

  • Еще раз смотрим на настройки и жмем кнопку для инсталляции
    image 

  • Наблюдаем как все это инсталлируется.

  • В конце после выдачи вот такого окошка
    image

  • Необходимо будет запустить два указанных скрипта под пользователем root и все настройки приниматься по-умолчанию
    /u01/app/oraInventory/orainstRoot.sh
    /u01/app/oracle/product/11.1.0/db_1/root.sh

  • Вот и все. База данных работает.


  • Читать далее...