quinta-feira, 2 de setembro de 2010

Como recuperar registros alterados/excluídos no Oracle com Flashback.

Este artigo da uma introdução e alguns exemplos de como utilizar o Oracle Flashback para recuperar dados alterados/excluídos no banco de dados.


Este artigo será sobre uma feature disponível nos bancos 9i ou superior e que eu considero uma ferramenta muito poderosa do Oracle, o Oracle Flashback.

A partir da versão 9i do banco, a Oracle introduz o conceito de UNDO e com ela uma funcionalidade que permite ao usuário errar e ao DBA recuperar um registro muito mais facilmente do que nas versões anteriores.

Quem já teve que voltar dados na versão 8i sabe que é muito trabalhoso porque ou usa-se um backup frio (export) ou utilizando o LogMiner ou para quem pagou os pecados montado somente uma parte de uma instancia com hot backup.

Com o conceito do UNDO veio o tempo de retenção definido pelo parâmetro UNDO_RETENTION (em segundos). Este parâmetro vai ser muito importante para o Flashback porque o seu “significado” é: “Quanto tempo de TENTAR manter as transações no segmento de UNDO?”. Por padrão 15 minutos.

Isso significa que durante UNDO_RETENTION segundos o banco tentar manter as transações mesmo comitadas no segmento de undo para que você possa utilizá-la para recuperar os registros alterados/excluídos.

Faremos com exemplos, criando uma simples tabela para realizar os testes como segue:

create table artigo3 (id number);

insert into artigo3 values(1);
insert into artigo3 values(2);
insert into artigo3 values(3);
insert into artigo3 values(4);

commit;

É claro que se fizermos um select agora obtemos os registros que acabaram de ser incluido:

SQL> select * from artigo3;
ID
----------
1
2
3
4

Para que o flashback funcione como esperado, vamos atualizar algumas linhas:

update artigo3 set id = id+10 where id = 1;
update artigo3 set id = id+10 where id = 2;
update artigo3 set id = id+10 where id = 3;
update artigo3 set id = id+10 where id = 4;

commit;

Após este commit, espere por 5 ou 10 minutos para simularmos o tempo que iremos saber que o usuário fez algo errado e para trabalhar com um período de tempo mais fácil.

Após estes cinco minutos, faca a simples query na tabela novamente. Os dados atualizados irão aparecer:

SQL> select * from artigo3;

ID
----------
11
12
13
14


Agora utilizando o flashback, vamos visualizar os dados antes da alteração:

SQL> select *
from artigo3
as of timestamp systimestamp - interval '5' minute;

ID
----------
1
2
3
4

A mágica esta no simples “AS OF” da query acima. Este é o flashback na sua forma simplificada. Nas primeiras versões do Oracle 9i era necessário utilizar uma package e era mais trabalhoso também.

Se você quiser salvar estes dados para que não se percam do UNDO, faca um simples insert como se segue:

SQL> insert into artigo3
select *
from artigo3
as of timestamp systimestamp - interval '35' minute;

commit;

Se ainda utilizando o flashback visualizar os dados atualizados, aumente o intervalo na query “interval ‘x’ minute’ ate encontrar o desejado.

Como descrito no começo, o UNDO_RETENTION tenta manter os dados. Não significa que ira funcionar, dependendo da quantidade de transações no seu banco X tempo de retenção.

No banco 10g esta feature se estendeu. Agora é possível visualizar os dados alterados ao mesmo tempo dos dados atuais. O banco 10g também tem uma tabela, a “flashback_transaction_query” que da o usuário que fez a alteração e até o comando para restaurar o registro antigo.

Também no banco 10g a funcionalidade se estendeu a tabela. Agora o conceito de flashback se ao banco, onde temos um dos primeiros conceitos do Apple e já deveria existir a muito tempo, a “Lixeira”.

Agora não há mais perigo de fazer drop de tabela no banco 10g porque podemos recuperar da lixeira, isso tudo como comportamento padrão do banco. Mas quem sabe será tema para outro artigo.

O flashback também se aplica ao dicionário de dados. Se você por exemplo mudou a senha de um usuário e precisa restaura-la, utilize o flashback que funciona perfeitamente.

Como usual, este é só a ponta do iceberg do flashback e parâmetros como UNDO_RETENTION. Existem mais configurações que afetam este parâmetro como o FAST_START_MTTR_TARGET e muito, muito mais sobre flashback no 10g.

Mais informações:
http://tahiti.oracle.com

quinta-feira, 26 de agosto de 2010

Aumentar o Número máximo de 20 sessões no Oracle XE


No exemplo abaixo, passaremos a limitação de 20 sessões do oracle XE para 100 sessões:
a. Conecte do banco como administrador
      connect / as sysdba
b. Altere o número de processos para 100
      alter system set processes=100 scope=spfile
c. Remova o limite de 20 sessões
      alter system reset sessions scope=spfile sid=’*’
d. Pare o banco
      shutdown immediate
e. Inicie o banco
      startup
Para verificar se as alterações fizeram efeito:
      show parameter sessions
      show parameter processes

terça-feira, 10 de agosto de 2010

Conversão Firebird 1.5 para 2.1 - dbExpress Error: Unknown Error Code '65535'



Segui o conselho de um POST no site do activeDelphi, agora menos a conexão esta funcionando direitinho o que eu fiz, foi  substitui a Library name do meu sqlconnection para dbexpUIBfire15.dll a dll de conexão ao firebird esta disponivel:


 - http://www.reel.com.br/downloads.asp 
ou
-  http://www.4shared.com/file/acfitRSV/dbexpUIBfire15.html



... e os primeiros testes apontam que tudo corre bem. 
Coloque a DLL junto com o executável e ou C:\WINDOWS\SYSTEM32\


Fonte : http://www.activedelphi.com.br/forum/viewtopic.php?p=270245&sid=167a7b16e430939714c997e6782d6700

segunda-feira, 9 de agosto de 2010

Levar a lista AutoCompletar do Outlook de nomes / E-mail para outro computador

Windows XP       : C:\Documents and Settings\[USUARIO]\Dados de aplicativos\Microsoft\Outlook
Windows Vista : C:\Documents and Settings\[USUARIO]\AppData\Roaming\Microsoft\Outlook
Windows 7          : C:\Documents and Settings\[USUARIO]\AppData\Roaming\Microsoft\Outlook

Aplica-se a Microsoft Office Outlook 2003 e 2007

No novo computador, você não tem mais a conveniência oferecida pelo Outlook de completar automaticamente os nomes das pessoas quando começa a digitá-los? Esta  trocando o computador e não quer perder os nomes armazenados no recurso Autocompletar do Outlook? Não seria maravilhoso se o Outlook instalado no novo computador "lembrasse" os nomes e os preenchesse para você?
Complete emails automaticamente

Você pode copiar os nomes do recurso Autocompletar do computador antigo para o novo. Copiar os nomes do recurso Autocompletar para outro computador

Importante: Antes de começar o procedimento, ‚ preciso fechar o Outlook. Os nomes serão incluídos no recurso Autocompletar quando você reiniciar o programa.

   1. No computador com os nomes salvos no recurso Autocompletar, você  para unidade:\Documents and Settings\nome do usuário\Dados de aplicativos\Microsoft\Outlook.

      Observação: Dependendo das configurações do arquivo, talvez essa pasta esteja oculta. Para visualizar os arquivos nela contidos, siga um destes procedimentos:

Mostrar Microsoft Windows XP
         1. Clique em Iniciar e em Meu Computador.
         2. No menu Ferramentas, clique em Opções de Pasta.
         3. Clique na guia Exibir e, em Configurações avançadas, em Pastas e arquivos ocultos, clique em Mostrar pastas e arquivos ocultos.

Mostrar Microsoft Windows 2000
         1. Clique duas vezes em Meu Computador na área de trabalho.
         2. No “MENU” Ferramentas, clique em Opções de Pasta.
         3. Clique na guia Exibir e clique em Mostrar pastas e arquivos ocultos.
   2. Clique com o botão direito do mouse em nome do perfil.nk2 e em Copiar.

      Dica: Você pode copiar o arquivo para uma mídia removível, como um disquete ou CD, e, em seguida copiá-lo no local correto do outro computador. Outra alternativa ‚ anexar o arquivo a um email para você mesmo. No novo computador, abra o anexo no Outlook e salve-o no local correto.

   3. No computador no qual deseja preencher o recurso Autocompletar, copie o arquivo para [unidade]:\Documents and Settings\[USUÁRIO]\Dados de aplicativos\Microsoft\Outlook.

   4. Se o nome do perfil do usuário do Outlook estiver diferente no computador para o qual esta  movendo o arquivo .nk2, você ter  que renomear o arquivo. Depois de copiar o arquivo para a pasta correta, atribua a ele o nome de perfil de usuário do Outlook. Por exemplo, se você mover Kim Akers.nk2 do computador original cujo nome de perfil de usuário do Outlook ‚ Kim Akers e copiar o arquivo Kim Akers.nk2 para o novo computador, ter  que renomear o arquivo com o nome do perfil que esta  sendo usado no novo computador.
   5. Quando o aviso de substituição do arquivo existente for exibido, clique em Sim.
   6. Abra o Outlook para ver as alterações.

Origem : http://office.microsoft.com/pt-br/outlook/HA011394511046.aspx

quinta-feira, 5 de agosto de 2010

Recuperar a senha do Oracle 10g - Windows

Recuperar a senha do Oracle 10g - Windows

Para acessar o oracle em minha maquina, não tinha mais usuário e senha (esqueci)


Consultando o metalink do Oracle tem a seguinte informação e funcionou:

The ‘OSDBA’ and ‘OSOPER’ groups on NT are simply groups with the name “ORA_DBA”, “ORA_OPER”, “ORA_sid_DBA” or “ORA_sid_OPER”, where ‘sid’ is the instance name.
Eg: To make a user an administrative user simply:

 a) Certifique-se que no arquivo SQLNET.ORA esteja a linha: SQLNET.AUTHENTICATION_SERVICES = (NTS)
 b) Crie um usuário local no servidor (fora do domínio), não é um usuário com nome “local” pelo amor de Deus!
 c) Crie um grupo local (se não existir) ORA_DBA ou ORA_sid_DBA onde SID é o SID do banco (em maiúsculas).
 d) Adicione o usuário ao grupo ORA_DBA ou ORA_sid_DBA

 e) Acesse o SqlPlus pelo DOS ou Terminal

           C:\Users\aflima>sqlplus /nolog
           SQL*Plus: Release 10.2.0.3.0 - Production on Fri Jul 2 16:31:11 2010
           Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

f) Logue no Windows com este usuário e tente dentro do sqlplus “connect / as sysdba”

  >>>  ERRO, é que o usuário não esta como ORA_DBA no Windows
           sql> connect /as sysdba
           ERROR:
           ORA-01031: insufficient privileges.

  >>> SUCESSO, pode prosseguir com a alteração
           SQL> connect /as sysdba
           Connected.

g) Depois altere a senha "alter user sys identified by"

           SQL> alter user sys identified by "NovaSenha";
           User altered.

Acredito que funcione mais ou menos assim no Unix, basta saber qual grupo de acesso o usuário deve estar.

JSharp Runtime 2.0 could not be installed - Delphi 2009

Na tentativa de instalar o Delphi 2009, ocorre o erro do JSharp, para resolver tem que dar uma enganada na instalação do Delphi.

Tem que colocar para reparar a instalação do JSharp e iniciar a instalação do Delphi ai vai legal. Segue um documento com as instruções...