- Este tópico contém 9 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 7 meses atrás por
Sousa04.
-
AutorPosts
-
23 de abril de 2010 às 5:07 pm #93740
Sousa04
ParticipanteBom dia a todos Nessa ótima Sexta Feira!!!
Gostaria que me ajudassem nesse pequeno problem.
Tenho uma view criada no schema do usuário X (VW_MAT_SERVIDOR).
Eu preciso que o usuário Y atualize essa view.Logo fiz o seguinte com o usuário Y
call dbms_mview.refresh(‘X.VW_MAT_SERVIDOR’)
e me apareceu o seguinte erro
ORA-23401: materialized view “string”.”string” does not exist
Dei essas permissões para o usuário Y
GLOBAL QUERY REWRITE
QUERY REWRITEmas acho q to voando rsrsrs nessa parte
Se puderem dar um help desde já agradeço.
Abs
Alex23 de abril de 2010 às 5:51 pm #93741Regis Araujo
ParticipanteOla amigo..!!
Tente assim..!
EXECUTE DBMS_MVIEW.REFRESH(‘<NOME_DA_VIEW','’);
Onde no campo vc irá colocar C de Complete ou F de Force..!
Normalmente usa-se o C de complete..!
Abraços..!
23 de abril de 2010 às 6:41 pm #93742Sousa04
Participantevlw vou testar
23 de abril de 2010 às 6:55 pm #93743diegolenhardt
ParticipanteO [F] não seria de Fast?
C – Completo (Atualiza a view materializada com base em todos os registros necessários para montar a visão completa)
F – Fast (Rapido) Atualiza a view materializada com base em arquivos de logs, ou seja, somente os registros que necessitam da alteração.Acho que seria isso..
corrijam se estiver errado, sempre achei que fosse assim..
23 de abril de 2010 às 7:04 pm #93744Regis Araujo
ParticipanteOpa..!!
Certissimo Diogo.. eu me equivoquei…!
O parametro de FORCE… é na DBMS_SNAPSHOT.REFRESH..
Acontece..!!!
Valeu..!
Abraços..!
23 de abril de 2010 às 7:51 pm #93746diegolenhardt
Participanteclaro sem problemas,
falows
23 de abril de 2010 às 9:49 pm #93747Sousa04
ParticipanteFiz conforme pessoal
EXECUTE DBMS_MVIEW.REFRESH(‘VW_MAT_SERVIDOR’,’C’)
EXECUTE DBMS_MVIEW.REFRESH(‘VW_MAT_SERVIDOR’,’F’)
EXECUTE DBMS_MVIEW.REFRESH(‘VW_MAT_SERVIDOR’,’?’)recebi a seguinte mensagem
ora-01031 insufficient privileges
ORA-06512: at “SYS.DBMS_SNAPSHOT”Dei a permissão alter any materialized view para o usuário
mas o erro permanece…..23 de abril de 2010 às 11:14 pm #93748CleitonHanzen
ParticipanteOpá…
Acredito que sejam necessários mais privilégios para conseguir atualizar a MVIEW de outro owner (drop/delete/insert any table), mas isso tem desvantagens absurdas no quesito segurança.
O mais fácil é você criar uma procedure abaixo do Owner da MVIEW que faça o refresh e você conceder privilégio de execute nesta procedure para o owner Y.
create or replace procedure X.atualiza is
begin
dbms_mview.refresh(‘X.VW_MAT_SERVIDOR’) ;
end;
/grant execute on X.atualiza to Y;
connect Y/Y
exec X.atualiza;
Acredito que seja mais fácil, rápido e seguro para resolver este problema.
PS: Sou péssimo em programaçao PL/SQL (me desculpem se tem algum erro)…
23 de abril de 2010 às 11:59 pm #93749Sousa04
ParticipanteGalera consegui !!!!!!
tipo fiz o seguinte esquema para a criação e o acesso ok
DANDO PERMISSÃO DE CRIAÇÃO DA VIEW
sqlplus sys@homolog as sysdba
SQL*Plus: Release 10.2.0.1.0 – Production on Sex Abr 23 16:17:23 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining optionsSQL> grant CREATE MATERIALIZED VIEW to alexsousa;
Grant succeeded.
SQL>exit;
=================================================================================================================================CRIANDO A VIEW VW_TESTE
sqlplus alexsousa@homolog
SQL*Plus: Release 10.2.0.1.0 – Production on Sex Abr 23 16:17:23 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining optionsSQL> create materialized VW_TESTE as
select a , b
from table
group by a , b;Materialized view created.
SQL> select MVIEW_NAME, REWRITE_ENABLED, REFRESH_MODE, REFRESH_METHOD, BUILD_MODE
2 from all_mviews;MVIEW_NAME R REFRES REFRESH_ BUILD_MOD
—————————— – —— ——– ———
VW_TESTE N DEMAND FORCE IMMEDIATESQL> EXECUTE DBMS_MVIEW.REFRESH(‘VW_TESTE’,’?’)
PL/SQL procedure successfully completed.
SQL> exit
==============================================================================================
CRIANDO UM USUÁRIO PARA ACESSAR A VIEW NO MEU ESQUEMASQL> create user userteste identified by alex
2 default tablespace td_orfeu
3 quota unlimited on td_orfeu
4 ;User created.
SQL> grant connect to userteste;
Grant succeeded.
SQL> grant resource to userteste;
Grant succeeded.
SQL> grant create any view to userteste;
Grant succeeded.
SQL> grant CREATE MATERIALIZED VIEW to userteste;
Grant succeeded.
SQL>exit;
===============================================================================================
DANDO PERMISSÃO DA VIEW VW_TESTE PARA O USUÁRIO TESTEsqlplus alexsousa@homolog
SQL*Plus: Release 10.2.0.1.0 – Production on Sex Abr 23 16:17:23 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining optionsSQL> grant all on vw_teste to userteste
2 ;Grant succeeded.
SQL> exit
==============================================================================================
EXECUTANDO A VIEW VW_TESTEsqlplus userteste@homolog
SQL*Plus: Release 10.2.0.1.0 – Production on Sex Abr 23 16:17:23 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
With the Partitioning, OLAP and Data Mining optionsSQL> EXECUTE DBMS_MVIEW.REFRESH(‘alexsousa.vw_teste’,’?’);
PL/SQL procedure successfully completed.
SQL>
23 de abril de 2010 às 11:59 pm #93750Sousa04
Participanteobrigado a todos!!!!
-
AutorPosts
- Você deve fazer login para responder a este tópico.