Pessoal, Bom dia!
Ontem estava fazendo uma importação data pump (IMPDP) quando me deparei com os erros ORA-39083 e ORA-02304.
ORA-39083: Object type TYPE failed to create with error:
ORA-02304: invalid object identifier literal
Failing sql is:
A Causa do problema é quando estamos tentando importar com Objeto com OID que já existe no Banco de Dados - Deve ser único, ou seja, não podem conter 2 Objetos com o mesmo OID.
Para contornar esse problema:
Nos parâmetros do IMPDP inclua o parâmetro TRANSFORM=oid:n.
Exemplo:
IMPDP system/senha@instancia directory=data_pump_dir schemas=HR dumpfile=HR_DUMP.dmp logfile=HR_DUMP_LOG.log TRANSFORM=oid:n
Abraços,
Bruno Duarte.
sexta-feira, 27 de junho de 2014
quinta-feira, 26 de junho de 2014
Treinamento PL/SQL | Download Apostila [Oracle];
Senhores,
Encontrei uma apostila PL/SQL muito interessante, e para facilitar ainda mais, esta totalmente em português.
Diferente de algumas que já li, o conteúdo desta é bem objetivo (sem enrolação).
Encontrei uma apostila PL/SQL muito interessante, e para facilitar ainda mais, esta totalmente em português.
Diferente de algumas que já li, o conteúdo desta é bem objetivo (sem enrolação).
Para você que esta começando a programar ou até para quem já é mais avançado, é bem legal dar uma conferida.
Link para Download: Aqui
Abraços,
Bruno Duarte.
sexta-feira, 20 de junho de 2014
Engenharia Reversa - Package DBMS_METADATA [Oracle];
Pessoal, Bom dia!
Outro dia estava precisando recriar alguns objetos no meu Banco de Dados, quando conheci esta incrível Package chamada DBMS_METADATA.
Com ela, é possível obtermos a Engenharia Reversa de praticamente qualquer criação (DDL).
As opções são muitas, por isso vou demonstrar algumas:
Como foi criada uma Tabela:
Como foi criada uma Procedure:
Como falei, são muitas opções, sendo possível obter também a engenharia reversa de TRIGGER, PACKAGE, VIEW, FUNCTION, INDEX e etc.
Para mais informações, Link do documento da Própria Oracle:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm
Valeu,
Bruno Duarte.
Outro dia estava precisando recriar alguns objetos no meu Banco de Dados, quando conheci esta incrível Package chamada DBMS_METADATA.
Com ela, é possível obtermos a Engenharia Reversa de praticamente qualquer criação (DDL).
As opções são muitas, por isso vou demonstrar algumas:
Como foi criada uma Tabela:
SELECT dbms_metadata.get_ddl ('TABLE', 'EMPLOYEES') FROM dual;
Como foi criada uma Procedure:
SELECT dbms_metadata.get_ddl('PROCEDURE', 'SECURE_DML') FROM dual;
Como falei, são muitas opções, sendo possível obter também a engenharia reversa de TRIGGER, PACKAGE, VIEW, FUNCTION, INDEX e etc.
Para mais informações, Link do documento da Própria Oracle:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm
Valeu,
Bruno Duarte.
quarta-feira, 11 de junho de 2014
ORA-01917: user or role 'X' does not exist - IMPDP [Oracle];
Galera, Boa tarde!
Hoje passei o dia em chamados de Data Pump (EXPDP e IMPDP), até que em uma importação (IMPDP) me deparo com o erro ORA-01917.
GRANT EXECUTE ON "X" TO "X"
IMP-39083: Object type OBJECT_GRANT failed to create with error:
ORA-01917: user or role 'X' does not exist
A Solução é simples!
Nos parâmetros do IMPDP inclua o parâmetro GRANTS=NO.
Exemplo:
IMPDP system/senha@instancia directory=data_pump_dir schemas=HR dumpfile=HR_DUMP.dmp logfile=HR_DUMP_LOG.log GRANTS=NO
Valeu,
Bruno Duarte.
Hoje passei o dia em chamados de Data Pump (EXPDP e IMPDP), até que em uma importação (IMPDP) me deparo com o erro ORA-01917.
GRANT EXECUTE ON "X" TO "X"
IMP-39083: Object type OBJECT_GRANT failed to create with error:
ORA-01917: user or role 'X' does not exist
A Solução é simples!
Nos parâmetros do IMPDP inclua o parâmetro GRANTS=NO.
Exemplo:
IMPDP system/senha@instancia directory=data_pump_dir schemas=HR dumpfile=HR_DUMP.dmp logfile=HR_DUMP_LOG.log GRANTS=NO
Valeu,
Bruno Duarte.
terça-feira, 10 de junho de 2014
Como retirar acentos de uma coluna - Função Translate [Oracle];
Bom dia a todos!
Ontem estava desenvolvendo uma Função para retirar os acentos de uma determinada Coluna, quando após algumas pesquisas descobri uma função super simples do próprio Oracle.
> Função Translate
Analisando a Função, de certa forma ela é parecida com o Replace, porém a diferença é que no Replace não seria possível fazer a substituição da letra acentuada por a letra sem acento em um único argumento.
Foi aí que utilizei a função no meu UPDATE !
Bom... Primeiro vamos visualizar a Tabela - A coluna Descrição com palavras acentuadas.
Após o UPDATE, todas as palavras acentuadas tiveram o seu acento removido/substituído.
Abraços,
Bruno Duarte.
Ontem estava desenvolvendo uma Função para retirar os acentos de uma determinada Coluna, quando após algumas pesquisas descobri uma função super simples do próprio Oracle.
> Função Translate
Select TRANSLATE ('Testando a Função Translate - Retira Acentuação', 'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ', 'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy') As TRANSLATE FROM DUAL;
Analisando a Função, de certa forma ela é parecida com o Replace, porém a diferença é que no Replace não seria possível fazer a substituição da letra acentuada por a letra sem acento em um único argumento.
Foi aí que utilizei a função no meu UPDATE !
Bom... Primeiro vamos visualizar a Tabela - A coluna Descrição com palavras acentuadas.
UPDATE TB_PALAVRAS_ACENTUADAS SET DESCRICAO = TRANSLATE (''||DESCRICAO||'', 'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿ', 'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy');
Após o UPDATE, todas as palavras acentuadas tiveram o seu acento removido/substituído.
Abraços,
Bruno Duarte.
quarta-feira, 4 de junho de 2014
Como alterar o idioma do Oracle SQL Developer para Inglês [Oracle];
Aqui vai uma dica para quem instalou o SQL Developer em Português.
Eu particularmente prefiro trabalhar com a ferramenta em inglês, pelo motivo de já ter acostumado com alguns termos.
Sempre quando leio Stored Procedure como Procedimento Armazenado é meio estranho! rs
Bom vamos ao que interessa!
Será necessário abrir o arquivo ide.conf localizado no diretório:
C:\sqldeveloper\ide\bin --No meu caso se localizava no C:\ (raiz).
Acrescentar esta linha no final do código e salvar.
AddVMOption -Duser.language=en
Agora será necessário reiniciar o SQL Developer e Pronto!
Estará em Inglês!
Abraços,
Bruno Duarte.
Eu particularmente prefiro trabalhar com a ferramenta em inglês, pelo motivo de já ter acostumado com alguns termos.
Sempre quando leio Stored Procedure como Procedimento Armazenado é meio estranho! rs
Bom vamos ao que interessa!
Será necessário abrir o arquivo ide.conf localizado no diretório:
C:\sqldeveloper\ide\bin --No meu caso se localizava no C:\ (raiz).
Acrescentar esta linha no final do código e salvar.
AddVMOption -Duser.language=en
Agora será necessário reiniciar o SQL Developer e Pronto!
Estará em Inglês!
Abraços,
Bruno Duarte.
terça-feira, 3 de junho de 2014
Migração de Dados do SQL Server para Oracle - Via SQL LOADER [Exportação e Importação em massa];
Pessoal, Boa tarde!
Em um outro Post demonstrei a vocês o processo para migrar os dados do SQL Server para o Oracle.
Leia: http://dbaduarte.blogspot.com.br/2014/05/migracao-de-dados-do-sql-server-para.html
Hoje irei apenas mostrar um passo para otimizar o procedimento com exportação e importação em massa.
Após efetuado todos os passos do Post anterior, agora vamos no desenvolvimento da melhoria!
Com todos os comandos BCPs e arquivos CTLs desenvolvidos, será necessário salvá-los em uma pasta do Servidor SQL Server.
Exemplo *.BCP:
Exemplo *.CTL:
Ok ! Agora vamos desenvolver uma BAT para exportar todos os dados das tabelas de uma só vez.
Usei o utilitário osql pelo motivo do SQL Server estar na versão 2000, caso fosse uma superior usaria o sqlcmd.
-U: Usuário
-P: Senha
-S: Nome do Servidor (SQL Server)
-d: Nome da Base de dados
%1, %2, %3, %4: Parâmetros que iremos passar - Para não ser chumbado na BAT.
-i: Entrada (Arquivo)
-o: Saída (Arquivo)
osql -U%1 -P%2 -S%3 -d%4 -iTABLESQLSERVER.bcp -oTABLESQLSERVER.log
Salvar a BAT na mesma pasta dos outros arquivos.
Iremos executar a BAT pelo cmd do Servidor SQL Server:
>cd C:\Migracao
>bcp.bat usuario senha nomedoservidor nomebasededados
OBS: Passando os parâmetros dos %1, %2, %3, %4
Os arquivos foram exportados em .TXT no C:\ do Servidor SQL Server - Conforme definimos nos arquivos .BCP.
Salvá-los na mesma pasta dos outros arquivos.
Feito ! Vamos a criação da BAT para a importação dos dados em massa no Servidor Oracle.
sqlldr userid=%1/%2@%3 control=TABLESQLSERVER.ctl log=TABLESQLSERVER.log
Salvar a BAT na mesma pasta dos outros arquivos.
Para a importação, será necessário copiar a pasta com todos os arquivos para o Servidor Oracle, ou em algum outro local que tenha o Client do Oracle instalado e o TNSNAMES configurado com os dados do Servidor - No meu caso copiei para a minha máquina local.
Iremos executar a BAT pelo cmd (No meu caso da minha máquina local).
>cd C:\Migracao
>loader.bat usuario senha instanciaoracle
Pronto! Todas as suas tabelas foram migradas em massa de uma só vez!
Valeu,
Bruno Duarte.
Leia: http://dbaduarte.blogspot.com.br/2014/05/migracao-de-dados-do-sql-server-para.html
Hoje irei apenas mostrar um passo para otimizar o procedimento com exportação e importação em massa.
Após efetuado todos os passos do Post anterior, agora vamos no desenvolvimento da melhoria!
Com todos os comandos BCPs e arquivos CTLs desenvolvidos, será necessário salvá-los em uma pasta do Servidor SQL Server.
Exemplo *.BCP:
Exemplo *.CTL:
Ok ! Agora vamos desenvolver uma BAT para exportar todos os dados das tabelas de uma só vez.
Usei o utilitário osql pelo motivo do SQL Server estar na versão 2000, caso fosse uma superior usaria o sqlcmd.
-U: Usuário
-P: Senha
-S: Nome do Servidor (SQL Server)
-d: Nome da Base de dados
%1, %2, %3, %4: Parâmetros que iremos passar - Para não ser chumbado na BAT.
-i: Entrada (Arquivo)
-o: Saída (Arquivo)
osql -U%1 -P%2 -S%3 -d%4 -iTABLESQLSERVER.bcp -oTABLESQLSERVER.log
Salvar a BAT na mesma pasta dos outros arquivos.
Iremos executar a BAT pelo cmd do Servidor SQL Server:
>cd C:\Migracao
>bcp.bat usuario senha nomedoservidor nomebasededados
OBS: Passando os parâmetros dos %1, %2, %3, %4
Os arquivos foram exportados em .TXT no C:\ do Servidor SQL Server - Conforme definimos nos arquivos .BCP.
Salvá-los na mesma pasta dos outros arquivos.
Feito ! Vamos a criação da BAT para a importação dos dados em massa no Servidor Oracle.
sqlldr userid=%1/%2@%3 control=TABLESQLSERVER.ctl log=TABLESQLSERVER.log
Salvar a BAT na mesma pasta dos outros arquivos.
Para a importação, será necessário copiar a pasta com todos os arquivos para o Servidor Oracle, ou em algum outro local que tenha o Client do Oracle instalado e o TNSNAMES configurado com os dados do Servidor - No meu caso copiei para a minha máquina local.
Iremos executar a BAT pelo cmd (No meu caso da minha máquina local).
>cd C:\Migracao
>loader.bat usuario senha instanciaoracle
Pronto! Todas as suas tabelas foram migradas em massa de uma só vez!
Valeu,
Bruno Duarte.
Assinar:
Postagens (Atom)