terça-feira, 6 de setembro de 2016

ORA-01792: maximum number of columns in a table or view is 1000

Este erro pode ocorrer no Oracle database nas versões 10.2.0.4 até a 12.1.0.2.
Uma das recomendações da Oracle é a não utilização de tabelas com mais de 1000 colunas. 
Uma observação importante é que se estivermos criando uma view e fazendo join entre
tabelas, a quantidade de colunas a ser contabilizada é a da view e não necessariamente da tabela original. Existem 3 formas de resolver o problema, sendo: 1) Patch de correção É recomendando a aplicação do patch 19509982. Este patch está incluso na atualização de produto Oracle 12c (database) a partir de Abril/2016 (19-04-16) * Mesmo tendo esse patch aplicado, podemos ainda receber o erro informado. 2) Alterar a sessão Podemos configurar o parâmetro "_fix_control"='17376322:OFF' para a sessão que estamos executando no banco de dados, através do comando abaixo: SQL> alter session set "_fix_control"='17376322:OFF';
3) Alterar o banco de dados (spfile) A outra alternativa que temos é alterar o arquivo spfile, incluindo o parâmetro diretamente nas configurações gerais do banco de dados. SQL> alter system set "_fix_control"='17376322:OFF' scope=both; Esse parâmetro é aplicado sem a necessidade de reiniciar o banco de dados.
Referências: https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=391695224838272&id=1951689.1&_afrWindowMode=0&_adf.ctrl-state=vvdi114x_170 Select Statement Throws ORA-01792 Error (Doc ID 1951689.1)