Problema no QGIS com Oracle

105 views
Skip to first unread message

Fernanda Paganelli Toller França

unread,
May 23, 2022, 5:42:15 PM5/23/22
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 AM5/27/22
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 AM6/13/22
to qgisbrasil
Alguém consegue me ajudar. Continuo com o problema.

yjmenezes

unread,
Jun 14, 2022, 9:03:14 AM6/14/22
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 PM6/20/22
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 AM6/23/22
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 AM6/24/22
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:

Fernanda Paganelli Toller França

unread,
Dec 20, 2022, 9:55:12 AM12/20/22
to qgisbrasil
Bom dia!

Finalmente descobri, depois de muitos testes e pesquisas, o que está causando esse erro no QGIS de não salvar a edição no banco Oracle.
O banco não tem, não sei o motivo, o sistema de coordenadas que uso, o 31983 - sirgas 2000 23sS.
Não encontrei nas tabelas do Oracle em que deveriam estar, como a MDSYS.SDO_CS_SRS ou a MDSYS.SDO_COORD_REF_SYS.
No software Geomedia, provavelmente ele deve ter alguma configuração que não usa o sistema de coordenadas do Oracle.
Então vejo duas soluções possíveis... Ou incluir esse sistema de coordenadas... Ou se o QGIS tiver algum tipo de configuração como o Geomedia que não precisa usar o do Oracle...
Mas em ambos os casos, não sei como fazer... 
Fiz um pedido no forum do Oracle mas ainda não me ajudaram... https://community.oracle.com/tech/apps-infra/discussion/comment/16851761#Comment_16851761
Alguém consegue me ajudar?

Anderson Roberto da Silva

unread,
Dec 20, 2022, 2:52:52 PM12/20/22
to qgisb...@googlegroups.com
Boa tarde,

Estranho não ter o sistema de coordenadas 31983. Particularmente acho ruim trabalhar com Oracle pois as dúvidas na maioria das vezes somente consultando a documentação oficial, parece que poucos usam para bancos de dados geográficos.

Enfim, qual é a versão do banco que está utilizando?

Fiz um teste aqui na versão 19, e contém o sistema de coordenadas 31983.

Exemplo:
SELECT * FROM SDO_COORD_REF_SYS WHERE SRID = 31983;

No link abaixo contém os passos para inserir um sistema de coordenadas.



-- 
Anderson Roberto da Silva
Engenheiro Cartógrafo





--
Comunidade QGIS Brasil: http://qgisbrasil.org/
---
You received this message because you are subscribed to the Google Groups "qgisbrasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qgisbrasil+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/qgisbrasil/ce6d3a4c-8098-49f0-b158-8e5fbce7d9d4n%40googlegroups.com.

Fernanda Paganelli Toller França

unread,
Dec 20, 2022, 3:11:43 PM12/20/22
to qgisbrasil
Eu não sei o motivo de não conter esse sistema de coordenadas, já que é o nosso oficial.
Suspeito que, talvez, quando o DBA contratado fiz a migração do 9i para o 11g não sobrescreveram as tabelas.

Estou usando a versão Oracle Database 11g Enterprise Edition Release 11.2.0.3.0

Eu olhei essa documentação do Oracle e tentei inserir manualmente mas tive vários problemas.
E não temos DBA para dar suporte no momento.

Anderson Roberto da Silva

unread,
Dec 20, 2022, 6:03:33 PM12/20/22
to qgisb...@googlegroups.com
Acredito que a versão do banco que você estão utilizando é muito antiga, recomendo a atualização para uma versão mais recente.
Faça um teste utilizando a versão 19c ou superior.
Use o Docker mesmo para facilitar a instalação. A Oracle já disponibiliza imagens prontas para uso. Lembre-se que só pode ser utilizado para desenvolvimento e não para produção.
-- 
Anderson Roberto da Silva
Engenheiro Cartógrafo




Reply all
Reply to author
Forward
0 new messages