Problema no QGIS com Oracle

51 views
Skip to first unread message

Fernanda Paganelli Toller França

unread,
May 23, 2022, 5:42:15 PMMay 23
to qgisbrasil

Boa noite a todos.

Estou com dificultade de resolver um problema, espero que alguém consiga me ajudar.

Vou tentar explicar da melhor forma possível.

Trabalho em um orgão público e antigamente utilizávamos o Geomedia (Sisgraph) mas apesar de termos algumas licenças vitalícias na empresa, não era mais possível atualizar a versão do software dentre outros problemas e resolveu-se utilizar o QGIS.

Como disse, usávamos o Geomedia e toda a estrutura de banco de dados foi desenvolvida pela empresa dona desse software, quando vim trabalhar no geoprocessamento já havia toda a estrutura montada e nunca esbarrei em nenhum problema com relação a geometria ou o armazenamento dela. Mas com a mudança do Geomedia para o QGIS, isso mudou.

Nosso banco de dados: é usado o Oracle e ele não usa o sistema de coordenadas nativo do Oracle e todos os tipos de coordenadas são armazenadas na tabela GCOORDSYSTEM na base GDOSYS, o formato de armazenamento da geometria é no objeto MDSYS.SDO_GEOMETRY e todas as tabelas tem um índice espacial que fica em USER_INDEXES.

Consigo trabalhar normalmente no QGIS com relação a “select”, mas quando preciso salvar um dado geométrico novo ou modifica-lo esbarro no problema que não consigo resolver.

Ele sempre apresenta uma mensagem:

Ver imagem1.png

Fiz um teste e exclui o índice espacial da tabela USER_INDEXES e consegui salvar a geometria mas fica gravado de uma forma diferente (imagem abaixo), a linha destacada foi salva pelo QGIS e as demais pelo Geomedia.

Parece que o QGIS não entende a forma como está a estrutura da geometria do SRID.

Eu realmente preciso do índice espacial, então não é uma opção não tê-la.

Ver imagem2.png

Sei que parece muito mais uma questão da estrutura do banco de dados, mas alguém tem alguma ideia do que possa ser esse problema? Como eu poderia contornar?

Obrigada,

Fernanda

imagem2.png
imagem1.png

Fernanda Paganelli Toller França

unread,
May 27, 2022, 10:40:33 AMMay 27
to qgisbrasil
Algum avanço... quem sabe alguém consiga me ajudar a partir daqui...

Tenho um usuario MASTER, proprietario da tabela TESTE1, e tenho um usuario USER com permissao na tabela TESTE.
O USER apesar das permissoes "select, update, delete, insert" na tabela TESTE1, não consegue editar a geometria da tabela.

Então, baseado no que encontrei na internet, somente do proprietario da tabela pode modificar a geometria dela.

Criei a tabela TESTE2 para o USER, como proprietario.
Com isso, habilitou a opção de "Edição de Vertice" para a camada TESTE2.
Mas o erro ao salvar, persiste: SQL: ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine

Alguma ideia de como resolver ?

Fernanda Paganelli Toller França

unread,
Jun 13, 2022, 8:33:57 AMJun 13
to qgisbrasil
Alguém consegue me ajudar. Continuo com o problema.

yjmenezes

unread,
Jun 14, 2022, 9:03:14 AMJun 14
to qgisbrasil
@tollerfernanda

bom dia.

Pode haver problema de permissao na tabela de indices, durante a conversao para Oracle ?


Pode tentar dar uma olhada aqui,

[]s
julio
#freeAssange

Fernanda Paganelli Toller França

unread,
Jun 20, 2022, 1:30:47 PMJun 20
to qgisbrasil
Descobri que se eu der GRANT na coluna de geometria da tabela MASTER.TESTE1 para o usuário USER, ENTÃO A EDIÇÃO DE GEOMETRIA NO QGIS funciona (a ferramenta de vértice é habilitada) isso resolve uma parte do meu problema.

Mas não consigo descobrir o que está faltando de permissão para o USER salvar a edição/inclusão. E esta é o mais importante pra mim.

O USER está com estas permissões:
  • CREATE SESSION
  • UNLIMITED TABLESPACE
  • ALTER ANY INDEX
  • CREATE INDEXTYPE
  • CREATE ANY INDEX
  • CREATE TABLE
  • SELECT ANY SEQUENCE
  • CREATE OPERATOR
  • CREATE SEQUENCE
  • ALTER ANY TABLE

O erro é reclamado quando tenta executar a rotina ODCIINDEXUPDATE.

As linhas de erro retornadas são:
ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine
ORA-13365: layer SRID does not match geometry SRID
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 270

Olhei o type MDSYS.SDO_INDEX_METHOD_10I no link https://docs.oracle.com/cd/A87860_01/doc/appdev.817/a76937/dci11ex4.htm para ver se tinha algo no código que poderia me ajudar a descobrir algo mais especifico mas não tive sucesso.

@yjmenezes, sugeriu que poderia ser permissão, e também acho isso, mas não consegui pensar no que está faltando.

Alguma ideia?

yjmenezes

unread,
Jun 23, 2022, 8:02:00 AMJun 23
to qgisbrasil
@tollerfernanda

Nao sei se funciona no Oracle, mas pode tentar ver as permissoes para o usuario com:

show grants for 'user'@'host';

good luck.

[]s
julio
#freeAssange

yjmenezes

unread,
Jun 24, 2022, 10:12:31 AMJun 24
to qgisbrasil
@tollerfernanda

Uma ideia:
1- Crie um DBnovo para teste, com poucos registros, semelhante ao DB atual,  em que o usuario possa salvar a edicao/inclusao.
2- liste as permissoes do usuario neste DBnovo.
3- compare as permissoes nos dois DBs.

[]s julio




Em segunda-feira, 20 de junho de 2022 às 14:30:47 UTC-3, tollerf...@gmail.com escreveu:
Reply all
Reply to author
Forward
0 new messages