EVENTO:  BandTec Career Week

Nos dias 22,23 e 24 de abril (últimas quarta, quinta e sexta), ocorreu na faculdade BandTec o Career Week, um seminário voltado para os temas carreira, profissão e formação em TI.

Foi um evento gratuito, e aberto para a comunidade, com palestras multidisciplinares, debates e fóruns. Resumindo, foram 3 dias para reforçar o networking, trocar experiências e conhecer uma nova proposta de ensino superior em TI.

Eu tive a honra de participar da mesa de debates sobre a carreira de banco de dados, além de prestigiar o evento de abertura, três palestras, e o evento de encerramento. 

Particularmente, um item que me agradou muito foi a oportunidade de rever meus professores da graduação, Sandra Puga, Milton Goya, Edson França e Daniel Gatti, além de conhecer as professoras Lúcia e Vera.

Abertura: Carreira, Vocação, Profissão e Felicidade

O início dos seminários foi marcado pelo debate “Carreira, Vocação, Profissão e Felicidade”, com a presença do consultor Luis Carlos Mozzato, e do gerente de RH Maurício Pimentel, onde cada um explanou sobre o assunto por 20 minutos,  abrindo depois para perguntas feitas pela platéia.

IMG_20150422_174455736

O “Pé Roxo” Luis, um paranaense de Londrina me chamou a atenção pelo brilhos nos olhos durante sua explanação. Ele contou um pouco da sua carreira, que passou por experiências em sala de aula como professor de biologia, à aventuras na Europa, até encontrar sua verdadeira vocação: o coaching. 

Segundo ele, não é o mercado, os pais, modismos ou salário, o principal critério para a escolha de uma carreira,  mas o auto conhecimento. Conhecendo-se, o profissional alcançará tudo o que deseja. 

E, qual a diferença entre o sucesso e a felicidade? Luis diz que sucesso é alcançar o que deseja, e felicidade é querer o que alcançou

Pensando nisso, você é uma pessoa de sucesso? Você é feliz? Qual sua missão pessoal? Qual seu projeto de vida? 

Já o “filho da PUC” Luis Neto, é gerente de RH de uma empresa de tecnologia. É uma pessoa alegre e chamou a atenção pela descontração da palestra, talvez devido sua formação em Artes Cênicas – que cursou para aprender a se expressar. 

Ele disse que é muito legal trabalhar com pessoas porque não existem pessoas iguais. Mas, assim como citado pelo Luis, Neto disse que é importantíssimo conhecer a si mesmo! Alias, segundo ele, o auto conhecimento além de ajudar no encontro da vocação, é a chave para derrotar o mal do século: a depressão. 

Conhecer a si mesmo é a chave para tornar-se uma pessoa melhor, e aí, a vocação aparecerá!  E, se a vocação aparecer, devemos investir tudo nela. 

Líder Introvertido e Líder Extrovertido 

Logo após o evento de abertura, participei da palestra sobre o tema “introversão versus extroversão”, suas diferenças e similaridades dentro do ambiente corporativo, e sobre as nuances da liderança sobre tais aspectos. A palestra foi conduzida pela extrovertida consultora e psicóloga Lucia Navarro, a qual tem grande experiência com profissionais da TI – adotando, inclusive, exemplos ligados à informática na sua palestra. 

Gostei muito desta palestra, especialmente pelas dicas de como tratar os profissionais de cada tipo. Inclusive, cheguei à conclusão que o tipo de líder que eu mais gosto de trabalhar é o tipo introvertido, especialmente pelo grande poder de observação, e pela objetividade. Alias, você sabia que introversão e timidez são coisas completamente diferentes?

Bom… baseando-me nesta palestra, e em vários testes que eu já fiz, sou ambivertida. Alias, este é um assunto que renderia um bom post. 

Arquétipos do feminismo na escolha profissional, na carreira e na vida pessoal

No segundo dia de evento, a primeira palestra que participei foi sobre arquétipos do feminismo, com a psicóloga Soraya Bido. E, ao contrário do que eu esperava, não foi uma palestra sobre o feminismo, mas sobre os arquétipo – esteriótipos, da mulher, representados por Deusas Gregas, e comparados com filmes / séries de grande repercussão, como “A cor púrpura”, “O diabo veste prada” e “ House of cards”. 

IMG_20150423_203417925

Durante a explicação dos arquétipos, e a comparação com a realidade apresentada nos filmes, Soraia nos levou à pensar como somos no dia a dia, refletindo sobre qual o arquétipo mas se parece com nossa personalidade. 

O legal foi, ao final de uma palestra com participação masculina reduzida a 3 homens, um deles dizer que identificou-se mais com o arquétipo de Athenas 😀 

 

Imersion Night: Uma experiência com startups no Vale do Silício

Fazendo jus à uma moderna faculdade de tecnologia, nada melhor que uma videoconferência, em Inglês, com uma profissional do Vale do Silício: Claire Gunter. 

IMG_20150423_213233622

Além de ser muito simpática e extrovertida, Claire deu dicas sobre como se dar bem em empresas de TI, seja na Califórnia ou em outro lugar do mundo; ela contou um pouco da sua experiência e da empresa de software onde trabalha, a ZenDesk. 

Foi muito legal poder testar o listening, além de ver uma gringa quebrando vários esteriótipos: simpática, poliglota (falante inclusive de português), mulher de TI, e uma mãe super realizada! 

Carreira de Banco de Dados

No último dia, tive o prazer de fazer parte da mesa de debates sobre a Carreira de banco de dados, juntamente com outros 3 grandes profissionais: Samara Freitas, Murilo Ferrari, Samir Jahchan, além do mediador, o grande mestre Edson França (um dos meus grandes professores na época da graduação).

11169832_10206928986729449_2295327946678969257_n

Juro que quando os colegas mais experientes começaram a contar sobre sua experiência profissional eu quase saí correndo! um deles tinha começado na área quando mamãe e papai ainda estavam pensando em me conceber (rs). 

Mas, com o passar do tempo e com a qualidade das participações dos alunos e convidados, vivenciei uma excelente experiência de troca de conhecimento. Um dos pontos mais comentados foi sobre como iniciar na carreira de TI, sobre o qual chegamos na conclusão que características pessoais como interesse e curiosidade são mais importantes do que o conhecimento técnico e a experiência, no começo da carreira. 

Também conversamos muito sobre empresas que preferem contratar candidatos menos experientes, para moldá-los conforme sua necessidade, além de economizar dinheiro com isso; outro tópico citado foi a importância do network, que se inicia na própria faculdade, com os mestres e colegas, passando pelas redes sociais e pelas tradicionais listas de discussão na Internet.  

Na minha opinião, após observar comentários, questões dirigidas aos palestrantes durante estes 3 dias, além de alguns bate papos com alguns alunos e professores, os alunos da BandTec estão um passo à frente da concorrência: são pessoas extremamente participativas, curiosas e antenadas com o mercado de trabalho. Além disso, a faculdade tem um projeto pedagógico inovador, suportando uma carreira fantástica à estes futuros DBAs, Analistas de Big Data, Consutores em BI, Arquitetos de dados, professores de TI … 

Evento de encerramento: Oficina de danças circulares

E, para encerrar, um trabalho em conjunto feito com a psicóloga e terapeuta Angélica Rente, abordando danças de roda tradicionais de várias partes do mundo. 

Juro que quando tive noção que se tratava de dança de roda, eu quase saí correndo! Poxa, qual nerd costuma dançar? No máximo, alguma coisa em frente ao X-Box e acabou, certo? Este é o meu caso: sou o tipo de pessoa cujo o significado de mexer o corpo em público restringe-se ao verbo andar; qualquer coisa além disso me dá calafrios. 

E aí que foi engraçado! Não era só eu a única nerd na sala, mas praticamente todos alí! No início, várias bochechas rosadas, cabeças baixas e sorrisos amarelos… mas durou apenas os 15 primeiros minutos! Logo vários estavam de mãos dadas fazendo graça, contando piada da situação, ou simplesmente sorrindo! 

E, sim, creio que a Angélica conseguiu realizar o objetivo: tratou de unir um bando de gente isolada em um grupo único, vivenciando o mesmo sentimento de alegria, celebrando juntos o grande evento que foi o Career Week. 

PS: Tenho vídeos das danças circulares… mas ainda estou refletindo se devo ou não postar no You Tube 😀 

Enfim… 

Enfim, estou muito feliz por ter tido a oportunidade de participar deste seminário, e espero que tenhamos outros aí pela frente! 

Acho que uma frase que resume o evento é: “Quem olha para fora sonha, quem olha para dentro desperta.”, de Carl Gustav Jung. 

Muito obrigada Prof. Edson França, e toda equipe BandTec, pela oportunidade!

Abçs,

Lílian

MAIS FOTINHAS

11049611_1597178157199968_5397728958719822571_n

Photo on 4-23-15 at 8.33 PM

Publicado em Carreira | Marcado com , , , | 6 Comentários

Garantindo a Recuperabilidade do seu Banco

Como disse uma certa vez o Portilho, em um curso na Nerv, backup é o que garante seu salário.

Pensando nisso, achei legal fazer um post sobre como garantir seu emprego, quero dizer, como garantir a recuperabilidade do seu banco, através da mudança de configurações do banco de dados, de verificações do banco e do backup, bem como de testes de restore / recover.

 A -CONFIGURAÇÕES BÁSICAS DO BANCO

Abaixo, duas características básicas de um banco que devem ser configuradas:

 1 – Archivelog

2 – Force logging

Com estas duas características configuradas no seu banco de dados, garanta que haja backups periódicos do seu banco. Por exemplo, é usual que – dependendo do volume de transações do banco, e de seu tamanho, os backups de archive sejam feitos várias vezes ao dia, e diariamente, backup full e / ou backups incrementais.

B – VERIFICAÇÕES PERIÓDICAS

1 – Validate do banco de dados

2 – Validate dos backups

3 – Testes de restore periódicos

E, se o banco for pequeno:

4 – Dumps periódicos dos principais schemas.

*** EXPLICANDO EM DETALHES ***

1- Banco em Archivelog

O banco em modo archive força que todos os redo logs tenham uma cópia off line de seu conteúdo antes de serem sobrescritos. Isto garante a recuperabilidade do banco, além de permitir que backups full sejam feitos “a quente”, ou seja, com o banco ativo.

O modo archive log pode abalar um pouco o desempenho do sistema, mas esta perda de performance é mínima perto da possibilidade de você perder seu emprego, quero dizer, de você perder seus dados em caso de problemas.

Como colocar o banco em archivelog:

 create pfile from spfile;
 shutdown immediate;
 startup mount
 alter database archivelog;
 alter database open;

2 – Banco em Force Logging

Uma maneira de acelerar certas operações do banco de dados é usar a opção nologging, ou seja, gravar as alterações no banco sem gerar gravações nos redos e, consequentemente, nos archives. Porém, fazendo isto a transação se torna irrecuperável.

Para evitar o uso indiscrinado desta opção, especialmente em bancos OLTP, recomendo fortemente que seja alterada a opção force logging para “YES” no seu banco de dados. Assim, mesmo que um desenvolvedor mais espertinho acrescente esta cláusula em algum script, ela será ignorada.

Como colocar o banco em force logging:

ALTER DATABASE FORCE LOGGING;

(Interessante: banco em force logging é pre-requisito para Oracle Streams e Data Guard. )

3 – Validação do banco de dados (backup validate)

A fim de detectar blocos corrompidos no banco de dados, ou perda de arquivos, é importante que o DBA faça periodicamente a validação do banco de dados – especialmente em casos de bancos grandes.

Esta é uma ação preventiva, já que só é possível saber que um bloco está corrompido durante sua leitura ou escrita.

Você pode vasculhar o banco de dados a procura de blocos corrompidos fisicamente, ou com corrupção lógica.

Como verificar, via RMAN, se há blocos corrompidos fisicamente no banco de dados:

RMAN> BACKUP VALIDATE DATABASE;

Como verificar, via RMAN, se há blocos corrupção física e lógica no banco de dados:

RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;

Como validar os archivelogs?

RMAN> backup validate archivelog all;

4 – Validação do backup (restore validate)

Outra atividade importante de ser feita, e simples, é a validação do backup. É uma operação feita pelo RMAN onde é verificada a existência do arquivo de backup, se está legível e não tem corrupções.

É a atividade mais próxima de um restore “de verdade”, com a vantagem de não necessitar de espaço em disco para tal.

Como fazer o restore validate de um banco de dados, via RMAN:

RMAN> restore database validate;

Como fazer o restore validate dos archives, via RMAN:

RMAN> restore archivelog all validate;

5 – Testes de restore periódicos

Testar o procedimento de restore é importante para, além de você “treinar” o procedimento (ficando mais confiante para encarar um eventual desastre), testar efetivamente se fitas, backupsets, link de rede, etc, também estão dentro do esperado.

A minha dica é, caso não exista um ambiente de testes de restore, utilize bancos de desenvolvimento como área de teste! Por exemplo, se os desenvolvedores solicitarem a atualização desse ambiente, ao invés de fazer um novo backup da produção, utilize o backup diário já feito para este fim.

O importante é, mesmo que a frequência não seja tão alta, faça um teste real de restore do ambiente.

Como fazer restore/recover via RMAN (Exemplo bem simples)?

RMAN > run 
{
 allocate channel dev1 device type DISK;
 RESTORE DATABASE;
 RECOVER DATABASE;
 RELEASE CHANNEL ch1;
 }

6 – Dumps periódicos dos princiais schemas

Podemos dizer que dump, em banco de dados Oracle, é um tipo de backup lógico do banco, contendo os dados e os metadados de objetos lógicos do banco.

Quando o banco é pequeno, é interessante fazermos dumps periódicos de determinados schemas, a fim de facilitar eventuais restores de apenas objetos específicos.

Como fazer um dump de um schema

a)   Crie um diretório dentro do Oracle, apontando para um diretório físico criado dentro do servidor:

 create directory bkp as '/home/oracle/bkp';

b)   Através do utilitário Data Pump Export, no shell, crie o dump do schema dentro do diretório criado previamente:

expdp \'/ as sysdba \' schemas=hr dumpfile=hr_bkp.dmp directory=bkp;

Bem, com isso, encerro por aqui o este post!

Abçs!!!

Publicado em Intermediário, ORACLE, Scripts | Deixe um comentário

Verificando o alert.log via SQL*Plus

O alert.log é o “jornal do DBA”, como diria o professor Milton Goya.  E, é obrigatório ao DBA estar sempre atento às últimas notícias do banco.

É possível verificar o alert a partir do Sistema Operacional, utilizando comandos como o more, tail ou mesmo o vi; a partir da ferramenta ADRCI, ou através de consultas SQL, via SQL*Plus ou similares.

Abaixo, segue alguns scripts para verificar o alert.log a partir do SQL*Plus:

Script básico: Verificar todo o alert.log (com o usuário SYS):

 select * x$dbgalertext;

Para verificar todas as entradas do último dia:

 select to_char (ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH24:MI') data,
 message_text
 from x$dbgalertext
 where ORIGINATING_TIMESTAMP > (SYSDATE -1);

Para verificar as 100 últimas linhas:

 select to_char (ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH24:MI') data,
 message_text
 from x$dbgalertext
 where indx > (select count(*)-100 from v$alert_log );

Para retornar apenas erros ORA- ocorridos no último dia:

 select to_char (ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH24:MI') data, 
 message_text
 from x$dbgalertext
 where ORIGINATING_TIMESTAMP > (SYSDATE -1)
 and message_text like '%ORA-%'

OBS: Para visualizar os dados da x$dbgalertext com outro usuário, crie uma view a partir dela, e dê privilégio de consulta ao usuário:

 CREATE VIEW v$alert_log AS SELECT * FROM x$dbgalertext;
 CREATE PUBLIC SYNONYM v$alert_log FOR v$alert_log;
 GRANT SELECT ON v$alert_log TO lilian;

A partir disso, é possível utilizar os script acima com outros usuários, porém você deve substituir “x$dbgalertext” por “v$alert_log“.

 

Abçs!

Publicado em ORACLE, principiante, Scripts | Marcado com , , , , ,

Como Verificar Se Há Banco De Dados No Servidor

Na minha opinião, um dos conhecimentos mais básicos de um DBA é saber identificar se há banco de dados instalado no servidor, esteja este banco ativo ou não.

Desta forma, abaixo seguem algumas dicas para identificar bancos de dados Oracle instalados, seja em ambiente Linux e Windows. A premissa é:

  • Verificar se tem banco rodando;
  • Verificar se há banco inativo (parado). 

A – Ambiente Unix e Linux

O jeito mais simples de verificar se tem banco rodando no servidor, é rodar o comando abaixo no shell:

 ps -ef | grep - v grep | grep pmon 

Cada linha resultante indica uma instância ativa. Por exemplo, na imagem abaixo é demonstrado que há uma instância ativa chamada ORCL.

Screen Shot 2015-04-07 at 7.29.53 PM

Se o comando acima não retornar resultados, significa que não há instância ativa. 

Outra forma interessante de descobrir se há banco no servidor, mesmo se o banco estiver parado, é verificar se há algum arquivo alert.log. 

 find / -name alert*.log

A posição * é o SID da instância, e cada arquivo que você encontrar,  indica uma instância diferente, conforme exibido na figura a seguir:

Screen Shot 2015-03-28 at 4.09.56 PM

Caso você encontre o alert.log, veja com o comando abaixo quais foram as últimas atividades no banco, inclusive o horário quando foi baixado:

 tail -50 alert<SID>.log. 

B – Ambiente Windows

No windows, você pode abrir o gerenciador de tarefas para identificar se tem algum processo oracle.exe rodando. Cada um deste processo  ativo indica uma instância rodando. 

Screen Shot 2015-04-07 at 7.52.21 PM

Também dá para verificar nos serviços do Windows (services.msc), o serviço OracleService<SID> -> onde o SID é o nome da instância. Se o serviço estiver parado, significa que a instância não está ativa. 

Screen Shot 2015-03-28 at 4.21.41 PM

Ah sim, a dica de procurar pelo alert.log no servidor também é valida em ambientes windows! 

(atalho; tecla do windows +letra f —> abre o “find”, ou localizador de arquivos). 

Por fim, em ambientes Windows, há também um aplicativo auxiliar chamado “Oracle Administration Assistant for Windows”, onde são listados os principais componentes Oracle instalados no servidor – inclusive bancos de dados. 

Screen Shot 2015-03-28 at 6.10.18 PM

Com isso, você já consegue verificar se há banco de dados no servidor, e se há instância ativa, tanto em ambientes “tela preta” quanto no Windows 😀

Bom, até a próxima dica!

Lílian

Publicado em Carreira, ORACLE, principiante | Marcado com , , , , , ,

Como criar usuários no Oracle

O comando básico para criar um usuário no Oracle é relativamente simples. Via SQL*Plus:

CREATE USER <USUARIO> IDENTIFIED BY <SENHA>;

 exemplo:

create user liliandba identified by lbarroS0#;

ALGUMAS VARIAÇÕES DO COMANDO CREATE USER:

A seguir, alguns exemplos de comandos para criar usuários.  Lembrando que, se for utilizar no seu ambiente, substitua os valores de acordo com o necessário. Ou seja, onde estiver escrito liliandba, substitua pelo nome desejado, e assim por diante 😀

1 – Como criar um usuário definindo uma tablespace padrão?

 (lembrando que a tablespace escolhida tem de ter sido criada previamente)

create user liliandba identified by lbarroS0# default tablespace users;

2 – Como criar um usuário definindo um limite de uso da sua tablespace?

Abaixo, exemplo para restringir o uso em 1GB na tablespace users:

create user liliandba identified by lbarroS0# default tablespace users quota 1024M on users;

3 – Como criar um usuário exigindo que sua senha seja alterada no primeiro acesso?

create user liliandba identified by lbarroS0# password expire;

4 – Como criar um usuário com autenticação via Sistema Operacional?

create user ops$liliandba identified by externally;

5 – Como criar um usuário com profile diferente do default?

(obs: o profile escolhido tem que estar criado previamente)

create user liliandba identified by lbarroS0# profile appl_users;

6 – Como criar um usuário e definir limites de uso em mais de uma tablespace?

(as tablespaces precisam ter sido previamente criadas, ok? )

create user liliandba identified by lbarroS0# quota unlimited on users quota 1024m on t_data;

7 – Como criar um usuário, utilizando caracteres na senha diferentes de letras, números e/ou #, _ e $ ?

create user liliandba identified by "l barroS0 *" ;

8 – Como criar um usuário “common” (usuário para acesso ao CDB, e à outros PDBs)? 

create user liliandba identified by lbarroSo# container=all;

9 – Como criar um usuário local (usuário com acesso exclusivo à determinado CDB)?

(conectado no PDB:)

create user liliandba identified by lbarroso container=current;

10 – Como apagar um usuário? 

drop user liliandba;

Obs: se o usuário tiver objetos em seu schema, utilizar a cláusula cascade:

drop user liliandba cascade;

11 – Como modificar uma característica de um usuário após usa criação?

Todos os exemplos acima podem ser colocados em comandos separados, através da cláusula “alter user” .

Abaixo, exemplo de alteração de usuários após sua criação:

alter user liliandba default tablespace users quota 100m on users;
alter user liliandba identified by lbarroS0# password expire;
alter user liliandba profile appl_users;
alter user liliandba identified by "lbarroS0*" ;

EXEMPLO DE CREATE USER MAIS “COMPLETO” :

create user liliandba 
identified by "l brrS0*20" 
password expire 
default tablespace users 
    quota unlimited on users 
    quota 1024m on t_data 
profile app_users;

MAIS SOBRE USUÁRIOS… 😀

Como verificar características de um determinado usuário?

As principais características de um usuário podem ser verificadas na view DBA_USERS:

Select profile, 
       default_tablespace, 
       account_status 
from dba_users 
where username = 'LILIAN';

Como saber a senha de um determinado usuário?

Você consegue “descobrir” a senha de um determinado usuário consultando a SYS.USER$. Porém, a senha é armazenada em formato “hash”.

select password 
from sys.user$ 
where name = 'LILIAN';

Como conectar com um determinado usuário sem saber a senha?

Com o hash em mãos, altere a senha do usuário, conecte-se com o usuário e, depois, altere novamente para a senha antiga . Lembrando que isso pode não funcionar se tiver alguma restrição de re-utilização da senha devido ao profile do usuário 🙂

O segredo está em mudar a senha do usuário para a senha antiga, logo após conectar, utilizando o hash coletado na sys.user$;

alter user liliandba identified by values '971F75C85C323D23';

(O interessante é que você, de fato, vai continuar sem saber qual é a senha, rsrs)

Abaixo, exemplo passo a passo de como conectar sem saber a senha:

Screen Shot 2015-03-31 at 7.28.50 PM

PARA SABER MAIS:

Database 2 Day DBA: Administering User Accounts and Security –>http://docs.oracle.com/database/121/ADMQS/users_secure.htm#ADMQS07

Oracle Base: OS Authentication –>  http://oracle-base.com/articles/misc/os-authentication.php

Publicado em ORACLE, principiante | Marcado com , , ,

Script: Trigger para Grant Automático

Olá!

Uma situação que pode ocorrer no trabalho: você recebe um chamado para criação de usuário com privilégios de select em um determinado schema. Porém, como garantir que este usuário terá acesso também à tabelas novas, posteriores à criação dele?

Uma das opções existentes seria criar uma trigguer para isso!

 

SCRIPT:

Abaixo, um script que criará uma procedure auxiliar, e a trigger, onde será concedido o privilégio de select ao usuário LILIAN.

create or replace procedure execute_grant (v_grant in varchar2)
is
begin
execute immediate v_grant;
end;
/


create or replace trigger after_ddl_create
before create on schema
declare
v_tabela varchar2(500) ;
v_grant varchar2(700);
v_job number;
cursor c_tabela IS
SELECT object_name  from dba_objects where object_type = ‘TABLE’
and to_char (created, ‘DD-MM-YY’) = to_char(sysdate, ‘DD-MM-YY’);
begin
open c_tabela;
loop
fetch c_tabela into v_tabela;
v_grant:=’grant select on ‘ ||v_tabela || ‘ to lilian’;
dbms_job.submit (v_job, ‘execute_grant (”’|| v_grant || ”’); ‘, sysdate + (1/24/60/60));
exit when c_tabela%notfound;
end loop;
close c_tabela;
end;
/

EXPLICANDO:

É muito comum em ambientes críticos existir um usuário no banco que seja owner dos objetos, e outro(s) que tenham privilégios restritos sobres estes objetos, como usuários para desenvolvedores, ou usuários da aplicação.

Assim, cada vez que uma determinada tabela seja criada, é mais fácil que automaticamente estes usuários tenham os privilégios concedidos sobre ela, do que você ter de aplicar os grants manualmente, certo?

O script acima usa dois tipos de objetos “programáveis”dentro do banco: procedure e trigger, ambos utilizando a liguagem PL/SQL.

Detalhe: a trigger e a procedure devem ser criadas dentro do schema owner dos objetos (neste caso, o usuário scott).

Assim, cada vez que uma tabela nova for criada no schema, o usuário LILIAN terá automaticamente o privilégio de select sobre ela.

 

DETALHES INTERESSANTES DO SCRIPT

before create on schema:

Indica que a trigger será executada sempre que um novo objeto for criado no schema do scott.


sysdate + (1/24/60/60)

Indica horário atual (experimente rodar select sysdate + (1/24/60/60) from dual; no seu banco de dados 😉 )

OBS: foi utilizada uma procedure adicional por causa do Oracle não aceitar commandos ddl com execute immediate neste tipo de trigger.

Veja o erro que ocorre caso você tente criar apenas a trigger, concedendo o grant por execute immediate:


SQL> create table t1 (col1 number);
create table t1 (col1 number)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-30511: invalid DDL operation in system triggers
ORA-06512: at line 11

 

Publicado em Intermediário, ORACLE, Scripts | Marcado com , , , | Deixe um comentário

Script para Exportar Tabelas Oracle para o Excel

No meu trabalho, é comum demandas de export do conteúdo de tabelas para o excel, a pedido da equipe de desenvolvimento.

Uma das maneiras de fazer isso é via SQL Developer, onde você pode exportar o resultado direto para um arquivo do excel. Porém, particularmente, eu prefiro utilizar scripts.

Uma opção de script, via SQL*Plus, é criar um spool com extensão “*.xls”, utilizando tags html.

SCRIPT BÁSICO:

set feed off

set markup html on spool on

spool c:\teste.xls                     

select * from tabela;        

spool off                           

set markup html off

set feed on

EXPLICANDO:

set feed off : Desliga a opção de feedback, ou seja, aquela confirmação do SQL*Plus após a execução de algum script. Veja abaixo um exemplo:

C:\WINDOWS>sqlplus

 

SQL*Plus: Release 11.2.0.1.0 Production on Qui Mar 19 10:46:40 2015

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

 

Informe o nome do usuário: LILIAN@ORCL

Informe a senha:

 

Conectado a:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

 

LILIAN@ORCL> select 1 from dual;

 

         1

———-

         1

 

1 linha selecionada.

 

LILIAN@ORCL> set feed off

LILIAN@ORCL> select 1 from dual;

 

         1

———-

         1

LILIAN@ORCL>

 

set markup html on spool on :Cria um arquivo de saída com codificação HTML.

spool c:\teste.xls :Cria o arquivo excel com o conteúdo da tabela, no diretório C:\

select * from tabela: O seu script 😉

spool off: Indica para o SQL*Plus que não é mais necessário gravar dados no arquivo “excel”.

set markup html off: Faz com que não sejam mais geradas saídas com tags HTML.

set feed on: Volta a geração de feedback após a execução de comandos.

MELHORANDO O SCRIPT:

Você pode inserir este pedaço de script num shell ou bat, e fazer que o processo seja automático.

No meu caso, como na maior parte das vezes já estou com uma sessão do SQL*Plus aberta no meu desktop, eu salvei as linhas abaixo como exporta_excel.sql no $ORACLE_HOME/dbs do meu oracle client. Assim, eu apenas dou um @exporta_excel e o script é executado.

cl scr

PROMPT INICIANDO EXPORT

set verify off

set feed off markup html on spool on

spool ‘C:\Users\lilianbarroso\Documents\Demandas\&&nome_arquivo’

select * from &&tabela;

spool off

set markup html off spool off

set verify on

CL SCR

PROMPT EXPORTADA A TABELA &tabela PARA O ARQUIVO C:\Users\lilianbarroso\Documents\Demandas\&nome_arquivo

PROMPT

Bom, espero que estas dicas sejam úteis 😀 😀 😀

Abçs,

Lílian

PS: Para saber mais:

SQL*Plus® User’s Guide and Reference

Publicado em ORACLE, Scripts | Marcado com , , , , , | Deixe um comentário

Então… E Agora, Por Onde Eu Começo?

Então você deseja entrar na área de banco de dados… ou te empurraram a tarefa de cuidar do banco da empresa… ou o DBA faltou e você precisa fazer alguma tarefa, mas não tem noção de onde começar.

Então… por onde começar? Fazer um curso? Comprar um livro? Baixar um pdf na Internet? Sentar e chorar? 

Então, com este post eu começo uma série de publicações com dicas práticas para quem caiu de gaiato na área – ou está interessado em entrar. 

DBA JUNIOR

Como eu já disse num post anterior, o profissional que cuida do banco de dados é o DBA. Muitos iniciam na área de gaiato, ou seja, são programadores, administradores de sistema ou alguma outra área co-relatada, e por alguma peripécia do destino começam aos poucos cuidar também do banco… até que se veem DBA. Outros, procuram uma formação, fazem uma faculdade e entram na empresa como DBA Junior, ou raramente, estagiário. 

Desta forma, para fins didáticos, englobarei todos na categoria DBA JUNIOR, que é o profissional que está começando na carreira de DBA. 

CONHECIMENTOS BÁSICOS PARA O DBA (Oracle) JÚNIOR 

Na minha humilde opinião todo o profissional, independente da carreira, precisa ter 3 características – e elas precisam estar interligadas: 

  • Curiosidade
  • Conhecimento técnico
  • Criatividade

Vou explicar melhor este meu conceito em um próximo post. Mas, dentro da característica “conhecimento técnico”, abaixo segue uma “listinha” de conhecimentos práticos que um DBA Jr em início de carreira DEVE saber, por ordem de importância. 

  • Identificar se há banco instalado no servidor;
  • Entrar no banco de dados (sql*plus, sqldeveloper e enterprise manager);
  • Saber rodar script, e interpretá-los minimamente (tanto o resultado qto o próprio script em si);
  • Monitoramento: Se o banco está no ar, se o backup foi feito, se tá tendo lock, espaço em disco, tamanho de datafile….
  • Tem que conhecer minimamente SO – pq, em geral, você passa pelo SO antes de entrar no banco de dados… 
    • Como entrar no servidor
    • Quais as ferramentas necessárias
  • Conhecer minimamente os comandos de SQL*Plus – e diferenciar o que é do aplicativo, e o que é comado do shell… 
  • Tem que saber abrir – e acompanhar o alert.log;
  • Tem que saber dar shutdown, e startup (open); 
  • Conhecer um pouquinho de linguagem SQL – e dos objetos básicos que compõem o banco de dados. 

O QUE SÃO CONHECIMENTOS BÁSICOS 

Antes que alguém me coloque numa cruz, é bom deixar cláro que, ao meu ver, estes são conhecimentos BÁSICOS!!! Este é o tipo de coisa que o profissional tem de conhecer de cabo a rabo no segundo mês de trabalho. Porém, até ele chegar ao nível de pleno, tem mais muitas outras coisinhas pra aprender… rsrsrs

Assim, nos próximos posts escreverei dicas práticas sobre estes básicos conhecimentos.

Publicado em Carreira, ORACLE, principiante | Marcado com , , , , , | Deixe um comentário

Uma Pequena Introdução: O que é banco de dados?

Banco de dados é a camada atrás da aplicação, das “telinhas” coloridas dos aplicativos. Geralmente, quando você preenche um formulário em algum site, é para lá que a aplicação envia as informações que você insere.

Ou, quando você entra no site do Detran para ver a contagem de pontos da sua CNH, é em um banco de dados que o “site” vai buscar esta informação… aliás, é no banco de dados que o guarda de trânsito armazena, indiretamente, suas peripécias automobilísticas.

Eu poderia dizer sem sombra de dúvidas que o DB é o centro de todo sistema informático, tanto é que todo banco de dados é um dos grandes alvos para ataques hackers.

Aplicações de banco de dados

Os programas responsáveis por gerenciar as bases de dados são os aplicativos de banco de dados. Dentre deles, há uma categoria de aplicativos chamados Sistemas Gerenciadores de Bancos de Dados Relacionais (SGDBR), dentre os quais estão:

– Oracle Database

– SQL Server

– MySQL

– DB2

– PostgreSQL

Em comum entre eles, está a características de suas transações atenderem às 4 regras ACID (Atomicidade, Consistência, Isolamento e Durabilidade), e às 13 regras de Ted Codd (Fundamentos do modelo relacional dos bancos de dados).

Além disso, a liguagem básica de manipulação de dados utilizada nestes aplicativos é a SQL (Structured Query Language), a qual é padronizada pelo instituto ANSI, e em maior ou menor grau, personalizada pelos respectivos fabricantes.

Por exemplo, a Oracle criou uma linguagem de programação para seus bancos chamada PL/SQL, onde comandos SQL são mistos com com comandos particulares procedurais.

DBA

DBA é sigla para a expressão em inglês Database Administrator (em português, Administrador de Banco de Dados), e diz respeito ao profissional especializado em administração da infraestrutura, projeto e/ ou desenvolvimento de banco de dados.

No Brasil, o DBA de infraestrutura é o tipo mais comum de profissional, sendo ele o responsável pela instalação, manutenção e suporte ao database. Por exemplo, rotinas de backup e recover, criação de usuários, e monitoramento das atividades no banco são tarefas deste profissional.

Além disso, em geral o DBA brasileiro conhece pelo menos duas tecnologias dois SGDBs diferentes, sendo os mais comuns Oracle e SQL Server.

Para saber mais (Links externos):

Hoje Eu Sou um DBA

Entendendo os Bancos de Dados Relacionais

Os modelos de SGBD 

Banco de dados

List of relational database management systems

Product and Services Finder – Database Software 

Publicado em principiante | Marcado com , , , | 1 Comentário

Voltando a Escrever :D

2014 foi um ano que passou que nem um furacão!

Passei por duas empresas completamente diferentes, tive a oportunidade de lecionar aulas de banco de dados, reaprendi a viver sem carro, fiz muitas amizades, conheci outras culturas – e de quebra melhorei o inglês… e deixei de escrever no blog. 

Porém, no último mês tive a oportunidade de conversar com muitos profissionais interessados em trabalhar como DBA, ou em início de carreira.

Com isso, tive a idéia de voltar a re-escrever no blog, porém fazendo uma série de posts voltados para quem quer iniciar na carreira, ou quer dar um suporte ao banco de dados no dia que o DBA faltou… rs. 

Quem nunca, por exemplo, precisou entrar num servidor para ver se tem banco instalado, e não sabia por onde começar?  Ou, precisou baixar uma instância para uma manutenção de emergência?

Bom… tem certas coisas que não se aprende em curso. Coisas simples que facilitam a vida de quem está começando, como aliases no SO, configurações de Putty ou mesmo scripts simples para monitorar o uso de disco no banco. 

Assim, tentarei ser mais prática nos posts, com dicas úteis para o dia a dia. 

Abraços!

Lílian 

Publicado em Uncategorized | Deixe um comentário