2014-09-09 5 views
3

Я много искал, но ни одна из ссылок не помогла мне в решении этой проблемы. Я получаюORA-21500: внутренний код ошибки, аргументы: [% s], [% s], [% s], [% s], [% s], [% s], [% s], [% s]

ORA-21500: внутренний код ошибки, аргументы: [% s], [% s], [% s], [% s], [% s], [% s], [% s], [% s] при использовании OracleDataAdapter.

Я использую 11.2.0 клиент Oracle, а набор данных оракула - 11.1.0.7.0. Может ли кто-нибудь помочь мне в том, почему я получаю эту ошибку? Некоторые из ссылок, которые я искал, говорят, что это связано с несовместимым клиентом и базой данных оракула. Эта ошибка прерывистая, и отладка проблемы не давала много подсказок.

Результат StackTrace:

at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) 
at Oracle.DataAccess.Client.OracleDataReader.Read() 
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping) 
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) 
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) 
at Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) 

ответ

1

От here:

Причина

Причиной ошибки является внутренняя ошибка Oracle, которая может контролировать ни ArcGIS ни ArcSDE. Ошибка встречается, когда приложение генерирует инструкцию SQL, используя звездочку в списке SELECT (SELECT * FROM ...).

Дополнительную информацию об ошибках Oracle см. В документе Oracle Metalink Примечание: 49375.1.

Обход

Есть два возможных способа решения этой проблемы. Убедитесь, что имеется пространственный индекс для класса объектов и/или добавьте дополнительный атрибут после атрибута ST_Geometry.

Чтобы проверить наличие пространственного индекса, используя ArcCatalog, подключитесь к экземпляру ArcSDE в качестве владельца класса объектов. Выберите функцию класс. Откройте диалоговое окно свойств. Выберите вкладку индексов и убедитесь, что присутствует пространственный индекс.

Чтобы добавить новый атрибут в класс объектов в ArcCatalog, откройте свойства класса объектов . Выберите вкладку полей и добавьте новый атрибут .

Как только атрибут ST_Geometry больше не находится в последней позиции списка SELECT *, внутренняя ошибка ORA-21500 больше не встречается .

2

Спасибо за комментарий. Я просто обнаружил, что эта проблема связана с размером выборки, который я устанавливаю на объекте команды Oracle, из которого я создаю Oracle Data Adapter. Как только я прекратил установку размера выборки команды, он начал нормально работать без каких-либо проблем.

Смежные вопросы