terça-feira, 27 de maio de 2014

Como retirar Quebra de Linha no SQL Server e Oracle;

Pessoal,  Boa tarde!

Aqui vai a dica para retirar quebra de linha de um campo

SQL SERVER:
select REPLACE(CAMPO, CHAR(13) + Char(10) ,' ') FROM TABELA

ORACLE:
select REPLACE(TRIM(CAMPO),CHR(10),' ') from TABELA;

Bruno Duarte.

segunda-feira, 26 de maio de 2014

Migração de Dados do SQL Server para Oracle - Via SQL LOADER;

Galera, Boa tarde!

Hoje irei demonstrar a vocês um processo de Migração de dados via SQL Loader.
Em um passo a passo vocês verão como que é simples o procedimento, que por muitas vezes achamos ser algo complexo.

Bom, vamos ao trabalho!
Conectado no SQL Server, irei Migrar os dados da tabela TABLESQLSERVER

select * from BaseDeDados.Schema.Tabela
Exemplo:


Iremos utilizar o comando BCP para exportar os dados da tabela para um arquivo de texto. Para isso teremos que habilitar o xp_cmdshell.

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

Ok ! Pelo comando abaixo vamos exportar os dados da tabela para um arquivo com extensão TXT, delimitado por ; (Ponto e vírgula).

DECLARE @cmd VARCHAR(1000)
set @cmd = 'bcp "select action_id, action_name from treina2.dbo.TABLESQLSERVER" QUERYOUT "C:\TABLESQLSERVER.txt" -c -a65535 -t; -CACP -T'
Exec master..xp_cmdshell @cmd

OBS: No comando não pode conter quebra de linha.
Exemplo:


O arquivo foi exportado com sucesso, vide C:\ do servidor o qual foi enviado.




























Agora iremos criar o arquivo de controle para carregar os dado, que sempre terá a extensão .CTL.

load data                        
 infile 'TABLEORACLE.txt'
 into table TABLEORACLE
 Append
 fields terminated by ";"        
 TRAILING NULLCOLS
 (
action_id,
action_name
 )


Será necessário criar uma BAT para executar o SQL Loader - Extensão .BAT.

sqlldr userid=usuario/senha@instancia control=TABLESQLSERVER.ctl log=TABLESQLSERVER.log


Os 3 arquivos deverão ficar no mesmo diretório, desta forma:












Finalizado todos os passos acima, agora é só executar a .BAT.
OBS: Para executar a .BAT será necessário estar em algum local que tenha acesso a instância ORACLE.

Agora vamos verificar os dados importados na tabela do Oracle.
Select * from TABLEORACLE


Pronto ! Os dados foram Migrados do SQL Server para o Oracle.

Valeu !
Bruno Duarte.

Alter user X identified by VALUES [Oracle];

Bom dia a todos !

Gostaria de compartilhar com vocês uma dica, que me facilitou muito um dia desses.

Estava precisando fazer uma manutenção em um usuário X, e não lembrava a senha. Também as vezes nos encontramos em situações que não temos acesso por questões de politica da empresa.

Sendo assim, se conecte com o usuário SYSTEM ou SYSDBA e execute o comando:

SELECT password FROM dba_users WHERE username='HR'; 


Anote o retorno da consulta, pois esta é a senha criptografada do usuário em questão.
Agora iremos alterar a senha do usuário por qualquer uma que desejamos:

ALTER USER HR IDENTIFIED BY senhatemp;

Após a manutenção, temos que alterar a senha para aquela que anotamos e ela voltará a ser a mesma de antes.

ALTER USER HR IDENTIFIED BY VALUES '4C6D73C3E8B0F0DA';





Simples e fácil !
Como qualquer DBA é impossível termos de cabeça todas as senhas dos usuários do banco de dados.

Abraços,
Bruno Duarte.

sexta-feira, 23 de maio de 2014

Commit a cada bloco de Delete [Oracle];

Pessoal,

Para quem já passou por alguma necessidade de efetuar um DELETE em massa, com este Script podemos dar um commit a cada número de linhas deletadas.

No exemplo, a cada 3000 DELETES será feito um commit:

DECLARE
ln_DelSize                      NUMBER := 3000;
ln_DelCount                     NUMBER;

BEGIN
     LOOP
       DELETE FROM HR.EMPLOYEES
       WHERE rownum <= ln_DelSize;
 
       ln_DelCount := SQL%ROWCOUNT;
       dbms_output.put_line(ln_DelCount);

       EXIT WHEN ln_DelCount = 0;
       COMMIT;
     END LOOP;
END;

OBS: Caso for uma tabela com milhares de registros, aconselho utilizar um outro processo otimizado (muito mais rápido).
Post: http://dbaduarte.blogspot.com.br/2014/09/commit-cada-bloco-de-delete-otimizado.html

Valeu,
Bruno Duarte.