Jota Comm

SQL and Linux

  • Agenda

    Outubro 2008
    S T Q Q S S D
        Nov »
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
  • Twitter

    • Assistindo CSI 1 week ago
    • Curtindo um feriado, lendo email e batendo papo 1 week ago
    • Eh hora de ir dormir após ver o Grêmio "bater" no Palmeirinha... 1 week ago
    • Pronto para ver o Grêmio dar um baile no Palmeirinha... 1 week ago
    • Navengando em busca de notícias interessantes na web. 1 week ago

Posts de Outubro 25th, 2008

Removendo roles no PostgreSQL

Publicado por jotacomm em 25/10/2008

Olá, pessoal

Vou falar um pouco sobre a remoção de roles no PostgreSQL. Para remover um role conteiner ou login usamos o comando DROP ROLE.

Sintaxe completa: DROP ROLE [ IF EXISTS ] name [, ...].

Observação: A opção IF EXISTS está disponível a partir da versão 8.2 e é opcional.

Quando queremos remover uma role ou uma lista de roles podemos fazer:

DROP ROLE IF EXISTS role1;

ou

DROP ROLE role1;

DROP ROLE IF EXISTS role1,role2,role3;

ou

DROP ROLE role1,role2,role3;

O IF EXISTS verifica se a role existe. Se sim, remove a role. Caso contrário apresenta uma mensagem informando que a role não existe. Sem essa verificação seria apresentada uma mensagem de erro.

Vamos a prática:

foo=# DROP ROLE jotacomm;
DROP ROLE

Porém, em alguns casos pode ser gerado o seguinte erro:

DROP ROLE foo;

ERROR:  role “foo” cannot be dropped because some objects depend on it
DETAIL:  owner of table tabela2
owner of table tabela1

O erro apresentado acima indica que a role não pode ser excluída pois existem objetos que ela é dona (OWNER).

E como proceder nesta situação? Uma solução seria atribuir a propriedade do objeto para outra role. Por exemplo:

ALTER TABLE tabela1 OWNER TO bar;

ALTER TABLE tabela2 OWNER TO bar;

Depois da alteração é possível remover a role. No entanto, essa solução não é a mais adequada pelo fato de que se a role possuir vários objetos como: tabelas, seqüências, funções, esquemas dentre outros objetos este processo deve ser realizado para todos estes objetos.

Então podemos utilizar os comandos DROP OWNED ou REASSIGN OWNED. O DROP OWNED remove todos os objetos de propriedade de uma ou mais roles enquanto que o comando REASSIGN OWNED transfere a propriedade dos objetos de uma ou mais roles para uma outra role.

Os comandos DROP OWNED e REASSIGN OWNED estão disponíveis a partir da versão 8.2.

Sintaxe completa:

DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]

REASSIGN OWNED BY old_role [, ...] TO new_role

Dessa forma o processo fica mais fácil e rápido. Tá, mas como funciona isso na prática?

Exemplo do uso do DROP OWNED.

foo=# DROP OWNED BY foo;
DROP OWNED

Como a execução do comando DROP OWNED todos os objetos da role foo foram deletados.

Então agora eu posso usar o DROP ROLE para remover a role.

foo=# DROP ROLE foo;
DROP ROLE

Exemplo do uso do REASSIGN OWNED.

foo=# REASSIGN OWNED BY bar TO postgres;
REASSIGN OWNED

Como a execução do comando REASSIGN OWNED todos os objetos de propriedade da role bar foram transferidos para a role postgres.

Então agora eu posso usar o DROP ROLE para remover a role.

foo=# DROP ROLE bar;
DROP ROLE

Fiquem a vontade para comentários.

[]s

Enviado em PostgreSQL | Tagged: , , , , | Deixar um comentário »

Removendo arquivos com exceção do mais recente

Publicado por jotacomm em 25/10/2008

Olá, pessoal

Quando trabalhamos com os arquivos de log do PostgreSQL, por exemplo, dependendo de como está a configuração (arquivo postgresql.conf) pode ser que sejam gerados vários arquivos de log. Se temos um hd não tão grande isso pode ser um problema.

Descrevo aqui uma forma de remover os arquivos mais antigos e deixar apenas o último arquivo pois o PostgreSQL está escrevendo nele. Uma boa prática poderia ser antes de remover estes arquivos gerar uma cópia em um outro computador ou a gravação dos mesmos em um cd ou dvd.

O comando abaixo faz isso: Apaga os arquivos deixando apenas o arquivo mais recente.

ls -t | grep -v `ls -t | head -n 1` | xargs rm -v

Um exemplo na prática:

O diretório de logs possui os seguintes arquivos:

postgresql-2008-10-24_231829.log

postgresql-2008-10-25_151120.log

postgresql-2008-10-25_151359.log

Executando:

ls -t | grep -v `ls -t | head -n 1` | xargs rm -v

removido `postgresql-2008-10-25_151120.log’
removido `postgresql-2008-10-24_231829.log’

Restou apenas o arquivo postgresql-2008-10-25_151359.log que é o arquivo mais atual.

Fiquem a vontade para comentários.

[]s

Enviado em PostgreSQL/Linux | Tagged: , | 2 Comentários »

Instalando o PostgreSQL no Windows Vista

Publicado por jotacomm em 25/10/2008

Olá, pessoal

Para instalar o PostgreSQL no Windows Vista é necessário desabilitar UAC (User Account Control – Controle de Contas de Usuário (Painel de Controle – Contas de Usuário – Ativar/Desativar controle de contas de usuário)).

Depois de realizada a alteração você precisa reiniciar o Windows.

Pronto. Agora você já pode instalar o seu PostgreSQL. Depois de instalado você pode ativar novamente o UAC.

Fiquem a vontade para comentários.

[]s

Enviado em PostgreSQL | Tagged: , | 2 Comentários »