Tempo aproximado para leitura: 00:02:51 min
Ocorrência
Na execução do programa MEN906ZATIMEOUT - Funções de Programa é apresentada a mensagem de erro 16435 identificando a não existência ou falta de permissão em tabelas ou views do banco de dados: Não foi possível executar programa! A execução do programa "men906zatimeout" não foi possível devido ao problema: Tabela ou view não existe ou não pode ser acessada. (1436)
Ambiente
Framework - Framework (Linha Datasul) - Oracle - Todas as versões
Causa
Quando habilitado o timeout em ambiente Oracle, os usuários necessitam de leitura em tabelas como a v$session. É comum a falta desta permissão.
Solução
Sugere-se a criação de uma role para que seja atribuída a todos os usuários Oracle configurados para o Datasul.
1) Os comandos abaixo criam a role e atribuem alguns privilégios necessários para o funcionamento do Datasul, porém para tal criação precisa ser feita com o usuário sys do Oracle.
CREATE ROLE DATASUL;
GRANT ALTER SYSTEM TO DATASUL;
GRANT CREATE SEQUENCE TO DATASUL;
GRANT CREATE SESSION TO DATASUL;
GRANT CREATE TABLE TO DATASUL;
GRANT SELECT ANY DICTIONARY TO DATASUL;
GRANT SELECT ANY TABLE TO DATASUL;
GRANT SELECT ANY SEQUENCE TO DATASUL;
GRANT SELECT ON SYS.ARGUMENT$ TO DATASUL;
GRANT SELECT ON SYS.COL$ TO DATASUL;
GRANT SELECT ON SYS.COM$ TO DATASUL;
GRANT SELECT ON SYS.CON$ TO DATASUL;
GRANT SELECT ON SYS.DUAL TO DATASUL;
GRANT SELECT ON SYS.ICOL$ TO DATASUL;
GRANT SELECT ON SYS.IND$ TO DATASUL;
GRANT SELECT ON SYS.LINK$ TO DATASUL;
GRANT SELECT ON SYS.OBJ$ TO DATASUL;
GRANT SELECT ON SYS.PROCEDURE$ TO DATASUL;
GRANT SELECT ON SYS.SEQ$ TO DATASUL;
GRANT SELECT ON SYS.SYN$ TO DATASUL;
GRANT SELECT ON SYS.TAB$ TO DATASUL;
GRANT SELECT ON SYS.TS$ TO DATASUL;
GRANT SELECT ON SYS.USER$ TO DATASUL;
GRANT SELECT ON SYS.VIEW$ TO DATASUL;
GRANT CONNECT TO DATASUL;
GRANT RESOURCE TO DATASUL;
2) Feita a criação e concedido os privilégios, tem que conceder aos usuários a role criada. Deverá ser executado o comando de grant para todos os usuários que conectam os bancos. Tire um dump de dados da tabela bco_empres do emsfnd para verificar os usuários utilizados nas conexões. Segue exemplo da sintaxe para efetuar o grant:
GRANT DATASUL TO EMS2CAD;
Importante
Depois que criar a role, efetuar a permissão de grant para todos os usuários utilizados para conexão com o Oracle. Não esquecer das permissões para o usuário do banco emsfnd que consta no arquivo .pf.
0 Comentários