Senhores, bom dia. ** Oracle 11.2.0.4 EE. Alguns desenvolvedores estão testando recriar uma view materializada que precisa ser modificada. Consultando a view dba_objects com o nome da MV, temos: SQL> SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME = 'XUXA' Que me retorna duas linhas: Uma linha com o tipo de objeto **MV** e a outra linha do tipo **TABLE**. Para alterar o código do view, o desenvolvedor dropou e recriou a view, segue: SQL> DROP MATERIALIZED VIEW XUXA; SQL> CREATE MATERIALIZED VIEW XUXA REFRESH FAST ON DEMAND WITH PRIMARY KEY AS SELECT COL1, COL2, COL3 FROM XUXA; ORA-00955: nome já está sendo usado por um objeto existente
** Minha primeira dúvida é a seguinte: Como é que poderia existir em minha base anteriormente, e que estava funcionando, uma MV que continha o mesmo nome de uma tabela e que essa mesma tabela fazia parte da consulta da MV? Olhando pelo lado lógico do problema (até onde eu sei), uma materialized view apenas guarda o metadados (definição da consulta, período de atualização, tipo de atualização, etc), e quando uma MV é criada, o RDBMS Oracle, implicitamente, cria uma tabela "por baixo" que é justamente aonde o RDBMS Oracle irá buscar os dados. Pesquisando mais um pouco, percebi que existe uma forma de criar uma view materializada com o mesmo nome de uma tabela, mas que essa tabela não pode ser usada na mesma consulta da MV, o que não é o meu caso. Estou precisando de algumas dicas em relação a esse problema que estou enfrentando, não posso deixar passar alguns scripts que já estão prontos para serem aplicados em produção antes de estar bem seguro em relação a esse problema.
