31 de ago. de 2007

SQL - Testes

Vou postar hoje um teste de SQL simples, perguntinhas básicas, mas que se não tomado o certo cuidado pode prejudicar na hora do teste.

Questões

1- Quais destas instruções falharão porque o nome da tabela não é valido? (Marque duas respostas)
A - CREATE TABLE "SELECT"(COL1 DATE);
B - CREATE TABLE "LOWER CASE"(COL1 DATE);
C - CREATE TABLE NUMBER1(COL1 DATE);
D - CREATE TABLE 1NUMBER(COL1 DATE);
E - CREATE TABLE UPDATE(COL1 DATE);


2 - Vários tipos de objetos compartilham do mesmo namespace e, portanto, não podem ter o mesmo nome do mesmo esquema. Qual dos seguintes tipos de objetos não se encontra, no mesmo tablespace dos outros?
A - INDICE
B - PROCEDIMENTO PL/SQL
C - SINONIMO
D - TABELA
E - VISAO


3 - Qual dos seguintes não é suportado pelo Oracle como um tipo de dados inteiro?
A - CHAR
B - FLOAT
C - INTEGER
D - STRING


4 - Você precisa registrar valores de data e hora com uma precisão de um segundo. Qual seria um tipo de dados adequado para armazenar essas informações em uma unica coluna?
A - DATE
B - TIMESTAMP
C - DATE OU TIMESTAMP
D - Você precisa desenvolver seu tipo de dados personalizado, porque os internos armazenam a data ou a hora


5 - Quais tipos de restrições requerem um indice? (Marque todas que se aplicarem)
A - CHECK
B - NOT NULL
C - PRIMARY KEY
D - UNIQUE


6 - Uma determinada transação consiste de duas instruções. A primeira tem sucesso, mas a segunda (que atualiza diversas linhas) falha no meio do caminho devido a uma violação de restrição. O que acontecerá? (marque a resposta correta)
A - A transação inteira será descartada
B - A segunda instrução será descartada completamente, e a primeira escrita em disco
C - A segunda instrução será descartada completamente, e a primeira permanecerá sem ser e escrita em disco
D - Somente a atualização que causou a violação será descartada, tudo o mais será escrito em disco
E - Somente a atualização que causou a violação será descartada, tudo o mais será escrito em disco

7 - Qual das seguintes está correta sobre indices? (Marque a resposta correta)
A - Um índice pode se basear em multiplas colunas de uma tabela, mas as colunas devem ser do mesmo tipo de dados
B - Um índice pode se basear em múltiplas colunas de uma tabela, mas as colunas devem ser adjacentes e especificadas na ordem em que foram definidas na tabela
C - Um indice não pode ter o mesmo nome de uma tabela, a não ser que o indice e a tabela estejam em esquemas separados
D - Nenhuma das alternativas anteriores está correta.


8 - Para quais propositos você poderia optar em criar visões? (Marque duas respostas)
A - Para melhorar a segurança
B - Para apresentar dados de uma forma mais simples
C - Para melhorar o desempenho
D - Para salvar conjuntos de resultados de consultas frequentemente executadas

9 - Você insere uma linha usando uma sequencia INV_NOS e depois descarta a inserçãom da seguinte forma:
ocp10g> insert into invoces values(inv_nos.nextval,1,sysdate,150);
1 row created
ocp10g> rollback;
Rollback complete;

Antes dessa transação a sequencia estava no valor 10. Qual será o próximo valor emitido por ela?

A - 10
B - 11
C - 12
D - Depende de como a sequencia foi criada



=================================
=================================
=================================


RESPOSTAS
1 - D e E
2 - A
3 - D
4 - C
5 - C e D
6 - C
7 - D
8 - A e B
9 - D

28 de ago. de 2007

Watcher - Procedure para envio de Emails

Olá a todos!!!
Hoje vou postar uma procedure que envia email's apartir do Oracle. Sua configuração é muito simples.

Para fazer a configuração você ira precisar de um servidor de SMTP caso seu servidor seja Microsoft, caso contrario é só apontar o servidor como localhost. O segundo passo é configurar o email que você vai mandar as mensagens, você pode usar qualquer email valido por exemplo silviosantos@sbt.com.br ou tomkite@oracle.com ou até mesmo luciano@oracle.com.br rs...

Para isso vamos utilizar um pacote de utilitários disponivel no Oracle chamado UTL_SMTP (Utilitários - Implementação do Simple Mail Transfer Protocol)

Segue abaixo o codigo fonte da procedure:

CREATE OR REPLACE PROCEDURE WATCHER(
v_ToAddr IN VARCHAR2,
v_Assunto IN VARCHAR2,
v_corpo IN VARCHAR2
) AS
v_FromAddr VARCHAR2(25) :=
'luciano@oracle.com.br'; --Email que voce quer usar de envio v_Message VARCHAR2(200);
v_MailHost VARCHAR2(50) := '10.42.2.17'; --Ip do servidor de SMTP
v_MailConnection UTL_SMTP.Connection;


BEGIN
/* Autor: Luciano Alvarenga Maciel Pires
Descrição: Envio de emails apartir de uma procedure */

v_Message := 'From: ' v_FromAddr CHR(10)
'Subject: ' v_Assunto CHR(10)
v_corpo;
-- Abrindo conexão com o servidor de email

--Aqui você tem a possibilidade de trocar a porta do servidor de SMTP
--em servidores UNIX coloque LOCALHOST
v_MailConnection := UTL_SMTP.OPEN_CONNECTION(v_MailHost,25);
-- Usando SMTP para enviar o email.

UTL_SMTP.HELO(v_MailConnection, v_MailHost);
UTL_SMTP.MAIL(v_MailConnection, v_FromAddr);
UTL_SMTP.RCPT(v_MailConnection, v_ToAddr);
UTL_SMTP.DATA(v_MailConnection, v_Message);
-- Fechar a conexão

UTL_SMTP.QUIT(v_MailConnection);
DBMS_OUTPUT.PUT_LINE('Email enviado com sucesso');
END WATCHER;

Para chamar a procedure basta executar o seguinte comando:

DECLARE
V_TOADDR VARCHAR2(200);
V_ASSUNTO VARCHAR2(200);
V_CORPO VARCHAR2(200);
BEGIN
WATCHER( V_TOADDR => 'remetente@oracle.com.br', V_ASSUNTO => 'Assunto do email', V_CORPO => 'Olá como vai??? Estou enviando esse email através do Oracle!' );
END;

Qualquer duvida ou sugestão me contatem por email.

24 de ago. de 2007

FlashBack Recovery

Para aquelas cagadinhas diarias, segue abaixo um comando bem interessante, utilizanda ontem por um amigo e hoje por mim, devido um membro da minha equipe ter efetuado um Update incorreto...
Segue abaixo o comando para ser guardado com grande carinho rs...

SELECT versions_xid, versions_startscn, versions_endscn, versions_operation, rowid, owner, object_name, object_typeFROM tVERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;

SELECT DISTINCT TBLOGACOESUSUARIAS.* FROM TBLOGACOESUSUARIASAS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '20' MINUTE

Antes de inicializar o comando tenha certeza que eles estará atualizando os registros atingidos.

23 de ago. de 2007

SCRIPT EXP (Export DB)

Nossa fiquei super contente com a ultima aula de Oracle 10g, o professor Marcos a cada dia se supera mais...

Vou disponibilizar aqui um script que eu montei para fazer o EXP do banco de dados da empresa a qual eu trabalho. Tem algumas coisas que tenho certeza que podem ser melhoradas, aceito sugestões, amanhã estarei fazendo uma procedure para importação de arquivos para uma tabela, com recursos de envio de email. Disponibilizarei assim que finalizar...


CLS
@ECHO OFF
ECHO. *********************************
ECHO. ** Backup - DACSISTEMAS
ECHO. ** Luciano Alvarenga M Pires
ECHO. ** AGENDAMENTO: SABADO
ECHO. ** Backup do BD Full aos sabados
ECHO. *********************************
ECHO.
SET FILE_DATE=%DATE%
SET FILE_DATE=%FILE_DATE:SEG=%
SET FILE_DATE=%FILE_DATE:TER=%
SET FILE_DATE=%FILE_DATE:QUA=%
SET FILE_DATE=%FILE_DATE:QUI=%
SET FILE_DATE=%FILE_DATE:SEX=%
SET FILE_DATE=%FILE_DATE:SAB=%
SET FILE_DATE=%FILE_DATE:DOM=%
SET FILE_DATE=%FILE_DATE:/=%
SET FILE_DATE=%FILE_DATE: =%
SET DIA=%FILE_DATE:~0,2%
SET MES=%FILE_DATE:~2,2%
SET ANO=%FILE_DATE:~4,4%
SET FILE_DATE=%ANO%%MES%%DIA%
ECHO %FILE_DATE%
DEL D:\BKP_DACSISTEMAS\DACSISTEMAS_SAB%FILE_DATE%.DMP
EXP system/SENHA@DATABASE FULL=Y BUFFER=50000 FILE=D:\BKP_DACSISTEMAS\DACSISTEMAS_SAB.DMP FEEDBACK=1000


Nessa procedure o que importa mesmo é o ultimo comando que monta o codigo de todo o banco de dados em um arquivo de dump, segundo o professor é de fundamental importancia ter esses arquivos. Não é um dos melhores tipos de backups disponiveis no Oracle, mas é um recurso muito interessante. Caso alguem venha ter duvida sobre os comandos acima me manda um email que eu explico melhor lucianoalvarenga@gmail.com ou luciano.a.m.pires@vivo.com.br.

[ ]'s

20 de ago. de 2007

Boa tarde...

Hoje não vou estar postando muita coisa mas vou deixar apenas 3 materiais que li esse final de semana e tenho em mente ser um dos principais fatores de um sucesso profissional, principalmente no ramo da informática onde podemos conseguir dar saltos muito grandes com uma boa indicação e bastante conhecimento. Esses materiais são sobre "Networking", que é rede de profissionais para compartilharem informações, adquirir novos conhecimentos e até mesmo conseguir aquele famoso QI (quem indica)...

Segue abaixo 3 sites que abordam o assunto muito bem:

Explica sobre o que é, para que serve e como cultivar o networking
http://www.catho.com.br/dicas/lista2.php?fonte=0&qual=9&idi=339&titt=&titulo=TmV0d29ya2luZy4gVm9j6iBzYWJlIGZhemVyIG8gc2V1Pw%3D%3D

16 dicas importantes sobre networking (muito bom)
http://www.acessa.com/negocios/dicas.apl/

Aborda com uma explicação mais tecnica e alguns conselhos.
http://artigos.com/index.php?option=com_mtree&task=viewlink&link_id=1758&Itemid=61
[ ]'s

16 de ago. de 2007

Bom dia...
Vou iniciar meu blog postando algumas questões interessantes:
As respostas estão localizadas no final do post...


(1) - O arquivo OraTab contem as seguintes informações (Marque duas respostas corretas)
A- Uma lista de todos os produtos Oracle instalados no computador
B- Uma lista de todas as instancias de banco de dados e diretorios iniciais Oracle instalado nesse computador
C- Informações sobre versões especificas de cada produto Oracle e cada banco de dados nesse computador
D- Informações de inicialização para instancias de banco de dados nesse computador
E- Informações que ajudam o Enterprise Manager a gerencias banco de dados Oracle no computador

(2) - Quais das seguintes váriaveis de ambiente devem ser configuradas em computadores UNIX antes de começar a instalar o software da Oracle? (Marque todas as corretas)
A- ORACLE_HOME
B- ORACLE_BASE
C- ORACLE_SID
D- LD_LIBRARY_PATH
E- Todas as anteriores
F- Nenhum das anteriores

(3) - Ao instalar o Oracle em sistemas baseados em UNIX antes de começar a instalar o software do Oracle? (Marque todas as corretas)
A- Usuário root
B- Usuário Oracle
C- Grupo Oracle
D- Usuário oinstall
E- Grupo oinstall
F- Grupo DBA

(4) - Quais dos seguintes caminhos são consistentes com a Arquitetura Ótima Flexivel? (Marque todas as corretas.)
A - /OPT/ORACLE/OCSDB
B - /OPT/ORACLE/PRODUCT/10.1.0/OCSDB
C - /OPT/OACLE/ADMIN/OCSDB/BDUMP
D - /ORACLE/MYDB
E - /OPT/ORACLE/ADMIN/BDUMP

[Referencia bibliográfica]
[Texto extraido do livro: Oracle Database 10g ISBN: 857608122-9]
Respostas:
1 - B , D
2 - F
3 - B , E , F
4 - B , C

Bem vindo!!


Antes de mais nada gostaria de dizer, muito obrigado por estar em meu blog pessoal. Estarei postando aqui diversas informações sobre Oracle e banco de dados de maneira geral.


Atualmente trabalho como DBA para a Vivo Celulares, buscando maiores especializações no banco de dados Oracle. Atualmente estou fazendo um curso de Oracle 10g na faculdade IBTA. Pretendo até dezembro estar com as 2 certificações em mãos. Amanhã estarei colocando diversos testes extraidos do livro a qual estou lendo. E que vou estar constantemente citando-o como referencia principal para meus estudos.


Finalizo deixando um abraço a todos...
e até a proxima...