- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 11 anos, 5 meses atrás por
rman.
-
AutorPosts
-
8 de outubro de 2014 às 3:41 pm #107025
armandoveloso
ParticipanteBom dia!
Temos um banco em 10G e estamos testando-o no 11G. Há uma trigger, no schema SYSTEM, que não está compilando no 11G, enquanto que no 10G está compilada com sucesso e em produção.
Gostaria da ajuda de vocês, pois não estamos contando com desenvolvedores PL/SQL e eu dou apenas suporte no banco.
De cara parece erro de permissão na tabela V$SESSION, mas o usuário SYSTEM consegue sem problemas fazer select nessa tabela, mas dentro da trigger não é reconhecida a v$session.
Segue trecho inicial da trigger:
”
create or replace trigger SYSTEM.TG_LOGON
after logon
on databasedeclare
v_sess v$session%rowtype;
v_num number;begin
select *
into v_sess
from v$session
(…)
”Os erros:
LINE/COL ERROR
——– —————————————————————–
3/13 PL/SQL: Item ignored
3/13 PLS-00201: identifier ‘V$SESSION’ must be declared
8/4 PL/SQL: SQL Statement ignored
10/12 PL/SQL: ORA-00942: table or view does not exist
14/4 PL/SQL: Statement ignored
14/14 PLS-00320: the declaration of the type of this expression is
incomplete or malformed23/3 PL/SQL: Statement ignored
23/8 PLS-00320: the declaration of the type of this expression is
incomplete or malformedObrigado!
Armando8 de outubro de 2014 às 5:26 pm #107027rman
Participante@armandoveloso
Com o usuário SYS conceda o privilégio:
GRANT SELECT ON SYS.V_$SESSION TO SYSTEM;
O PL/SQL não reconhece os privilégios concedidos por meio de ROLES, por isso é necessário conceder o privilégio de forma explicita.
Creio que esse erro não é devido a mudança do 10g para o 11g. Provavelmente no 10g também foi concedido o privilégio de forma explicita. Verifique no 10g se o usuário SYSTEM possui o privilégio:
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE = 'SYSTEM'
AND OWNER = 'SYS'
AND TABLE_NAME = 'V_$SESSION'
9 de outubro de 2014 às 11:38 pm #107028armandoveloso
ParticipanteRMAN,
O select não retornou nenhum registro, tabto no BD 10g quanto no 11g, rodei logado como SYS.
Porém, explicitar o grant de select RESOLVEU o problema!
Há algo estranho, né?
De toda forma, agradeço sua atenção e SOLUÇÃO do problema!
Abraço!
10 de outubro de 2014 às 3:55 pm #107029rman
Participante@armandoveloso
Só uma pergunta. O que faz exatamente essa trigger de evento? Realmente é necessário está no schema SYSTEM?
Eu recomendo não criar nenhum objeto dentro do schema SYSTEM e SYS.
Dependendo do que a trigger faz é interessante estar no schema da própria aplicação.
-
AutorPosts
- Você deve fazer login para responder a este tópico.