Nesse post quero tratar de um problema que enfrentei com o Oracle.
Tive que atualizar meus dados a partir de um arquivo dump enviado pelo cliente, isso é uma atividade normal no inicio dos projetos.
Podemos fazer pelo Oracle Enterprise Manager ou direto pela linha de comando.
Pela linha de comando a query é:
impdp use/senha directory=IMPORT_DIR \ dumpfile= nome do dumpfile \ logfile= nome do logfile;
Onde:
IMPORT_DIR: Diretório onde o arquivo .dmp esta salva
dumpfile: Nome do arquivo
logfile: Nome do arquivo de log ( este deve estar na mesma pasta que o arquivo .dmp)
Não é possível realizar o import como usuário SYS ou SYSDBA temos que criar um usuário especifico para import com acesso ilimitado na tablespace USERS.
O meu problema foi que dessa vez esse comando não funcionou e deu o erro abaixo:
UDI - 31626: OPERATION GENERATEX ORALCE ERROR 361626
ORA - 31626: job does not exist
ORA - 06512: AT "SYS.DBMS_SYS_DATAPUMP", line 1137
ORA - 06512: AT "SYS.DBMS_SYS_DATAPUMP", line 3414
ORA - 06512: AT "SYS.DBMS_SYS_DATAPUMP", line 4593
ORA - 06512: AT line 1
Procurei por esse erro em vários fóruns e infelizmente demorei para encontrar a solução principalmente porque a solução foi justamente a combinação de algumas respostas, o primeiro passo para a solução é verificar se o seu usuário de import tem permissão no SYS.DBMS_SYS_DATAPUMP,caso ele já tenha permissão e esteja tudo OK com o usuário ( senha OK, acesso a tablespace USERS OK), temos que recriar a SYS.DBMS_SYS_DATAPUMP.
Recriando o SYS.DBMS_SYS_DATAPUMP no Oracle 11g
Primeiro passo: rodar Catproc.sql
SQL >@ $ORACLE_HOME/rdbms/admin/catproc.sql
Segundo passo: se necessário recompilar os objetos inválidos
SQL >@ $ORACLE_HOME/rdbms/admin/utlrp.sql
Esses comandos levaram um tempo para executar, quando concluíram foi só rodar o impdp novamente.
sexta-feira, 23 de maio de 2014
terça-feira, 20 de maio de 2014
Funções Agrupadoras
Neste post vamos falar sobre os mecanismos do SQL para transformar dados em informações.
Esses mecanismos são as funções de agrupamento.
Imagine que você tem total acesso a todas as tabelas do banco mas a unica coisa que consegue fazer é um SELECT simples das tabelas, e tem que saber o total de Mulheres cadastrada na sua tabela de clientes, sem as funções de agrupamento você teria que fazer o select abaixo esperar que o banco retorne todos os dados e contar o total de linhas.
SELECT * FROM tb_cliente WHERE sexo = 'F';
Alem de onerar muito o banco de dados o retorno vai trazer muita coisa que você não precisa e não quer, graças aos agrupadores você pode fazer esse outro SELECT e ter apenas a informação que você realmente precisa deixando sua consulta mais rápida e objetiva:
SELECT count(*) FROM tb_cliente WHERE sexo = 'F';
No exemplo acima o segundo select retorna apena um numero total de registro onde o sexo é igual a "F" ou seja o total de clientes Mulheres que você tem cadastrado.
Existem outras funções de agrupamento que podemos usar abaixo segue uma tabela com as principais funções de agrupamento e sua descrição:
Esses mecanismos são as funções de agrupamento.
Imagine que você tem total acesso a todas as tabelas do banco mas a unica coisa que consegue fazer é um SELECT simples das tabelas, e tem que saber o total de Mulheres cadastrada na sua tabela de clientes, sem as funções de agrupamento você teria que fazer o select abaixo esperar que o banco retorne todos os dados e contar o total de linhas.
SELECT * FROM tb_cliente WHERE sexo = 'F';
Alem de onerar muito o banco de dados o retorno vai trazer muita coisa que você não precisa e não quer, graças aos agrupadores você pode fazer esse outro SELECT e ter apenas a informação que você realmente precisa deixando sua consulta mais rápida e objetiva:
SELECT count(*) FROM tb_cliente WHERE sexo = 'F';
No exemplo acima o segundo select retorna apena um numero total de registro onde o sexo é igual a "F" ou seja o total de clientes Mulheres que você tem cadastrado.
Existem outras funções de agrupamento que podemos usar abaixo segue uma tabela com as principais funções de agrupamento e sua descrição:
Assinar:
Postagens (Atom)