terça-feira, 21 de julho de 2020

Número máximo de requisições de serviços Web por espaço de trabalho

Olá pessoal,

A partir da versão 18, o APEX implantou funcionalidade de serviços Web que utiliza recursos do ORDS (Oracle REST Data Service).

Como segurança, uma das alterações que foram implementadas foi o controle no número máximo de requisições de serviços Web por espaço de trabalho.

Quando o número máximo de requisições é atingido, ocorre o erro:

ORA-20001: Você excedeu o número máximo de mensagens de solicitações de serviço Web por espaço de trabalho.

A mesma mensagem em inglês é:

ORA-20001: You have exceeded the maximum number of web service requests per workspace


Para verificar quantas requisições foram feitas nas últimas 24 horas, utilize  a seguinte consulta no Comandos SQL:

select count(*)
from APEX_WEBSERVICE_LOG 
where REQUEST_DATE > sysdate - 1

Caso seja necessário, aumente o número máximo de requisições de serviços Web permitidos em 24 horas para cada espaço de trabalho nesta instância do APEX. Esta definição é feita em um único local e vale para todos os espaços de trabalho. Entretanto, é possível configurar um valor mais específico para um determinado espaço de trabalho.


Para fazer o aumento do número máximo de requisições permitidas para cada espaço de trabalho no nível da instância, acesse o Internal > "Gerenciar Instância" > "Segurança" na seção "Isolamento de Espaço de Trabalho" defina para o valor desejado a propriedade "Número Máximo de Solicitações de Serviço Web"



No exemplo acima, definimos para 100000 o número máximo de requisições para cada espaço de trabalho.


Caso queira definir um valor diferenciado apenas para um determinado espaço de trabalho, acesse o Internal > "Gerenciar Espaços de Trabalho" > "Espaços de Trabalho Existentes", pesquise pelo espaço de trabalho desejado, clique no link da coluna "Nome do Espaço de Trabalho", na seção "Isolamento de Espaço de Trabalho" defina para o valor desejado a propriedade "Número Máximo de Solicitações de Serviço Web"



Na imagem acima, definimos para 500.000 o número máximo de requisições de Solicitações de Serviço Web para um espaço de trabalho específico, enquanto os outros continuam como o número máximo em 100.000.

Espero que tenha gostado.

Até a próxima!

domingo, 31 de maio de 2020

URL amigável do APEX

Olá pessoal,

há algum tempo fiz uma postagem sobre como funciona a URL "f?p=" do APEX. Na versão 20.1, surgiu a Friendly URL, que numa tradução literal seria URL amigável, mas a equipe do APEX traduziu para URL simples.

Veja um exemplo da nova URL:

https://apex.oracle.com/pls/apex/meu_workspace/r/minha_aplicacao/minha_pagina
?P2_COD=1
&P2_OUTRO_ITEM=10
&debug=YES
&request=minha_requisicao
&clear=RR
&printerFriendly=YES
&session=32902354289930
&cs=89A65BDFDA2EE4DF932C09E678

Onde está escrito "meu_workpace" é o Prefixo de Caminho e deve ser definido no menu "Administração" que fica no canto superior direito do APEX.
Após isso, selecione a opção "Gerenciar Serviço" > "Definir Preferências do Espaço de Trabalho"

Veja na imagem abaixo que definimos para MEU_WORKSPACE.
Observação: Mesmo que o Prefixo de Caminho seja definido em maiúscula, o APEX considera minúscula na URL. Se utilizar letras maiúsuclas na URL no Prefixo de Caminho, NÃO funciona!


O "r" é um termo obrigatório no APEX e não podemos alterar.

O termo "minha_aplicacao" é o apelido da aplicação.  Veja que definimos o apelido com letras maiúsculas, mas na URL utilizamos minúsculas. Neste caso, o APEX não é case sensitive (não é sensível a maiúsculas e minúsculas). Tanto faz utilizar maiúsculas ou minúsculas na URL que vai funcionar.
Obs: Caso não seja definido um alias, o APEX utiliza o número da aplicação na URL.


O próximo termo é o apelido da página, que também não é case sensitive.
Obs: Caso não tenha definido um apelido para a página, o APEX utilizará o número de página.

Repare que os outros parâmetros na URL são os mesmos que eram definidos antes de maneira posicional. Agora a ordem dos parâmetros não importa!

Por que o APEX fez esta funcionalidade de URLs mais amigáveis?

Não é só para ficar mais bonitinho! O principal objetivo foi permitir a indexação das aplicações pelos sites de busca.

Espero que tenha gostado!

Até mais!

terça-feira, 26 de maio de 2020

Criando conjunto de dados de amostra no APEX

Olá,

vamos mostrar como criar um Conjunto de Dados de Amostra (ou Sample Dataset) no APEX.

A funcionalidade "Conjuntos de Dados de Amostra" surgiu na versão APEX 18.1 e permite a criação de tabelas e de dados de demonstração relacionados a um determinado tema, como por exemplo: Dados de RH, Dados de Projeto, EMP/DEPT, Países, Pedidos de Clientes, Planilha de Tarefas.

Os dados estão disponíveis em diversos idiomas. Até a versão 20.1 infelizmente NÃO há a possibilidade do idioma Português.

É possível instalar, atualizar ou remover os dados e os objetos de banco de dados.

Neste post iremos instalar as tabelas EMP/DEPT em inglês e depois em espanhol, seguindo o passo a passo a seguir.

1) Para acessar esta funcionalidade acesse: SQL Workshop > Utilitários > Conjunto de Dados de Amostra.


2) Clique no botão "Instalar" a frente da linha do conjunto "EMP/DEPT".


3) Selecione o idioma (English) e o esquema. Clique "Próximo".
Obs: Repare que há diversas opções de idiomas para os dados das tabelas EMP/DEPT, mas NÃO há a opção de Português.



4) Confira os objetos de banco que serão instalados e clique em "Instalar Conjunto de Dados".


 5) A tela a seguir indica que os objetos foram instalados com sucesso.
Há duas opções: "Criar Aplicativo" a partir destes objetos ou "Sair".
Como o escopo deste post é apenas os dados, clicaremos "Sair".
Obs: Em algumas versões do APEX, caso você clique no X em vez do botão Sair, os objetos NÃO são criados! Portanto, para sair, sempre clique no botão "Sair"!

6) Para conferir os dados, vá para o Comandos SQL e execute consulta na tabela EMP.

SELECT * FROM EMP;



7) Agora vamos alterar o idioma dos dados. Para isso, vá novamente em SQL Workshop > Utilitários > Conjunto de Dados de Amostra e clique no botão "Atualizar" a frente da linha do Conjunto EMP/DEPT.


8) Selecione o Novo idioma (Neste post vamos selecionar Spanish - Espanhol) e clique no botão "Próximo".

Obs: Caso queira Remover o Conjunto de Dados, há um botão no rodapé desta tela.



9) Verifique os objetos que estão sendo atualizados e clique "Substituir Idioma".


10) Na tela de resultado do carregamento, verifique se ficou tudo ok e clique em "Sair".


11) Ao executar novamente a consulta na tabela EMP no Comandos SQL, verifique que os nomes e os "jobs" dos empregados estão em espanhol. (Compare com o resultado obtido no item 6).


Pronto! Agora você sabe como incluir um conjunto de dados para amostra (ou teste).

Espero que tenha gostado!

Até a próxima!

quinta-feira, 14 de maio de 2020

Como verificar erros pelo id de depuração


Olá,

espero que todos estejam bem!

Estes dias recebi uma tela em que o desenvolvedor não sabia como proceder para identificar o problema.

Acima aparece o erro ORA, mas na mensagem mais abaixo tem um "id de depuração" de número 280691424.

Como consultar este erro a partir do id de depuração?

Muito simples!

Vá ao Comandos SQL e digite:

SELECT *
FROM    apex_debug_messages
WHERE  page_view_id = 280691424
ORDER BY id

Substitua o número 280691424 para o id de depuração do erro em seu sistema.

Outra maneira de fazer isso é acessar no "App Builder" a aplicação que gerou o erro.

Após isso clique em Utilitários > Mensagens de Depuração e pesquise pelo id de depuração desejado.


Clique no link com o número do id de depuração e verifique o que ocorreu.

Até a próxima!

sexta-feira, 7 de fevereiro de 2020

Objetos de banco com tag vermelha no Browser de Objetos

Olá,

algumas pessoas ficam intrigadas com o fato de no "Browser de objetos" aparecer uma tag vermelha indicando que o objeto está inválido.

Veja na figura abaixo um exemplo:



Este é um comportamento padrão do Oracle. Quando modificamos um objeto, os objetos dependentes ficam inválidos, pois o Oracle espera que a gente os recompile.

Se você tem certeza que a modificação que você fez, não terá impacto nos objetos dependentes, não fique preocupado com isso!

Quando a aplicação precisar utilizar este objeto "inválido" (na verdade ainda não recompilado), a primeira coisa que o Oracle fará automaticamente é a recompilação do objeto e, caso realmente esteja tudo certo, o objeto será utilizado normalmente!

Caso prefira, para remover a tag vermelha, você precisa recompilar o objeto!


Mas se houver muitos objetos, rode o script abaixo no Comandos SQL para recompilar todos os objetos inválidos (A execução pode demorar alguns segundos dependendo da quantidade de objetos inválidos):

BEGIN
DBMS_UTILITY.compile_schema(schema => :NOME_ESQUEMA, compile_all => false);
END;

Repare na imagem abaixo que a minha execução demorou mais de 6 segundos, mas este tempo pode ser maior dependendo do seu ambiente.





Para conferir os objetos que ainda permanecem inválidos (agora sim com provável erro), execute a seguinte consulta no Comandos SQL:

SELECT object_type,

       object_name,
       status
FROM   user_objects
WHERE  status = 'INVALID'
ORDER BY object_type, object_name;

Espero que tenha gostado!

Até a próxima!


sexta-feira, 6 de setembro de 2019

Erro: ORA-00001: unique constraint (APEX_XXXXXX,WWV_FLOW_PAGE_PLUG_IDX2) violated

Olá pessoal,

fizemos recentemente upgrade de versão do Oracle Apex.

Recomendamos a nossos desenvolvedores que atualizassem o tema nas aplicações que foram criadas antes do upgrade.

Ao tentar fazer a atualização do tema, seguindo os passos:

Shared Components > Themes > Universal Theme - 42 > "Refresh Theme"

Observação: Não esqueça de fazer uma cópia da aplicação antes dessa operação!

Ocorre o erro título deste post:


Esse é uma constraint interna do Apex "APEX_XXXXXX.WWV_FLOW_PAGE_PLUG_IDX2" e utiliza uma nomenclatura que depende do conhecimento do histórico do Apex para poder decifrar.


  • APEX_XXXXXX é o owner que armazena os metadados do Apex. O XXXXXX é o número da versão. Se sua versão for Apex 19.1, então aparecerá APEX_190100.
  • WWV quer dizer que estará visível na internet (www). Há 20 anos não era comum aplicações disponibilizar informações na internet!
  • FLOW era o nome original da tecnologia que atualmente conhecemos como Apex. Veja que a ideia inicial era implementar "Fluxos de trabalho" (Flows).
  • PAGE_PLUG é como as regiões são conhecidas internamente.
Portanto, o erro está dizendo que há um problema de constraint única em alguma região do Tema.


Para descobrir o problema, vamos em "Shared Components" > "Templates" e filtrar pelo Type = "Region".

Além disso, vá em "Actions" do relatório e mova para a direita "Display in Report" todas as colunas.

Veja no relatório que há um template que está definido localmente, ou seja, não está inscritos no Tema (Coluna "Subscribed From" nula) e que possui o mesmo nome (Coluna "Name" = "Standard") de um template padrão do Apex.



A solução para o problema foi renomear o Template localmente definido "Standard" (que está com o mesmo nome de um template padrão do Apex) e o refresh do Tema funcionou bem!!!

Espero que tenha sido útil!

Até a próxima!

quarta-feira, 12 de junho de 2019

GUOB Tech Day - Oracle Groundbreakers Latin America Tour 2019


Estão abertas as inscrições para a 10ª edição do principal evento do Grupo de Usuários Oracle do Brasil: GUOB Tech Day. Este evento faz parte do Oracle Groundbreakers Latin America Tour que percorrerá diversos países da América Latina com palestrantes renomados da tecnologia Oracle.

A conferência ocorrerá no dia 10 de agosto na Universidade Nove de Julho - UNINOVE em São Paulo - SP.

Farei uma apresentação sobre Ações dinâmicas no Oracle Apex. A agenda completa pode ser vista no link: https://guobtechday2019.eventize.com.br/index.php?pagina=3

Inscrições pelo site: https://guobtechday2019.eventize.com.br/index.php?inscricao