segunda-feira, 27 de dezembro de 2010

"Windows cannot load the user's profile but has logged you on with the default profile for the system"

Mensagem de erro quando se tenta entrar num Windows Server 2003: "Windows cannot load the user's profile but has logged you on with the default profile for the system".



Basicamente o Windows não consegue fornecer mais recursos ao perfil com o qual se está a tentar entrar. Para resolver entrar com um utilizador com permissões de administrador e efectuar o seguinte:

  1. Abrir o regedit
  2. Ir à chave do registo:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
  3. Criar uma nova entrada DWORD Value.
  4. Alterar o nome para PoolUsageMaximum.
  5. Modificar o valor da PoolUsageMaximum, inserindo 60 de tipo Decimal.
  6. Se a entrada PagedPoolSize existir passar para o passo seguinte. Caso contrário criar com os seguintes valores::
    1. Nova entrada DWORD Value.
    2. Modificar o nome para PagedPoolSize.
  7. Alterar o valor de PagedPoolSize inserindo ffffffff de tipo hexadecimal.
  8. Sair do editor do registo e reiniciar o computador.

segunda-feira, 20 de dezembro de 2010

REGEX - Remoção de linhas duplicadas

Partindo do pressuposto que o ficheiro está organizado por ordem alfabética basta correr a seguinte regex para encontrar as linhas duplicadas:

^(.*)(\r?\n\1)+$

Para substituir as múltiplas linhas por uma só basta usar

$1

A sintaxe usada é a do JEDIT.

quinta-feira, 16 de dezembro de 2010

ORA-01591: lock held by in-doubt distributed transaction TEXTO

A resolução deste problema é simples, desde que tenham o sistema que usa as tabelas em baixo.

Este problema aconteceu-me ao tentar apagar uns registos de uma dada tabela. Para alguns registos o Oracle estava sempre a dar este erro: ORA-01591: lock held by in-doubt distributed transaction TEXTO. Sabendo que o sistema que usava as tabelas estava em baixo, era impossível no momento da remoção dos registos haver algo a efectuar uma transacção.

O TEXTO no erro ORA-01591, indica qual é a identificação do lock.

Para resolver o problema basta executar:

rollback force 'TEXTO';

Tomar em atenção que se está a forçar a terminação de uma transacção. Apenas efectuar isto se tiverem a certeza de que ocorreram problemas algures no tempo, e que a transacção ficou pendurada. No caso acima descrito era impossível haver transacção a acontecer, pois o sistema estava em baixo.

Dependendo da carga e do rollback necessário, poderá acontecer que o Oracle demore algum tempo até terminar o rollback.

Obtenção de todos os privilégios em Tabelas para um dado Utilizador em Oracle

Como system, por exemplo, correr a seguinte query:

SELECT *
FROM DBA_TAB_PRIVS
WHERE grantee = 'UTILIZADOR_PRETENDIDO'

terça-feira, 14 de dezembro de 2010

sábado, 11 de dezembro de 2010

Altear a shell por defeito para um utilizador em Linux

Como root editar o ficheiro /etc/passwd

Ir até à linha que contém o utilizador pretendido, e alterar no fim para a shell pretendida.
No caso abaixo alterou-se para a bash.

liferay:x:1000:1000::/home/liferay:/bin/bash