sexta-feira, 30 de maio de 2008

Sessao Marcada Para Morrer, Para Sempre

Eis uma dica de como eliminar, em bancos de dados Oracle, sessões marcadas para morrer mas que nunca morrem.

Se você tem uma sessão de banco a qual teve de ser assassinada, mas continua agonizando por um longo período, acabe com ela executando o procedimento a seguir.

a) Na plataforma Unix:

SQL> SELECT spid
FROM v$process
WHERE NOT EXISTS ( SELECT 1
FROM v$session
WHERE paddr = addr);


$ kill

b) Na plataforma Windows:

SQL> SELECT spid, osuser, s.program
FROM v$process p, v$session s
WHERE p.addr=s.paddr;

Mate o processo executando no prompt DOS o comando abaixo.

c:\> orakill

A razão pela qual uma sessão continue agonizando e porque ela está aguardando uma resposta do cliente SQLNet. Quando isto acontece o servidor informa que sua sessão foi assassinada e encerra a sessão. O processo pode manter-se ativo até que o cliente encerre o aplicativo.


O PMON pode apropriar-se da sessão enquanto realiza tarefas encerramento da sessão recém assassinada. Se essas tarefas não puderem ser executadas imediatamente, ele manterá a sessão sob um falso processo, enquanto executa outras tarefas.

Encontrando o spid, você pode efetivar a morte do processo. Antes de encerrar um processo, certifique-se de que esse seja um processo dedicado, aqueles denominados "oracle (local=NO)". Certifique-se, também, de que não é um processo do tipo ora_d000_, ora_s000_, ora_pmon_ .

sexta-feira, 16 de maio de 2008

ASM - Como Mudar Nomes de Arquivos de Dados

Nomes de arquivos de banco de dados podem ser modificados como qualquer outro tipo de arquivo. Em ASM, esta modificação é realizada através da criação de apelidos.

Mudança de nomes em arquivos de banco de dados é necessário quando há migrações de estrutura ou mudança no padrão de nomenclaturas.


Para mudar nomes de datafiles, utilize o procedimento abaixo.

Instância ASM:

1- Crie nomes de diretórios dentro de grupo de discos.

alter diskgroup dg_name
add directory '+dg_name/new_dir_name';

alter diskgroup
dg_name
add directory '+dg_name/new_dir_name/datafile';


2- Crie os novos apelidos dos arquivos de dados.

alter diskgroup dg_name
add alias '+dg_name/db_name/datafile/old_data_file_name'
for '
+dg_name/db_name/datafile/new_data_file_name';

Instância de banco:

3- Inicie o banco no modo monta e modifique o nome do arquivo de dados. Para realizar alterações em aquivos de dados, permanentes ou temporário, é necessário que o banco tenha sido iniciado no modo monta. O banco também pode ser iniciado no modo abre, mas os arquivos de dados a serem renomeados tem que estar no modo desligado.

startup mount

alter database rename
file '
+dg_name/db_name/datafile/old_data_file_name'
for '
+dg_name/db_name/datafile/new_data_file_name';

Nota: Não é possível modificar nomes de arquivos gerados pelo ASM. A única alternativa é alterar ou criar apelidos para os arquivos de dados.

alter diskgroup
dg_name rename
alias '+
dg_name/db_name/datafile/old_data_file_name'
to '+
dg_name/db_name/datafile/new_data_file_name';