MigraTI - Soluções em banco de dados

sexta-feira, 12 de agosto de 2011

Tabela SYS.NOEXP$

Hoje encontrei um erro no banco de um cliente bem curioso:


EXP-00056: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized

Ai vocês devem estar se questionando, o porque não coloquei o tópico deste post com estes erros?
Por que é simples, não quero falar sobre o erro, quero falar sobre algo que descobri com ele ;), no caso a tabela NOEXP$.

Neste erro a solução da oracle é mudar a rotina de backup para DataPump, pois há um bug no exp para a versão 10.2.0.4 que não consegue exportar alguns tipos de tabelas com XML.

Porem no DataPump ele não exporta tabelas com XML.
ORA-39139: Data Pump does not support XMLSchema objects. TABLE_DATA:"LANA"."LANA_XML" will be skipped.

Foi ai que eu descobri a tabela NOEXP$

Esta tabela faz com que o export da oracle simplesmente não exporte a tabela.

Exemplos:


Lana-> exp teikobkp/******* file=teste.dmp log=teste.log owner=LANA


...
Current user changed to LANA
. . exporting table          LANA_LANA          7 rows exported
. . exporting table          LANA_XML
EXP-00056: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized

...


SQL> insert into NOEXP$ values ('LANA','LANA_XML','2');

1 row created.


SQL> commit;


Commit complete.


SQL> exit


...



Lana-> exp teikobkp/******* file=teste.dmp log=teste.log owner=LANA
...
. about to export LANA's tables via Conventional Path ...
. . exporting table          LANA_LANA               7 rows exported
. . exporting table          TESTE_SEQUENCE          0 rows exported
. . exporting table          TESTE_TRIGGER           3 rows exported
...

. exporting statistics
Export terminated successfully with warnings.




Segue o describe da tabela:


SQL> desc NOEXP$
 Name                  Null?    Type
 --------------------- -------- ------------


 OWNER                 NOT NULL VARCHAR2(30)
 NAME                  NOT NULL VARCHAR2(30)
 OBJ_TYPE              NOT NULL NUMBER





Onde OBJ_TYPE você pode pegar na "obj$" com a seguinte query.


SQL> select name,type# from obj$ where name = 'LANA_XML';


NAME                                TYPE#
------------------------------ ----------
LANA_XML                                2

Dica:
Este OBJ_TYPE é o tipo do objeto, logo se for tabela sempre será 2.

Considerações Finais.
Palavras de Rafael Stoever: Muito interessante, perigoso, mas interessante.

Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui.

Nenhum comentário:

Postar um comentário