Foi constatado o temido ORA-00600 (erro genérico) no alert log de um ambiente Oracle 11g (11.2.0.1).
Aqui vale mencionar que está versão é base da release 2 do Oracle 11g e não é aconselhado utiliza-lá em ambientes de produção.
Este ambiente precisava estar nesta versão por conta de testes que estavam sendo realizados.
Ao investigar, vi que o erro ocorria durante a janela de manutenção automática do Oracle que, entre outras coisas, realiza a coleta de estatísticas.
Em testes de coleta de estatísticas manualmente, o mesmo erro foi constatado:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SQL> EXEC DBMS_STATS.GATHER_DATABASE_STATS; BEGIN DBMS_STATS.GATHER_DATABASE_STATS; END; * ERROR at line 1: ORA-00600: internal error code, arguments: [15851], [3], [2], [1], [1], [], [], [], [], [], [], [] ORA-06512: at "SYS.DBMS_STATS", line 20508 ORA-06512: at "SYS.DBMS_STATS", line 20993 ORA-06512: at "SYS.DBMS_STATS", line 21150 ORA-06512: at "SYS.DBMS_STATS", line 21109 ORA-06512: at line 1 |
Conforme Doc ID 1138205.1, encontrado no My Oracle Support (MOS), o erro ocorre por conta do “Bug 9056912 – GATHERING STATISTICS ON EXTERNAL TABLES REQUIRES NULL FOR ESTIMATE_PERCENT”.
Como solução, o DOC propõe as seguintes alternativas:
- Realizar upgrade para o 12.1.0.1 ou superior;
- Aplicar o patch set 11.2.0.2 ou superior;
- Aplicar o interim patch 9056912 (Se disponível para sua plataforma e versão);
- E a utilização de um “workaround”, uma especie de manobra para contornar o problema, sem resolver completamente.
As duas primeiras opções realmente são as mais indicadas, mas como foi dito antes, este ambiente precisa continuar na versão que está. Dito isso, iremos ficar com a terceira opção, aplicar o interim patch 9056912.
-
-
- Efetuar o download do patch e mover para o servidor, salvei no diretório /tmp;
- Antes de iniciar o processo, é necessário fazer o shutdown de todas as instâncias ligadas ao ORACLE_HOME que será aplicado o pacth.
- Por precaução, efetuar a cópia do ORACLE_HOME completo, para outro diretório (backup).
- Descompactar o arquivo do pacth e entrar no diretório extraído
1234567891011121314151617181920212223242526[oracle@srvtst01 tmp]$ unzip p9056912_112010_Linux-x86-64.zipArchive: p9056912_112010_Linux-x86-64.zipcreating: 9056912/creating: 9056912/files/creating: 9056912/files/rdbms/creating: 9056912/files/rdbms/admin/inflating: 9056912/files/rdbms/admin/prvtstat.plbinflating: 9056912/files/rdbms/admin/prvtstai.plbcreating: 9056912/files/lib/creating: 9056912/files/lib/libserver11.a/inflating: 9056912/files/lib/libserver11.a/qkadrv.oinflating: 9056912/files/lib/libserver11.a/qkssa.ocreating: 9056912/etc/creating: 9056912/etc/config/inflating: 9056912/etc/config/inventory.xmlinflating: 9056912/etc/config/actions.xmlinflating: 9056912/etc/config/deploy.xmlcreating: 9056912/etc/xml/inflating: 9056912/etc/xml/GenericActions.xmlinflating: 9056912/etc/xml/ShiphomeDirectoryStructure.xmlinflating: 9056912/README.txt[oracle@srvtst01 tmp]$[oracle@srvtst01 tmp]$ cd 9056912/[oracle@srvtst01 9056912]$ lsetc files README.txt[oracle@srvtst01 9056912]$ - Utilizando o utilitário OPatch, iremos fazer a verificação do status atual do ambiente (listando os patchs instalados), antes de aplicar o novo patch:
1234567891011121314151617181920212223242526272829303132[oracle@srvtst01 9056912]$ $ORACLE_HOME/OPatch/opatch lsinventoryInvoking OPatch 11.1.0.6.6Oracle Interim Patch Installer version 11.1.0.6.6Copyright (c) 2009, Oracle Corporation. All rights reserved.Oracle Home : /u01/oracle/product/11.2.0/dbhome_1Central Inventory : /u01/oraInventoryfrom : /etc/oraInst.locOPatch version : 11.1.0.6.6OUI version : 11.2.0.1.0OUI location : /u01/oracle/product/11.2.0/dbhome_1/ouiLog file location : /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2017-05-25_09-10-48AM.logPatch history file: /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch_history.txtLsinventory Output file location : /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2017-05-25_09-10-48AM.txt--------------------------------------------------------------------------------Installed Top-level Products (1):Oracle Database 11g 11.2.0.1.0There are 1 products installed in this Oracle Home.There are no Interim patches installed in this Oracle Home.--------------------------------------------------------------------------------OPatch succeeded.[oracle@srvtst01 9056912]$
Perceba a mensagem: “There are no Interim patches installed in this Oracle Home”. - Agora vamos aplicar o patch, ainda no diretório do patch descompactado, chame o utilitário OPatch com o parâmetro apply:
12345[oracle@srvtst01 9056912]$ $ORACLE_HOME/OPatch/opatch apply(...)(...)OPatch succeeded. - Patch aplicado com sucesso. Para confirmar, vamos executar novamente o lsinventory:
12345678910111213141516171819202122232425262728293031323334353637[oracle@srvtst01 ~]$ $ORACLE_HOME/OPatch/opatch lsinventoryInvoking OPatch 11.1.0.6.6Oracle Interim Patch Installer version 11.1.0.6.6Copyright (c) 2009, Oracle Corporation. All rights reserved.Oracle Home : /u01/oracle/product/11.2.0/dbhome_1Central Inventory : /u01/oraInventoryfrom : /etc/oraInst.locOPatch version : 11.1.0.6.6OUI version : 11.2.0.1.0OUI location : /u01/oracle/product/11.2.0/dbhome_1/ouiLog file location : /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2017-05-25_09-10-48AM.logPatch history file: /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch_history.txtLsinventory Output file location : /u01/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2017-05-25_09-10-48AM.txt--------------------------------------------------------------------------------Installed Top-level Products (1):Oracle Database 11g 11.2.0.1.0There are 1 products installed in this Oracle Home.Interim patches (1) :Patch 9056912 : applied on Mon May 25 09:44:22 BRT 2017Unique Patch ID: 12326305Created on 24 Mar 2010, 06:30:14 hrs PST8PDTBugs fixed:9056912--------------------------------------------------------------------------------OPatch succeeded.[oracle@srvtst01 ~]$
Tudo certo! Após a aplicação do patch os erros pararam de ocorrer.
-