Pesquisar este blog

terça-feira, 21 de julho de 2009

Utilizando SQLPlus

1. Como conectar via console um banco ORACLE

sqlplus usuario/senha@banco

2. Como visualizar tabelas ou objetos do usuário ?

Você pode visualizar as tabelas e objetos do usuário
através das tabelas user_tables, user_objects e user_catalog.

Pode ser utilizado também os sinônimos TAB ou CAT.

Ex.: select tname
from user_tables;

select tname
from tab;


3. Visualizar a estrutura de 1 tabela

desc nome_tabela


4. Visualizar as constraints de uma tabela

select constraint_name, constraint_type
from user_constraints
where table_name = 'FUNC';

5. Tabelas úteis para consulta

user_indexes
user_sequences

quarta-feira, 15 de julho de 2009

Oracle / PostgreSQL SQL Tips


DICAS ORACLE / POSTGRESQL

1. Como renomear uma tabela ?

PostgreSQL

alter table clientes
rename to func;

ORACLE

rename clientes to func;

ou

alter table clientes
rename to func;


2. Como adicionar constraint após tabela criada ?

alter table tabela
add [constraint] restricao;

Ex: alter table clientes
add constraint check (limite >= 0);


3. Fazer a constraint ser verificada apenas ao comitar transação

ORACLE

alter table tabela
add [constraint] restricao deferrable;

Ex: alter table clientes
add check (limite >= 0) deferrable;


4. Como criar uma função que retorna 1 tabela ?

PostgreSQL

create or replace function lista_func(ACidade varchar(100)) returns setof func
as '
declare
registro record;
begin
for registro in select * from func
where cidade = ACidade
loop
return next registro;
end loop;
end;
'
language 'plpgsql';

USO:

select * from lista_func();


5. Excluir um campo de uma tabela

ORACLE

alter table clientes
drop column nome;


6. Adicionar uma constraint unique para um campo

PostgreSQL

alter table func
add constraint nome_uk unique(nome);

ORACLE

alter table func
add constraint nome_uk unique(nome);

ou

alter table func
modify nome unique;


7. Criar uma tabela com o conteúdo de uma tabela existente

create table func_temp as
select * from func;

create table func_temp as
(select * from func);


8. Adicionar campo com integridade referêncial

alter table func
add dept_id integer references dept;

alter table func
add dept_id integer references dept(id);


9. Realizar consultas com relações derivadas (select from select)

PostgreSQL


// Retorna a lista de departamentos em que a
// quantidade de funcionários é maior que 1

select nome, count
from(
select dept.nome,
(select count(1)
from func
where func.dept = dept.id)
from dept
) as dept(nome, count)
where count > 1;


ORACLE

select nome, count
from(
select dept.nome,
(select count(1)
from func
where func.dept = dept.id) as count
from dept
)
where count > 1

10. Qual a ordem de precedência na avaliação dos operadores ?

ESQUERDA->DIREITA

1 - operadores de comparação
2 - not
3 - and
4 - or


OBS.: Por clareza, sempre use parênteses.


11. Exemplos de funções single row para caracter


Largura da string:

select length('ORACLE') from dual;

Localizar string em outra string:

select instr('everton agilar', 'a') from dual;

Preencher uma string com zeros a esquerda

select lpad('7891237812', 13, '0') from dual;

Preencher uma string com zeros a direita

select rpad('7891237812', 13, '0') from dual;


12. Exemplos de funções single row para data/hora


Obter data atual

select sysdate from dual; -- somente ORACLE
select current_date from dual;
select current_timestamp from dual;

Obter hora atual
select current_time from dual; -- Somente PostgreSQL


Obter a data/hora em formato texto

select to_char(current_date-1, 'dd/mm/yyyy') from dual;
select cast(current_date as varchar(15)) from dual; -- ANSI

Obter parte da data/hora

select to_char(current_date, 'MONTH') from dual;
select to_char(current_date, 'dd') from dual;

-- ANSI
select extract(month from current_date) from dual;
select extract(day from current_date) from dual;


13. Converter string de dígitos para número

ORACLE
select to_number('190.83') from dual;

select cast('190.83' as numeric(12, 2)) from dual;

PostgreSQL

select cast('190.83' as numeric(12, 2)) from dual;


14. Formatar números

Formata valor monetário
select to_char(190.83, '99999D99') from dual;

Formata código de barra com zeros a esquerda
select to_char(7891231212, '0999999999999') from dual;


15. Trocar valor nulo por outro valor em uma expressão

ORACLE

select coalesce(telefone, celular) from cliente;

select coalesce(null, null, null, 2) from dual;

select nvl(null, 2) from dual;

select nvl2(null, 1, 2) from dual;

PostgreSQL

select coalesce(telefone, celular) from cliente;

select coalesce(null, null, null, 2) from dual;


16. Comentar uma tabela ou coluna de tabela

-- comentário para tabela
comment on table clientes is 'Tabela de clientes';


-- comentário para coluna de tabela
comment on column clientes.tipo is 'F=Fisica J=Juridica';


17. Visualizar a estrutura de uma tabela

ORACLE (sqlplus.exe)

desc nome_tabela

PostgreSQL (psql.exe)

\d nome_tabela


18. Excluir os dados da tabela de forma rápida

truncate table nome_tabela;

OBS.: Este comando não permite desfazer alterações (rollback) e
é executado muito mais rápido que um delete.


19. Utilizando SEQUENCES

ORACLE

-- criar a sequence
create sequence seq_func
start with 100
increment by 10
nocache;

-- gerar sequencia
select seq_func.nextval from dual;

-- obter valor atual
select seq_func.currval from dual;


PostgreSQL

-- criar a sequence
create sequence seq_func
start with 100
increment by 10
nocache;

-- gerar sequencia
select nextval('seq_func') from dual;

-- obter valor atual
select currval('seq_func') from dual;


OBS.: A diferença do PostgreSQL para o ORACLE é a
utilização de funções nextval() e currval().
O SQL ANSI é utilizada a expressão NEXT VALUE FOR.

20. Como reconstruir um índice ?

ORACLE

// refaz o índice na mesma tablespace
alter index dept_nome_uk rebuild;

// refaz o índice em outra tablespace.
alter index dept_nome_uk rebuild tablespace indx;

20. Como fazer para retornar parte de uma string ?

ORACLE
select substr('Oracle 10g', 1, 6) from dual;

retorna Oracle



domingo, 12 de julho de 2009

Linux Knowledge base


    1. Listar a tabela de interrupções de um computador
    2. Listar os dispositivos USB conectados ao computador
    3. Descompactar um arquivo compactado com gzip
    4. Alterar data e hora no Linux
    5. Desligar o computador ou agendar desligamento
    6. Reiniciar o computador ou agendar reboot
    7. Fazer Backup da MBR (Master Boot Record) antes de instalar o Linux




1. Listar a tabela de interrupções de um computador

cat /proc/interrupts


2. Listar os dispositivos USB conectados ao computador

lsusb


3. Descompactar um arquivo compactado com gzip

gzip -d arquivo.gz

gunzip arquivo.gz


4. Alterar data e hora no Linux

date 071312592009

Parâmetros: mes dia hora minuto ano



5. Desligar o computador ou agendar desligamento

shutdown -h now

shutdown -h 10

O primeiro comando desliga imediatamente, já o segundo comando passa como parâmetro os minutos que o Linux aguarda antes de iniciar o desligamento.


6. Reiniciar o computador ou agendar reboot

shutdown -r now

shutdown -r 10

O primeiro comando reinicia imediatamente, já o segundo comando passa como parâmetro os minutos que o Linux aguarda antes de reiniciar.


7. Fazer Backup da MBR (Master Boot Record) antes de instalar o Linux

Fazer um backup da MBR é útil quando queremos fazer uma instalação dual boot de Linux e Windows. Se algo der errado na instalação do Linux, podemos facilmente recuperar a MBR e ter acesso ao Windows novamente. É útil também para recuperar a MBR depois de instalado o Windows em um computador com Linux, pois o Windows substitui o bootstrap, programa necessário para carregar o sistema operacional, e que está gravado no MBR.

dd if=/dev/hda of=mbr.backup bs=512 count=1

Parâmetros:

if - dispositivo que queremos fazer backup (no exemplo, primeiro HD do computador)

of - arquivo que será gravado o MBR.

bs - quantos bytes será lido

count - quantas vezes será lido

Para recuperar a MBR em caso de perda, utiliza-se o seguinte comando:

dd if=mbr-backup of=/dev/hda bs=512 count=1

Para recuperar somente o bootstrap sem alterar a tabela de partição utiliza-se o seguinte comando:

dd if=mbr-backup of=/dev/hda bs=446 count=1




quarta-feira, 8 de julho de 2009

Dicas ao Fazer Casos de Uso

O modelo de casos de uso é uma representação das funcionalidades externamente observáveis do sistema e dos elementos externos (atores) ao sistema que interagem com ele. Este modelo é parte integrante da especificação de requisitos. Deve ser utilizado para moldar os requisitos funcionais do sistema.

Segue algumas dicas ao fazer casos de uso:


Quando usar: Quando precisar mostrar os objetivos dos atores. Não utilize para representar funcionalidades do sistema, mas para representar os objetivos dos atores.


Independência de Interface Gráfica: Escreva os casos sem os detalhes da interface gráfica. Isto é chamado de caso de uso essencial.


O que o caso de uso representa: Um caso de uso representa as interações entre os atores e o sistema, sem considerar o comportamento interno do sistema.


Casos de Usos Essenciais e Caso de Uso Reais: Casos de uso essenciais não fazem menção a técnologia utilizada enquanto que caso de uso reais fazem.

Como escolher o tipo de relacionamento: Depende da prática. Use inclusão quando o mesmo caso de uso se repete em mais de um caso de uso; Use extensão, quando um comportamento opcional tiver de ser descrito; Use herança para reutilização.


Como identificar casos de uso: Casos de usos representam os processos da empresa que estão sendo automatizados pelo sistema de software. Faça as seguintes perguntas para descobrir os casos de uso:

  1. Quais são as necessidades e objetivos de cada ator
    em relação ao sistema ?

  2. Que informações o sistema deve exibir ?

  3. O sistema deve realizar alguma ação que deva ocorrer
    regularmente no tempo ?

  4. Para cada requisito funcional, existe um ou mais caso(s) de uso
    para atendê-lo ?



Diferença entre casos de uso primário e secundário: Caso de uso primário são os que identificam os objetivos dos atores. Os casos de uso secundário são os que não trazem nenhum objetivo aos atores mas que são necessário para que o sistema funcione adequadamente.

Por onde começar: Considere os casos de uso mais arriscados primeiro!

Os benefícios: Casos de uso devem trazer benefícios para equipe. Se não trazer, descarte-o


domingo, 5 de julho de 2009

Trabalhando com Pacotes RPM

Pacotes RPM é um arquivo que contém informações necessárias para instalação de programas de computador para Linux baseadas na distribuição Hed-Hat. Geralmente é composto por executáveis, documentos e scripts, ou seja, tudo que for necesário para instalação de uma determinada aplicação.

Pacotes RPM oferecem muita flexibilidade na instalação, atualização, consulta e remoção de softwares, pois elimina a necessidade de configuração e compilação, tornando a instalação de programas mais fácil e organizada em ambientes Linux.


Segue abaixo uma lista de tarefas comuns que são realizadas por um operador Linux:

  1. Instalar novos programas

  2. rpm -i nome_do_pacote.rpm

  3. Atualizar um programa para versão mais nova

  4. rpm -U nome_do_pacote.rpm

  5. Remover um programa já instalado

  6. rpm -e nome_do_pacote

    OBS: Não coloque a extensão "rpm"!

  7. Para ver a lista de programas (pacotes) instalados em seu sistema

  8. rpm -qa

  9. Para ver se algum programa está instalado em seu sistema

  10. rpm -qa | grep nome_do_pacote

    OBS: Não coloque a extensão "rpm"!

    EXEMPLO: Ver se o openoffice está instalado: rpm -qa | grep openoffice

  11. Para ver quais arquvos um pacote instalou no meu sistema e em que local estão

  12. rpm -ql nome_do_pacote

    EXEMPLO:

    rpm -ql openoffice.org-writer-3.1.0-11.3.fc11.i586

    rpm -ql openoffice.org-writer (perceba que aqui não estou informando o nome completo do pacote)

  13. Para ver quais arquivos um pacote que ainda não está instalado possui

  14. rpm -qlp nome_do_pacote

    OBS.: Note o parâmetro "p"

  15. Obter informações de um pacote instalado

  16. rpm -qi nome_do_pacote

    EXEMPLO: rpm -qi postgresql-server

  17. Obter informações de um pacote não instalado

  18. rpm -qip nome_do_pacote.rpm

    EXEMPLO: rpm -qip pidgin-2.5.7-1.fc11.i586.rpm

    OBS.: Note o parâmetro "p"

  19. Reinstalar ou atualizar um programa existente

  20. rpm -U nome_do_pacote.rpm

    rpm -U --replacedpkgs nome_do_pacote.rpm

  21. Instalar um pacote sem verificação de dependências

  22. rpm -i --nodeps nome_do_pacote.rpm

    OBS.: Esta opção não é recomendada!

  23. Simular instalação de um pacote para ver se tudo vai ocorrer sem problemas

  24. rpm -i --test nome_do_pacote.rpm

  25. Reconstruir a base de dados RPM

  26. rpm --rebuilddb ou

    rpm --initdb

  27. Obter mais informações sobre o comando rpm

  28. man rpm