- Este tópico contém 9 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por
Rodrigo Almeida.
-
AutorPosts
-
25 de junho de 2009 às 1:04 am #87501
airoosp
ParticipanteBoa tarde,
Alguém sabe informar o que é License high water mark pois o servidor fez o boot sozinho, não consegui entender o motivo. Analisando o alert.log via as linhas abaixo:
.
.
.
Wed Jun 24 09:15:08 2009
Shutting down instance: further logons disabled
Shutting down instance (immediate)
License high water mark = 99
All dispatchers and shared servers shutdown
Wed Jun 24 09:21:08 2009
PMON failed to acquire latch, see PMON dump
PMON failed to acquire latch, see PMON dump
.
.
.Depois do banco estar baixado, o servidor foi reiniciado e o banco voltou a funcionar mas estava estranho. Foi executado o shutdown novamente e startup e o banco voltou ao normal.
Pode ser algum conflito com o Windows que casou as mensagens que estão no alert?
Obrigado.
Airton
25 de junho de 2009 às 3:37 pm #87503Marcio68Almeida
ParticipanteVocê estourou o número de conexões concorrentes, que no seu servidor está em 99.
Quando caiu o banco, haviam muitos processos que não foram finalizados, por isso pareceu estranho quando subiu pela primeira vez.
Quando subiu pela segunda vez, haviam menos ou nenhum processo não finalizado, por sso pareceu normal.
1. Aumente o número de conexões simultâneas.
2. Veja os parâmetros license_max_warnings e license_max_sessions, e altere de acordo com sua necessidade.
3. Nunca dê shutdown abort, abort é caso extremo, veja todos os processos que estão rodando e tente sempre com o immediate.25 de junho de 2009 às 6:21 pm #87504airoosp
ParticipanteBom dia,
O shutdown com abort não utilizei e sim o immediate, no curso que fiz no ano passado o instrutor comentou sobre isso o abort deverá ser a última opção resumindo melhor não usar.
O mais estranho foi que isso ocorreu de manhã por volta das 08:00hs e neste horário não há muitos usuários acessando o banco. O parâmetros que você disse estão configurados para 0.license_max_sessions integer 0
license_max_users integer 0
license_sessions_warning integer 0Versão do Oracle 9.2.0.7
Obrigado.
25 de junho de 2009 às 7:25 pm #87505David Siqueira
ParticipanteOlá desculpe a intromissão…
Você disse que não haviam muitos usuários, será que não haviam sessões perdidas ou Inativas em seu banco?…Em alguns casos isso se torna cumulativo e acabam gerando sempre algum tipo de stress, para tal a maioria usa PROFILES de banco limitando o uso de recursos e tempos de conexões ativas e inativas.
Abraço.
25 de junho de 2009 às 7:43 pm #87508airoosp
ParticipanteÉ verdade realmente haviam muitas conexões inativas, estou começando a entender melhor o funcionamento do Oracle, tem alguma forma de limpar estas conexões inativas?
Você sabe com funciona o parâmetro abaixo que esta no arquivo sqlnet.ora?
SQLNET.AUTHENTICATION_SERVICES = (NTS)
Obrigado.
Airton
25 de junho de 2009 às 8:29 pm #87511David Siqueira
ParticipanteOlha sua resposta ai brother:
[i]SQLNET.AUTHENTICATION_SERVICES
PurposeUse the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.
DefaultNone
Values
Authentication Methods Available with Oracle Net Services:* none for no authentication methods. A valid username and password can be used to access the database. * all for all authentication methods * nts for Windows NT native authenticationAuthentication Methods Available with Oracle Advanced Security:
* kerberos5 for Kerberos authentication * cybersafe for Cybersafe authentication * radius for RADIUS authentication * dcegssapi for DCE GSSAPI authentication[/i]Com relação as sessões inativas por determinado tempo tem esse script aqui que uso para identifica-las e eliminalas diretamente no S.O:
set serveroutput on size 50000
declare
varIns varchar2(5);
varhost varchar2(15);
varVersao varchar2(30);
cursor c1 is (SELECT b.spid as processo
FROM v$session a, v$process b
WHERE a.paddr=b.addr and a.username is not null and trunc(a.logon_time) < trunc(sysdate));
regc1 c1%rowtype;
begin
select instance_name, host_name, version into varIns,varHost,varVersao from v$instance;
dbms_output.put_line ('HOSTNAME:' || varHost);
dbms_output.new_line;
open c1;
loop
fetch c1 into regc1;
exit when c1%notfound;
if (substr(varVersao,1,1)=8 or substr(varVersao,1,1)=9) then
dbms_output.put_line ('orakill ' || varIns || ' ' || regc1.processo);
else
dbms_output.put_line ('kill -9 ' || regc1.processo);
end if;
end loop;
close c1;
end;
Em caso de plataforma Windows você tem que usar o ORAKILL , um aplicativo externo que vem junto com o software de Banco de Dados, em caso de plataformas UNIX/LINUX, usamos o bom e velho KILL-9.
Esse script ira te fornecer exatamente o SPID do processo que precisa ser eliminado, o que torna mais fácil de eliminar apenas o necessário.
Abraço.
25 de junho de 2009 às 9:18 pm #87513Rodrigo Almeida
Participantehehehehehehehehe… esse sript que o David postou irá aparecer um Kill -9 para ti, pq tu está usando o Oracle 10g.
É que nesse script, aqui na empresa só temos 10g em Linux e 8i/9i em Windows, por isso o tratamento.
Arrume os IFs ou retire eles e coloque somente o DBMS_OUTPUT com o ORAKILL.
Abraços,
Rodrigo Almeida
25 de junho de 2009 às 9:20 pm #87514Rodrigo Almeida
ParticipanteSobre o problema, vejo que é melhor colocar alguns trechos do alert.log para pegar o erro.
Mas não esquenca o a marca d´água de licensas…
Abraços,
Rodrigo Almeida
25 de junho de 2009 às 9:28 pm #87517David Siqueira
ParticipanteVerdade Rodrigo hehehe…esqueci de mencionar a ele, bom pelo menos se você tiver apenas uma versão em várias plataformas serão acertos minimos hehehe…
Abraços.
25 de junho de 2009 às 9:35 pm #87522Rodrigo Almeida
Participantehehehehehe… verdade.
Pelo menos é só trocar um IF, não precisa trocar todo o conceito!
Mas é suave!
Abraços,
Rodrigo Almeida
-
AutorPosts
- Você deve fazer login para responder a este tópico.