DataARTIGO

FRM-10256 – E lá vai o DBA

Olá, amigos. Recentemente, estou participando de uma migração de um banco de dados Oracle 8i para Oracle 10g, da plataforma 32-bits para 64-bits e uma aplicação Forms/Reports 6i (Oracle Developer 6i), e nos deparamos com um problema de Security após a criação e importação dos owners para o novo banco de dados.

Quando mandei o desenvolvedor conectar a aplicação no novo banco de dados, para fins de testes, conectividade e possíveis problemas do 10g (Pois é uma migração do 8i, e a aplicação está toda em REGRA), o Forms nos emitia um erro estranho, como mostra abaixo:

FRM-10256: User is not authorized to run Form Builder Menu.

Logo de início, pensei que poderia ser problemas no owner da aplicação (no banco de dados) ou o menu da aplicação, que utiliza outro owner para validar e construir o menu. Fiz todos os checks necessários, como:

  • Analisar o “STATUS ACCOUNT” de todos os owners no banco de dados, que pode ser feito pela view dba_users
  • Olhar qual perfil de banco de dados os owners estão usando, todos estavam com DEFAULT para início.
  • Analisar com a base de produção, objetos inválidos, views e qualquer outro objeto que tenha relação com a construção dos menus, e também nada.

Então, resolvi, junto com o desenvolvedor, pesquisar sobre o assunto e esse erro específico, e encontramos a seguinte solução pelo Metalink.

Visão Geral

A segurança do Oracle Forms é baseada em roles (papéis) no banco de dados Oracle. Essas roles são um método de permitir o acesso as informações do banco de dados para os usuários, portanto, se nenhum usuário não tem acesso a qualquer coisa, essas roles podem ajudar a facilitar o acesso.

Desde que os usuários tenham essas roles definidas pelo DBA ou Administrador de aplicação, os módulos de MENU e ITENS DO MENU terão um controle de acesso feito internamento pelo menu da aplicação.

Solução

Para resolver esse problema, o DBA, conectado no banco de dados com o usuário SYS, deve executar um script de segurança que vem junto com o Developer 6i, que é o script abaixo:

Para ambiente Windows

%ORACLE_HOME%\tools\dbtab\forms60\frm60sec.sql

Para ambiente Linux\Unix

$ORACLE_HOME/forms60/admin/sql/frm60sec.sql

Esse script é pertecente ao ORACLE_HOME do Developer 6i, não confunda com o ORACLE_HOME do banco de dados. Execute ele com o usuário SYS e seus problemas vão terminar.

Abaixo, segue o conteúdo do script, caso estejam com esse problema e não consigam acessar o servidor de aplicação por motivo de segurança da empresa ou qualquer outro motivo.

FRM60sec.sql

create or replace view FRM50_ENABLED_ROLES as
select urp.granted_role role,
sum(distinct decode(rrp.granted_role,
'ORAFORMS$OSC',2,
'ORAFORMS$BGM',4,
'ORAFORMS$DBG',1,0)) flag
from sys.user_role_privs urp, role_role_privs rrp
where urp.granted_role = rrp.role (+)
and urp.granted_role not like 'ORAFORMS$%'
group by urp.granted_role;

create public synonym FRM50_ENABLED_ROLES for system.FRM50_ENABLED_ROLES;

create role ORAFORMS$OSC;
create role ORAFORMS$DBG;
create role ORAFORMS$BGM;

PRONTO! Acho que agora vai resolver a vida! Caso tenha problemas, dê os grants de SELECT do SYNONYM para os usuários que precisa acessar a aplicação.

Abraços,

Blog Rodrigo Almeida

Rodrigo Almeida, DBA Oracle há mais de 10 anos é um dos DBA’s mais influentes do pais e mantém seu próprio Portal e Fórum (www.rodrigoalmeida.net), eleito ORACLE ACE em 2009 pela Oracle Corporation, cursou Eng. da Computação pela UNISANTA, graduado em Analise de banco de dados e pós-graduando em BI pela Veris Faculdades, especialista em Micro-eletrônica pelo INSA em Toulouse/França. Possui certificações OCP 9i/10g/11g, OCE SQL Expert, OCS 11g Implementations e Exadata e mais de 14 certificações Oracle. É vice-presidente do grupo de usuários Oracle do Brasil (GUOB), colunista Oracle do portal iMasters e colaborador técnico para os principais portais e revistas Brasileiras e internacionais. É participante dos Beta Program da Oracle Coporation para soluções de banco de dados e instrutor oficial da Oracle University Brasil para os treinamentos de BD e Exadata e atualmente é DBA Oracle e DMA Exadata e consultor técnico da Oracle do Brasil focado no gerenciamento e implementação de Oracle Exadata, Exalogic e tecnologias de banco de dados e aplicações Oracle. Também é proprietário da empresa UNIDBA Consultoria em TI (www.unidba.com.br)

Ver perfil