- Este tópico contém 9 respostas, 6 vozes e foi atualizado pela última vez 14 anos, 12 meses atrás por
Peterson.
-
AutorPosts
-
22 de março de 2011 às 11:57 pm #98646
Anakim
ParticipanteO Oracle 10G limita o número de conexões? Se sim aonde eu posso ver esse limite?
23 de março de 2011 às 3:07 pm #98647marlontk
ParticipanteAté onde sei todo o banco de dados Oracle possui um limite de conexões(process), o default do Oracle é 150 podendo ser dimensionado na criação da base ou posteriormente.
sql para ver o limite de conexões
select name,value from v$parameter where upper(name) like ‘PROCESS%’;
ou
show parameter processSQL> select name,value from v$parameter where upper(name) like ‘PROCESS%’;
NAME
VALUE
processes
150Segue comando para alterar
alter system set PROCESSES=numero de conexoes scope=spfile;
shutdown immediate;
startup;
Atenção isso irá fazer com que o banco seja reiniciado.23 de março de 2011 às 3:46 pm #98649Peterson
ParticipanteAqui na empresa mesmo o número de processos default dos bancos era 500 e recentemente tive de aumentar para 800…
23 de março de 2011 às 4:35 pm #98652Anakim
ParticipanteRodei o seguinte comando:
show parameter process;E vi que o número de process é 150, como foi falado.
O bom que o marlontk respondeu o que eu iria perguntar em seguida, mas fiquei com algumas dúvidas:
1- Tem como aumentar o número de porcess só para um usuário ou essa alteração é para toda instância?
2- Quando eu aumento o número de process eu não preciso alterar outro parâmetro como memória? Pergunto isso porque eu uso muito o postgresql e quando eu preciso aumentar o número de conexão dele eu preciso modificar 3 parâmetros.
23 de março de 2011 às 5:10 pm #98654hudsona
ParticipanteGalera é preciso prestar atenção também aos parâmetros derivados do process, nesse caso o mais importante é o sessions.
A Definição do parametro já diz tudo :
“… SESSIONS specifies the maximum number of sessions that can be created in the system…”
O parametro sessions geralmente é calculado da seguinte forma :
SESSIONS= (1.1 * PROCESSES) + 5
E posteriormente o sessions também tem alguns parâmetros derivados:
Observe na documentação:
http://download.oracle.com/docs/cd/B105 … REFRN10197E respondendo a primeira pergunta, sim é possivel limitar o numero de sessoes de um usuario, basta alterar o resource_limit da sua instância para true e criar um profile com limit sessions_per_user = (numero que voce precisa)
E setar esse profile criado para o usuário.
23 de março de 2011 às 6:37 pm #98659Anakim
ParticipanteFiz uma busca sobre assunto como sugerido pelo hudsona.
Pela documentação do oracle quando eu aumento o PROCESS eu tenho que aumentar as SESSIONS e quando eu aumento as SESSIONS eu tenho que aumentar a ENQUEUE_RESOURCES e as TRANSACTIONS.
No Oracle 10gR2, que é a versão que eu estou usando, o ENQUEUE_RESOURCES ficou obsoleto, conforme pode ser visto no trecho abaixo, retirado da documentação:
Note that ENQUEUE_RESOURCES is obsolete as of Oracle Database 10g release 2 (10.2).
Ficaram faltando verificar os seguintes parâmetros SESSION e TRANSACTION.
Para verificar os mesmos eu usei duas queries, uma foi dada pelo marlontk, que acabaram me gerando uma dúvida, segue a mesma.
Quando executo a query sugerida pelo marlontk:
select * from v$parameter where name = 'sessions' or name like '%enqueue_resources%' or name = 'processes' or name = 'transactions';
Eu obtenho os seguintes valores:
processes = 150;
sessions = 170;
transactions = 187;E quando eu executo a seguinte query:
select * from v$resource_limit;Eu obtenho os seguintes valores:
process = 150;
sessions = 170;
transactions = unlimited;A dúvida é: qual o limite real de transactions? 187 ou unlimited?
23 de março de 2011 às 7:13 pm #98661burga
ParticipanteSó acrescentando, o que vai limitar o número de processos é a memória do servidor… Se você tiver memória disponível, pode ter quantos processos quiser. Com exceção do XE, que se limita somente a 1GB.
23 de março de 2011 às 11:56 pm #98668fsitja
ParticipanteGeralmente se o banco está com problema de recursos com excesso de conexões, a aplicação está abrindo conexões acima do que seria necessário. Talvez valha a pena avaliar como a aplicação utiliza as conexões.
Por exemplo… no pior caso, ela pode estar abrindo uma conexão por requisição enviada no frontend, e isso não vai ter limite que corrija. Ideal é usar um connection pool aí e otimizar os recursos, o que vai melhorar muito a performance da aplicação.
24 de março de 2011 às 5:27 pm #98677Anakim
ParticipanteA aplicação já usa um connection pool, justamente para limitar o número de conexões que a aplicação abre com o banco. Ao meu ver toda aplicação teria que usar um pool de conexão. 😀
Em relação a memória da máquina, ela está tranquila tenho 16 gigas livre de um total de 24 gigas.
Voltando a dúvida, eu achei a resposta da mesma. Quando eu executo a seguinte query:
select * from v$resource_limitEu tenho o seguinte campo MAX_UTILIZATION no retorno, ou seja, o total já usado em um determinado momento. E em transactions eu tenho o seguinte valor 1585, com isso posso concluir que o que está configurado em TRANSACTIONS é UNLIMITED.
Agora vou partir para alguns testes e ir mudando os parâmetros discutidos aqui.
24 de março de 2011 às 6:55 pm #98684Peterson
ParticipanteEssa view vai ajudá-lo a encontrar quais parâmetros precisam ser alterados. Tive um problema com overhead de processos e foi pesquisando nessa view que resolvi.
-
AutorPosts
- Você deve fazer login para responder a este tópico.