quinta-feira, 29 de maio de 2014

Conectar no SQL Server, Sybase e MySQL pelo SQL Developer;

...Instalar o SQL Server, fazer a instalação do My SQL, baixar e instalar o Sybase ... Ah também o DB2?
Ufa... Cansei !

Hoje vou demonstrar a vocês, que apenas pelo SQL Developer é possível conectarmos nos Bancos de Dados de outras Fabricantes.

Para começarmos, será necessário baixarmos o Driver JDBC -  É através dele que efetuamos a ponte para conexão.
Link para os downloads: http://www.oracle.com/technetwork/database/migration/jdbc-migration-1923524.html

OBS: Irei demonstrar apenas com os SGBD's que atualmente utilizo.

Após baixar, será necessário extraí-los:














Agora vamos adicionar as conexões no SQL Developer.
No menu Tools>Preferences... irá abrir a janela de Preferências, no painel a esquerda expandir a opção Database>Third Party JDBC Drivers e clicar em Add Entry... (No meu caso eu já havia adicionado).

















Para ambos, adicionar o arquivo com extensão *.JAR - Um de cada vez.
























Pronto! Agora ao adicionar uma nova conexão, você verá 3 novas abas com os SGBD's.
Para testar, efetuei uma conexão em um servidor SQL Server.






















Select @@version;







Valeu !
Bruno Duarte.

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.

Select concatenado com UPDATE [Oracle];

Agora ta valendo... !

Aqui vai uma dica bem legal..
Hoje mesmo estava desenvolvendo um Rollback para um projeto, e tinha que voltar muitos registros com o comando UPDATE. Iria gastar muito tempo para a tarefa, eis então uma solução:

Obs: Para preservar as informações da empresa, demonstrarei o comando no schema HR.

Select
'UPDATE HR.EMPLOYEES
SET EMAIL = '''||EMAIL||'''
where EMPLOYEE_ID= '''||EMPLOYEE_ID||''' 
and JOB_ID='''||JOB_ID||''';' as Select_UPDATE
FROM HR.EMPLOYEES where DEPARTMENT_ID = '50';

O retorno do resultado são os UPDATES já prontos para serem executados.

Valeu!
Bruno Duarte.



Primeiro Post do Blog;

Olá Pessoal !

Finalmente estou entrando no mundo dos Blogs, e para ficar melhor este será exclusivamente sobre Banco de Dados.

Irei iniciar uma série de publicações, compartilhando dicas para agregar ainda mais informações na Web sobre os SGBD's.

Espero que todos aproveitem e estarei aberto a sugestões !
Caso tenham interesse, sintam-se à vontade para me contactar:

E-Mail: bru_cduarte@hotmail.com
LinkedIn: br.linkedin.com/in/brucduarte/

Obrigado!
Bruno Duarte.