Arquivo da tag: oracle

Utilizando Compartilhamento Windows no Linux

Fala PessoAll,

Bom, hoje tivemos mais um desafio bem interessante.

Recebemos um dump de um determinado cliente, o arquivo de dump (X.dmp) veio com 260Gb em um único arquivo. Infelizmente, na máquina Linux onde a base está instalada não tinha nenhum disco com esta quantidade de espaço livre. E agora pra importar esse dump??

Vasculhamos nossos servidores e achamos um servidor com mais de 260Gb livre, dando sopa! Que beleza, problema resolvido!

Idéia 1: Descompactamos os 260Gb neste servidor e a partir dele fazemos o import na máquina destino, tudo certo! NÃO! Este servidor roda Oracle 10G e o servidor de destino roda Oracle 9i, não funciona! Que falta de sorte!

Idéia 2: Descompactamos neste servidor e através da rede, criamos um mapeamento da máquina onde será importado, para esta máquina que tem espaço sobrando e tudo certo! Ok? NÃO de novo. O servidor que tem esse espaço é um Windows 2003 Server, e a máquina onde a base está rodando e o dump teria que ser importada, estava rodando Linux… Red Hat Enterprise.

Mas… porque não? Será que não tem como fazer? Pesquisando na internet achei alguns sites que explicavam como fazer e aí decidi testar. E, para alegrar ainda mais minha sexta-feira, funcionou beleza! Como se fosse uma pasta na máquina Linux.

Segue o passo a passo:


Inicialmente deve-se verificar os compartilhamentos disponíveis na máquina destino
[oracle@oracle9i oracle]$ smbclient -L 192.168.0.13 -U oracle
Password:
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC remoto
D$ Disk Recurso compartilhado padrão
RV Disk
SQLLDR Disk
ADMIN$ Disk Administração remota
C$ Disk Recurso compartilhado padrão

Em seguida deve-se conectar como SU
[oracle@oracle9i oracle]$ su -
Password:

Depois deve ser criada a pasta que irá exibir os dados do compartilhamento
[root@oracle9i root]# mkdir /mnt/Dump

Depois deve ser executado o commando que efetivamente vai criar o link
[root@oracle9i root]# mount -t smbfs -o username=oracle,password=oracle01 //192.168.0.13/SQLLDR /mnt/Dump

Depois disso já podemos listar o conteúdo da pasta, que já será exibido o conteúdo do mapeamento em questão
[root@oracle9i root]# ls /mnt/Dump
IN

É isso!

Espero que seja útil também pra vocês!

Grande abraço.

Atc.
Gerson Júnior
gerson.vasconcelos@gmail.com

Notebook com Windows 7 para um DBA

Fala PessoAll,

Creio que muita gente está pensando e vivendo um grande dilema: Migro ou não para o Windows 7.

Comprei uma máquina nova, um Dell Vostro 1320, como todas as máquinas recentes eu tinha direito ao upgrade gratuito do Vista para o Windows 7, e claro eu decidi arriscar instalar o 7 pra ver como sairia no ambiente de trabalho, enfim no dia a dia de um DBA.

Meio receioso… com o CD do XP Professional do lado, para que em caso de problemas, não perdesse tempo, iniciei a instalação.

Primeira coisa: Particionar o HD, claro… C: e D:, arquivos todos no D: e S.O no C: em caso de problemas… Formata apenas o C:, instala o S.O novo e tá tudo certo!

Para este passo, evitando quebrar cabeça, pesquisei alguém que já tivesse feito algo e achei um vídeo no Youtube que explicava direitinho como fazer. O vídeo é Como Formatar um Computador e instalar o Windows 7. Claro que eu já tinha uma noção boa, mas usando Windows XP… o vídeo serve só pra conferir se não tem nenhuma particularidade, e não tem!

Pronto… Windows 7 Ultimate instalado! Rodando 100%

Agora vem o desafio, instalar o Oracle!

Pesquisei em alguns sites, e confirmei que existe uma versão do Oracle para Windows Vista e que funciona no Windows 7. Como todo e qualquer download de produtos Oracle, fui até o OTN (http://otn.oracle.com) e dei uma pesquisada nas versões disponíveis do Database, e encontrei a tal versão para Vista, que pode ser encontrada no link: Oracle 10g para Windows Vista e 2k8, depois do download, fiz a instalação! Ele deu um erro dizendo que o S.O não era homologado para aquela versão do Oracle. Solução: Marcar o checkbox dizendo que tá sabendo, mas quer instalar assim mesmo! Pronto. Instalado, Oracle no ar, rodando, sem problema algum! Já dei shutdown/startup pra ver se ia subir numa boa, e até então tudo certo!

Depois disso vem as nossas queridas ferramentas! Tão importantes no nosso dia a dia!

Até então estão instaladas e funcionando normalmente:

– PL/SQL Developer (FrontEnd Oracle)
– Toad (FrontEnd Oracle)
– UltraEdit (Editor poderoso de Texto)
– UltraVNC (Irmão do VNC fee e mais poderodo)
– One Studio (Ferramenta de controle de solicitações)
– Putty (Ferramenta de conexões com ambientes Unix)

Tudo isso funcionando normalmente, como se fosse o bom e velho XP, só que muito mais rápido e muito mais bonito!

As demais atividades que precisamos fazer como DBA, podemos conectar via Terminal Server e fazer sem problemas, como sempre fizemos! No mais, está tudo certo! Rodando, funcionando e aprovado!

Estou agora desfrutando da novidade, como diria Jessier Quirino: “Eu ando é na frente, feito bengala de cego!”

Abraço a todos.

Atc.
Gerson Júnior
gerson.vasconcelos@gmail.com

JOB no ORACLE – Definindo a periodicidade. (INTERVAL)

Fala PessoALL,

Bom, atendendo à dica do amigo Alessandro Varela (http://blogdovarela.com.br) hoje falarei sobre: Como definir corretamente a periodicidade da execução dos seus Job’s! Complica não? É nada!! Vamos lá!

Espero que todos tenham lido o post que fiz falando sobre Job’s, caso não tenha lido, ainda dá tempo, basta ler o post Jobs no Oracle.

Bom, quando fazemos a criação de um Job, é porque temos a necessidade que uma determinada tarefa seja executada de tempos em tempos, e para isso geralmente precisamos definir um intervalo para que o Job seja executado novamente. Por exemplo: Quero que meu Job rode a cada hora, quero que meu Job rode todo dia de 23:00, quero que meu job rode a cada 5 minutos, e assim por diante. Só que no momento de fazer esta parametrização é quando começa a confusão, pois, as pessoas esquecem de que o Job vai rodar sozinho e ele é quem tem que definir a próxma execução! Para simplificar isso, vamos lá!

Todo mundo lembra no post anterior que eu falei que para criar um Job usamos a package DBMS_JOB e a procedure DBMS_JOB.SUBMIT(...), certo? Pois é, nesta procedure, um dos parâmetros que é passado é um tal de INTERVAL, ou seja, o intervalo entre cada execução do seu Job. É aqui que mora o X (xis) da questão! É neste parametro que vamos informar de quanto em quando tempo nosso Job vai rodar.

O que tem que ser considerado aqui, é que o Job será executado automaticamente (essa é a razão do seu existir) e é justamente por isso que rola a confusão, quando este parâmetro for usado já não estaremos mais na data “agora”, estaremos na data de execução do Job, sei lá, 23:00! E aí o banco vai usar este parâmetro INTERVAL para setar o campo NEXT_DATE, que é a próxima data em que o Job será executado, ou seja você tem que levar em consideração que o banco sempre vai usar sysdate para calcular este valor.

Como é de rotina, vamos para os exemplos que tudo vai ficar mais claro.
Exemplos mais comuns:

Job para rodar de hora em hora:
Interval -> ‘sysdate + 1/24’
Ou seja, se este Job rodar dia 25/10/2009 às 14:00, quando for somada 1 hora, teremos 15:00 como NEXT_DATE.

Job para rodar a cada 5 minutos.
Interval -> ‘sysdate + 5/1440’
Ou seja, se este Job rodar dia 25/10/2009 às 14:00, quando for somado 5 minutos (1/1440), teremos 14:05 como NEXT_DATE.

Job para rodar uma vez por mês:
Interval -> ‘add_months(sysdate, 1)’
Ou seja, se executar dia 25/10/2009, aplicando este valor acima, teriamos 25/11/2009 como NEXT_DATE.

Esse foi um dos casos mais estranhos, pedido através do blog pra mim…
Job para rodar em um dia específico a cada ano e numa determinada hora:
‘add_months(to_date(to_char(sysdate, ”DD/MM/YYYY”)||” 05:00”, ”DD/MM/YYYY HH24:MI”), 12)’
Ou seja, se o job rodar dia 25/10/2009 as 15:00, e aplicarmos esta fórmula aí, teremos 25/10/2010 05:00 como NEXT_DATE.

Uma dica legal para você fazer esta fórmula que será o NEXT_DATE do seu Job é dar select em sysdate usando a dual. Que eu creio ser o que o banco faz na hora de rodar o Job.

Por exemplo:
Se executarmos o comando:
select sysdate, sysdate + 1/24 from dual
Vamos obter como retorno:

sysdate sysdate + 1/24
20/10/2009 15:55:35 20/10/2009 16:55:35

Isso aí nos dá a hora atual e a hora atual somado 1 hora. Assim você monta seu NEXT_DATE facilmente!

É isso pessoal, espero que tenha ficado claro e que daqui pra frente seja mais fácil montar seus Jobs para as mais diversas necesidades.

Qualquer coisa, estamos por aqui!

Atc.
Gerson Júnior
gerson.vasconcelos@gmail.com