Таблица Oracle через OLEDB

0 голосов
спросил 01 Дек, 09 от yellow (1,120 баллов) в категории Программные продукты Esri
Имеется сервер БД Oracle внешней системы. Часть таблиц содержат поля с координатами. Необходимо отображать эти данные в ArcInfo.
На воркстейшен установлены ArcInfo 931 и OracleClient со всеми необходимыми ole драйверами. Соединение с БД происходит замечательно, а вот затем начинаются проблемы.
Часть таблиц нормально открываются как в ArcCatalog так и в ArcMap. Другая часть таблиц присутствует в списке ArcCatalog и их можно увидеть в диалоге добавления данных в ArcMap. Но открыть эти таблице не получается ни там, ни там - выводятся ошибки следующего вида:
An invalid SQL statement was used или General function failure или Table does not exist (в ArcCatalog для различных таблиц) или Error code: 000732: <value>: Dataset <value> does not exist or is not supported в Toolbox.
С правами все нормально, по крайней мере все запросы из командной строки на выборку данных проходят.
Замечено, что не открываются таблицы с большим количеством строк - от 500 тысяч и более. Таблицы с малым количеством открываются нормально.
Вопрос: не сталкивался ли кто с подобной проблемой и где можно почитать об ограничениях, накладываемых ArcGIS на таблицы, подключенные через OleDb?

9 Ответы

0 голосов
ответил 01 Дек, 09 от PITKS1 (20,860 баллов)
Сталкивались - если использовать ole драйвер от Микрософта. Если выбрать родной Оракловский - все должно работать. Хотя может в 9.3.1 и баг новый есть. Надо проверять. 
0 голосов
ответил 02 Дек, 09 от yellow (1,120 баллов)
Использовали и тот и другой. Ошибка совершенно одинаковая.

0 голосов
ответил 02 Дек, 09 от Grigoriy (127,020 баллов)
Возможно, в таблице присутствуют строковые столбцы с очень большой шириной, или с переменной длиной поля (long row). Попробуйте написать View исключая столбцы.
Если найдете столбец, который не нравится ArcGIS, то можно написать во View преобразование типов.

Вот список поддерживаемых типов данных:
http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Data_types_in_the_DBMS
0 голосов
ответил 03 Дек, 09 от yellow (1,120 баллов)
Спасибо за ответ Григорий.
Проблема заключалась в другом. Названия таблиц в базе содержат символы в нижнем регистре и дефисы. В этом случае, драйвер OleDb для Oracle не может производить ни какие действия с таблицей, если в самом запросе не использовалось квотирование. Пример:

select * from VTISS."RU_Hydrometcentre_42_PROC"; '''работает
select * from VTISS.RU_Hydrometcentre_42_PROC; '''не работает

Скорее всего, код ArcGIS содержит ошибку при работе с oledb драйвером oracle.
Было бы замечательно, если бы кто нибудь смог подтвердить мои догадки, и специалисты Дата+ внесли ошибку в трэкер esri


0 голосов
ответил 03 Дек, 09 от PITKS1 (20,860 баллов)
А откуда select запускался ??? Потому как я не могу воспроизвести проблему. Мало того. Только в Oracle 11 могут иметь значение прописные и строчные буквы. 10-ке на это плевать. 
0 голосов
ответил 04 Дек, 09 от yellow (1,120 баллов)
Select запускался из sqldeveloper для Oracle. Проблема не в запросе, а в том что каталог не может работать с такими таблицами.
По поводу версии Oracle - я думаю, конечному пользователю ArcCatalog так же наплевать, какая там версия субд. В документации ArcGis нет ограничений на версию оракла, подключаемого через oledb

0 голосов
ответил 04 Дек, 09 от PITKS1 (20,860 баллов)
Зато у Оракла есть ограничение какие версии клиентов с какими базами совместимы. Если база 11, а клиент - 9(10) - можно ожидать глюков.
0 голосов
ответил 04 Дек, 09 от yellow (1,120 баллов)
Клиент самый последний. И глюка не наблюдается, а воспроизводится с помощью sqldeveloper.
0 голосов
ответил 05 Дек, 09 от PITKS1 (20,860 баллов)
ArcCatalog не знает что нужно имя таблицы брать в кавычки. Если одни таблицы работают через sqldeveloper без кавычек, а другие - нет - значит глюк в самом оракле (настройках). Надо копать оттуда. 
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...