quinta-feira, 24 de maio de 2012

Tutorial - Alterando a partição da Base de Dados do Mysql para outra pasta/partição.

Voltei após muito tempo...
E desta vez, volto com Mysql. Veja este pequeno e simples tutorial para muda a base de diretório... 
Usem como quiser o Tutorial, foi totalmente desenvolvido por mim.
Se desejar colocar em seu site e puder deixar uma citação eu agradeço.
Existem momentos que é necessária trocar a base do mysql de diretório, seja por motivo de segurança, seja por motivo de falta de espaço e até mesmo para ganho de performance (Quando a base está numa partição separada da partição do windows por exemplo, existe ganho de performance. Se você está passando por isto, e não sabe como fazer... Leia abaixo o...
 
Procedimento para alterar a partição da Base de Dados do Mysql para outra pasta/partição.

Versão de teste: Windows XP – Mysql 5.5

Atenção, as pastas podem variar dependendo da versão do mysql, porém, será facil descobrir o caminho da instalação, quando depois de logado usando o comando: show variables where value like 'C:%';  Verifique o diretório no campo 'value'
Existe uma lista de erros conhecidos com soluções no final do arquivo.

1 - Conecte na base com privilégios de administrador e execute o seguinte comando:
(Para conectar, abra o prompt do DOS e execute o comando mysql -u root -p (será solicitada a senha de administrador.

2 - Após conectado digite o comando: show databases; (Anote o nome das bases para futura verificação).

3 -Execute o próximo comando: show variables where value like 'C:%';

O resultado deverá ser como o exibido abaixo na Figura 1:



4 - Desconecte do Banco de Dados com o comando: exit;

5 - Crie um backup dos arquivos data. (copiando e colando os arquivos que estão na pasta: C:\ProgramData\MySQL\MySQL Server 5.5\Data\  )

6 - Gere também outro backup (Dump Full) No prompt de DOS digite:  mysqldump --all-databases -u root -p  > c:\caminho\backup.sql
Atenção: Será pedido a senha de root informe-a.

7 - Crie a pasta para onde os arquivos de dados serão movidos: ex.: E:\MYSQL\DATA\

8 - Pare o Banco de dados: na linha de comando digite: net stop mysql

9 - Abra o arquivo my.ini (com um editor de texto comum, como o bloco de notas por exemplo) em: (C:\Program Files (x86)\MySQL\MySQL Server 5.5\)

10 - Dentro do arquivo comente a linha abaixo usando o (#)
            datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
11 - Ficará assim:
            #datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

13 - Coloque abaixo desta linha o novo caminho dos arquivos de dados conforme abaixo na Figura1:
Obs.: use a  / para indicar o diretório.


  Figura 2

Cuidado para não alterar a linha onde fica o basedir.
14 - Salve o arquivo e feche-o.
Caso ainda não tenha criado, crie o caminho que foi identificado na linha datadir:
No nosso exemplo ficou: E:\MYSQL\DATA\
Altere conforme a sua necessidade.

15 - Copie todos os arquivos da pasta: C:\ProgramData\MySQL\MySQL Server 5.5\Data\
A pasta C:\ProgramData está oculta.

para a pasta  E:\MYSQL\DATA\

16 - Restarte o serviço com comando net start mysql

17 - Reconecte na base com privilégios de administrador e execute o seguinte comando:
(Para conectar, abra o prompt do DOS e execute o comando mysql -u root -p (será solicitada a senha de administrador)). Após conectado digite o comando:
 show variables where value like 'C:%' or value like 'E:%';
(Atenção: no comando a cima a letra E é a letra da unidade, que é a do exemplo deste tutorial, troque-a conforme a sua necessidade.)

Deverá ficar conforme mostrado na Figura 3:


Figura 3


18 - Verifique se as bases estão corretas: (Conectado ao Banco de Dados) Use o comando: show databases;
Verifique se são as mesmas bases e se estão como estavam antes.

19 - Após confirmar que está tudo correto, não se esqueça de deletar os arquivos na pasta antiga. (Poderá deletar os backups também.) Não esqueça que o seu banco de deve ter rotina de backup sempre. :D

Os diretórios que ficaram listados na consulta que estão na letra C:\  são os arquivos de instalação do Mysql. Não se preocupe com eles.

Pronto os arquivos da base já foram trocados de partição e pasta.

Estes passos são o suficiente para trocar as bases do Banco de Dados de pastas.





POSSÍVEIS ERROS:


Atenção: Caso ocorra o erro  abaixo ao tentar logar ou reiniciar o serviço do mysql:
--------------------------------------------------------

A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
--------------------------------------------------------
Verifique o arquivo my.ini e veja se o caminho que foi alterado está correto. Caso contrário, conserte-o.



Jefferson Silva. - DBA

sexta-feira, 13 de janeiro de 2012

Desbloqueio de usuario Oracle e mudança do tempo de expiração da senha

Estou de volta galera!! Esse ano promete. Estou trabalhando firme com Oracle e outros SGBDs. Não vou deixar de lado o objetivo da principal do blog que é ajudar a galera sobre informática. Porém, a enfase tem sido Banco de Dados...
Aqui vai uma dica simples que aprendi no serviço e acredito que muitas vezes isso pode vir a ocorrer no nosso dia-a-dia.O esquecimento da senha...
Cenário:
O usuário chega para o DBA e fala: 
-Não consigo logar no sistema.Acho que meu usuário está bloqueado...
Oq fazer nessa hora??
Segue abaixo oque fazer, super simples. 
Caso, vc esteja usando a versão 11g (outras também), no final vem uma dica para verificar o tempo de inatividade do uso da senha e como altera-lá.
Quando um usuário tenta logar no Banco de dados Oracle por muitas vezes digitando a senha errada, o este usuário ficará bloqueado. Para fazer o desbloqueio do mesmo, o DBA após logar como system terá duas (02) opções: 
Na primeira ele estará alterando a senha do usuário e desbloqueando a conta.
1) - A pessoa não lembra mais senha, por exemplo use esse comando:

ALTER USER "NOME DO USUARIO" IDENTIFIED BY "NOVA SENHA" ACCOUNT UNLOCK;

Na segunda, a conta será apenas desbloqueada sem alteração da senha.

2) A pessoa lembrou a senha correta por exemplo, use esse comando:
ALTER USER "NOME DO USUARIO" ACCOUNT UNLOCK;


--- Para vc que esta usando o oracle 11g ou até inferior:

Existe na versão 11g uma regra que define que a senha ficará inativa após 180 por padrão (somente no 11g). 
Por este motivo, pode-se trocar este parametro e definir que a senha ficará ativa sem limite de tempo.

Vamos visualizar e trocar esse parametro:
Após connectar como sys:

SQL> selecet username, profile from dba_users where user_name= upper('nome_usuario');
USERNAME                       PROFILE
------------------------------ ------------------------------
USUARIO                        DEFAULT
Após, vamos ver a DBA_PROFILES e ver o limite do profile:
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
SQL> select RESOURCE_NAME, LIMIT from dba_profiles
where RESOURCE_NAME='PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               180

Observe que o valor  LIMIT estará setado como 180 (Caso esteja, como UNLIMITED então não é necessário fazer alterações).
Vamos alterar o limite agora.
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED;
profile alteread...
Pronto! Agora, você pode dar uma outra visualizada para garantir que a alteração está feita.
SQL> select resource_name, limit from dba_profiles
where resouce_name = 'PASSWORD_LIFE_TIME';
RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
PASSWORD_LIFE_TIME               UNLIMITED


Observe que a alteração também poderia ser feita para um outro valor, como por exemplo 90 dias (3 meses). Verifique com atenção como deve ficar esse valor.
O ideal também seria a criação de outros profiles para cada um ter um valor diferente, dependo das regras de segurança da empresa é claro... Mas, isto fica para outro post. :D

Mas, se tiverem pressa , segue aqui um bom link para estudo:
http://www.dartanghan.com.br/oracle-plsql/oracle-date-functions/

Vlw pessoal, estou voltando em 2012 com o mesmo problema de tempo de 2011, mas, assim que possível, estarei postando referente ao nosso objetivo maior que é a certificação ok?