set nocount on
declare @comando varchar(255)
declare @comando1 varchar(255)
declare @comando2 varchar(255)
declare @comando3 varchar(255)
declare @comando4 varchar(255)
declare @database varchar(100)
Print 'Espaco Alocado no database'
exec sp_spaceused
declare teste cursor for
SELECT distinct TABLE_CATALOG FROM INFORMATION_SCHEMA.TABLES
open teste
fetch next from teste into @database
while (@@fetch_status=0)
begin
EXEC sp_dboption @database, 'trunc. log on chkpt.', 'TRUE'
EXEC sp_dboption @database, 'auto create statistics', 'FALSE'
EXEC sp_dboption @database, 'auto update statistics', 'FALSE'
EXEC sp_dboption @database, 'ANSI null default', 'TRUE'
print 'Verificando estrututura no Banco '+ @database
set @comando1 ='dbcc checkdb ('+@database+')'
exec (@comando1)
print '---------------------------------------------'
print ' '
print 'Verificando espaco alocado no Banco'+@database
set @comando2= 'dbcc checkalloc ('+@database+')'
exec (@comando2)
print '---------------------------------------------'
print ' '
print 'Alocacao '+ @database
set @comando3= 'dbcc newalloc ('+@database+')'
exec (@comando3)
print ' '
fetch next from teste into @database
end
close teste
deallocate teste
Print 'Final da Manuntencao'
print '*******************************************************************************************'
print '**********************************************************************************'
print '***************************************************************'
Mostrando postagens com marcador Manutenção. Mostrar todas as postagens
Mostrando postagens com marcador Manutenção. Mostrar todas as postagens
sábado, 29 de agosto de 2015
SQL - Manutenção.sql
set nocount on
declare @comando varchar(255)
declare @comando1 varchar(255)
declare @comando2 varchar(255)
declare @comando3 varchar(255)
declare @comando4 varchar(255)
declare @tabela varchar (100)
declare @database varchar (225)
declare base cursor for
SELECT distinct TABLE_CATALOG FROM INFORMATION_SCHEMA.TABLES
open base
fetch next from base into @database
declare tabelas cursor for
select name from sysobjects where type='U' order by name
open tabelas
fetch next from tabelas into @tabela
while @@fetch_status=0
begin
print 'Reindexando os indices da Tabela '+ @tabela
set @comando = 'dbcc dbreindex ('+@tabela+')'
exec (@comando)
print '---------------------------------------------'
print ' '
print 'Verificando estrututura da tabela '+ @tabela
set @comando1 ='dbcc checktable ('+@tabela+')'
exec (@comando1)
print '---------------------------------------------'
print ' '
print 'Verificando espaco alocado na tabela'+@tabela
set @comando2= 'dbcc updateusage ('+@database+','+@tabela+')'
exec (@comando2)
print '---------------------------------------------'
print ' '
fetch next from tabelas into @tabela
end
Print 'Final da Manuntencao'
print '*******************************************************************************************'
print '**********************************************************************************'
print '***************************************************************'
close base
close tabelas
deallocate tabelas
deallocate base
declare @comando varchar(255)
declare @comando1 varchar(255)
declare @comando2 varchar(255)
declare @comando3 varchar(255)
declare @comando4 varchar(255)
declare @tabela varchar (100)
declare @database varchar (225)
declare base cursor for
SELECT distinct TABLE_CATALOG FROM INFORMATION_SCHEMA.TABLES
open base
fetch next from base into @database
declare tabelas cursor for
select name from sysobjects where type='U' order by name
open tabelas
fetch next from tabelas into @tabela
while @@fetch_status=0
begin
print 'Reindexando os indices da Tabela '+ @tabela
set @comando = 'dbcc dbreindex ('+@tabela+')'
exec (@comando)
print '---------------------------------------------'
print ' '
print 'Verificando estrututura da tabela '+ @tabela
set @comando1 ='dbcc checktable ('+@tabela+')'
exec (@comando1)
print '---------------------------------------------'
print ' '
print 'Verificando espaco alocado na tabela'+@tabela
set @comando2= 'dbcc updateusage ('+@database+','+@tabela+')'
exec (@comando2)
print '---------------------------------------------'
print ' '
fetch next from tabelas into @tabela
end
Print 'Final da Manuntencao'
print '*******************************************************************************************'
print '**********************************************************************************'
print '***************************************************************'
close base
close tabelas
deallocate tabelas
deallocate base
SQL - Performance
Dicas de Performance no Servidor do SQL Server
1. Servidor Dedicado
Como hoje em dia há uma grande quantidade de programas do tipo Client/Server (inclusive o SQL Server) e o ideal seria dedicarmos uma máquina somente para rodar o serviço de banco de dados. Programas servidores de Web, FTP, e-mail, proxy, DNS, DHCP, Impressão, Source Safe, Telnet, Firewall, etc.., devem estar preferencialmente rodando em outra máquina que não seja a do banco de dados, pois estes serviços estarão competindo pelos mesmos recursos de hardware com o serviço do banco de dados.
Eu sei, eu sei, nem sempre temos o luxo de possuir uma máquina que seja dedicada ao banco, mas sempre que possível procure limitar ao máximo o número de serviços que atendem a solicitação de usuários rodando ao mesmo tempo, principalmente em servidores de produção.
Também é importante dizer que todo o acesso via rede ao servidor de banco de dados deve ser extremamente limitado. Algumas empresas somente ligam o cabo de rede do servidor de banco de dados diretamente ao servidor de aplicação restringindo ainda mais o acesso ao servidor de banco de dados. Nem acesso a Internet é aconselhável se colocar em um servidor de banco de dados dedicado.
2. Anti-Vírus
Bom, para começar, devemos tocar cuidado com qualquer programa que está rodando ma mesma máquina que o servidor. Muitos programas parecem inofensivos a primeira vista, mas podem ter certeza quem eles vão roubar ciclos do processador quando estiverem rodando.
Os Anti-vírus são um caso a parte. Com a crescente ameaça destas pragas virtuais é muito difícil ficar livre de se pegar um vírus. Eu recomendo que se tenha instalado um bom anti-vírus no servidor de banco de dados mas procurem evitar ao máximo que este anti-vírus fique rodando como um serviço, pois neste caso a cada arquivo aberto pelo sistema operacional, uma varredura é feita degradando muito a performance e competindo com o banco de dados no acesso ao disco rígido da máquina, que é uma operação efetuada várias vezes pelo o banco de dados.
Veja bem pessoal, eu não estou dizendo que não devemos proteger nosso servidor com um anti-vírus. Mas também não podemos deixar que este programa não essencial atrapalhe a performance do banco de dados. É somente uma questão de conhecer um pouco sobre o anti-vírus escolhido e procurar desabilitar alguns recursos do mesmo que podem causar perda de performance no servidor.
3. Programas tipo Client
Este tópico me lembra uma ocasião em que fui verificar um problema na máquina de um amigo. Na máquina dele tinha tanto programa rodando ao mesmo tempo minimizado que a barra de tarefas (system tray) do Windows dele estava preenchida com ícones até a metade da tela! E olha que ele estava rodando com uma resolução pequena e com um monitor de 17 polegadas!
Falando sério agora, um servidor de banco de dados é uma máquina que não deve ser utilizada para brincadeira. Programas como ICQ, Morpheus, Kazaa, Real Audio, tradutor inglês-português, descanso de tela, driver do mouse ou teclado especial, etc..., devem ser COMPLETAMENTE eliminados do servidor. Geralmente estes programas são carregados no momento da inicialização do servidor (boot) e podem ser desabilitados de diversas maneiras. Eu costumo dizer que na barra de tarefas do Windows, ao lado do relógio só o mostrador de tráfego de rede e o gerenciador de tarefas (task manager), com a medição da performance, devem ser vistos.
Também é bom dar uma verificada em programas client como o do proxy, do firewall, do DNS, etc. Alguns destes programas realmente são necessários, mas deve-se fazer uma boa revisão no que deve estar instalado e rodando no servidor.
Eu particularmente procuro instalar o mínimo de programas no servidor. Nem o Office eu recomendo a instalação (mesmo por que ele consome muito espaço na HD) e também nenhum programa client de e-mail.
Resumindo: se você quiser um computador para rodar aquele server do Counter Strike, mesmo que seja somente durante o almoço, é melhor procurar outra máquina que não a do banco de dados!
4. Serviços
Também é extremamente importante uma boa olhada nos serviços que estão rodando no servidor. Podemos obter a lista dos serviços através do Painel de Controle (Control Panel), Ferramentas Administrativas (Administrative Tools) e no ícone Serviços (Services).
Se preocupe somente com aqueles marcados para a inicialização automática. Abaixo mostro alguns serviços (o nome deles está em português) que podem ser desabilitados, poupando memória. Mas atenção: sempre que foi fazer uma modificação no estado de um serviço procure verificar quais os efeitos colaterais que esta ação causará!
* Agendador de tarefas – Geralmente utilizado para a execução de programas como o Defrag ou o ScanDisk periodicamente. Pode ser desabilitado sem problemas.
* Spooler de impressão – Se você não deseja imprimir a partir desta estação, desabilite este serviço.
* Localizador de computadores – Geralmente não precisamos deste serviço que serve somente para localizar computadores na rede.
* Serviço RunAs – Somente habilite este serviço se for utilizar o utilitário de console RunAs. Se você nem sabe o que é isso, desabilite este serviço.
* Windows Installer – Confesso que este serviço as vezes me irrita! Em um servidor de banco de dados dedicado, onde raramente são instalados novos softwares, podemos desabilitar este serviço para não receber aquelas irritantes janelas de aviso de instalação...
* Gerenciador de discos lógicos e Serviço administrativo do gerenciador de disco lógico – Estes dois serviços servem somente para a formatação/alteração de uma partição dos discos rígidos do servidor. Como estes serviços somente são utilizados uma vez na vida e outra na morte, podemos desabilitá-los.
Aqui quero fazer um aviso importante: geralmente mexer em alguns serviços do Windows que não sabemos para que servem pode ser um mau negócio. Principalmente se for um serviço essencial... Por isso, todo cuidado é pouco! E sempre que um serviço que está rodando lhe parecer estranho, se informe pois pode ser até algo colocado por um Hacker!
Todos os serviços que forem desabilitados podem ser habilitados normalmente e vice e versa.
5. Verificando os processos.
Podemos ver quais processos estão rodando atualmente no Windows, assim como quanto de memória e de processador está sendo gasto em cada processo, através do Gerenciador de Tarefas (task manager) na aba processos. Para a galera que vem do Linux, é quase a mesma coisa que o comando ps. É muito importante sabermos o que está rodando no momento na máquina e ficarmos ligados nos processos, inclusive alterando a prioridade ou matar o processo, caso este esteja travado. Geralmente se um processo ficar ocupando muito do processador por um bom período de tempo, é provável que ele esteja “travado” e onerando a performance de todo o sistema.
6. Recursos do servidor
Abaixo eu mostro algumas dicas sobre como otimizar o uso de recursos da máquina servidora pelo Windows:
* Resolução da Máquina
O servidor de banco de dados não é uma máquina que deve ser utilizada diretamente na estação (geralmente o DBA faz administração remota, via Terminal Services ou VNC). Logo, não há razão para utilizar uma resolução boa, tanto de cor como de tamanho. Aconselho 800x600 com 16 cores, no máximo, para conservar memória.
* Compartilhamento
Procure evitar também muitos compartilhamentos de recursos. Se possível, remova os compartilhamentos padrão (como o C$ ou D$) como medida de segurança.
* Som
Elimine qualquer aplicativo/driver que necessite de som do servidor. Na maioria dos casos, nem há uma placa de som no servidor.
* Ícones no DeskTop
Diminua ao máximo a quantidade de ícones no Desktop, pois cada um deles ocupa a memória de vídeo e espaço em disco
* Proteção de Tela
Como não devemos utilizar a estação do servidor diretamente para acessá-lo (salvo em casos extremos), podemos desabilitar a proteção de tela. Uma boa idéia também é desligar o monitor e acabar economizando energia. É interessante também nem logarmos a estação, uma vez que o serviço do banco de dados pode ser configurado para a inicialização automática.
* Opções de Desempenho
Existe uma opção no Windows que dá prioridade aos programas que estão funcionando em background, como é o caso do SQL Server. Para habilitá-la vá em propriedades do sistema, escolha a aba avançado e clique no botão Opções de Desempenho. Escolha o check box Serviços em Segundo plano.
Fiquem atentos também ao valor estabelecido para a memória virtual do Windows.
* Internet e E-mail
Como já mencionado anteriormente, procure evitar que o servidor de banco de dados possua acesso à Internet e ao servidor de e-mail, para evitar uma brecha de segurança e para que não haja risco de contaminação com vírus via e-mail.
* IP Fixo
Como o servidor de banco de dados raramente deve ser reinicializado (a não ser em casos extremamente necessários) procure colocar um IP fixo no mesmo, evitando assim que o servidor faça um acesso para a obtenção de um IP dinâmico ao servidor de DHCP.
7. Dispositivos
Sempre que possível, procure não conectar nenhum dispositivo que não seja realmente necessário para o funcionamento do servidor, seja ele via porta serial, paralela, USB ou interno. Lembre-se também que a cada novo dispositivo plugado no computador um driver deve ser carregado na memória, consumindo assim mais recursos. Abaixo eu mostro uma lista de dispositivos que não são recomendados em um servidor de banco de dados:
* Placa de Som (Quem gostaria de ouvir música no servidor de banco de dados?)
* Placa de Vídeo 3D
* Scanner
* Zip Drive
* Impressora
* Câmera Digital
* Gravador de CD
* DVD
Por outro lado, é extremamente interessante que o servidor possua um leitor de CD comum (para instalação do software) e um dispositivo para backup de grande quantidade como um leitor de fita DAT, por exemplo. Isto sem contar a essencial placa de rede.
Dica retirada do site
http://www.imasters.com.br
1. Servidor Dedicado
Como hoje em dia há uma grande quantidade de programas do tipo Client/Server (inclusive o SQL Server) e o ideal seria dedicarmos uma máquina somente para rodar o serviço de banco de dados. Programas servidores de Web, FTP, e-mail, proxy, DNS, DHCP, Impressão, Source Safe, Telnet, Firewall, etc.., devem estar preferencialmente rodando em outra máquina que não seja a do banco de dados, pois estes serviços estarão competindo pelos mesmos recursos de hardware com o serviço do banco de dados.
Eu sei, eu sei, nem sempre temos o luxo de possuir uma máquina que seja dedicada ao banco, mas sempre que possível procure limitar ao máximo o número de serviços que atendem a solicitação de usuários rodando ao mesmo tempo, principalmente em servidores de produção.
Também é importante dizer que todo o acesso via rede ao servidor de banco de dados deve ser extremamente limitado. Algumas empresas somente ligam o cabo de rede do servidor de banco de dados diretamente ao servidor de aplicação restringindo ainda mais o acesso ao servidor de banco de dados. Nem acesso a Internet é aconselhável se colocar em um servidor de banco de dados dedicado.
2. Anti-Vírus
Bom, para começar, devemos tocar cuidado com qualquer programa que está rodando ma mesma máquina que o servidor. Muitos programas parecem inofensivos a primeira vista, mas podem ter certeza quem eles vão roubar ciclos do processador quando estiverem rodando.
Os Anti-vírus são um caso a parte. Com a crescente ameaça destas pragas virtuais é muito difícil ficar livre de se pegar um vírus. Eu recomendo que se tenha instalado um bom anti-vírus no servidor de banco de dados mas procurem evitar ao máximo que este anti-vírus fique rodando como um serviço, pois neste caso a cada arquivo aberto pelo sistema operacional, uma varredura é feita degradando muito a performance e competindo com o banco de dados no acesso ao disco rígido da máquina, que é uma operação efetuada várias vezes pelo o banco de dados.
Veja bem pessoal, eu não estou dizendo que não devemos proteger nosso servidor com um anti-vírus. Mas também não podemos deixar que este programa não essencial atrapalhe a performance do banco de dados. É somente uma questão de conhecer um pouco sobre o anti-vírus escolhido e procurar desabilitar alguns recursos do mesmo que podem causar perda de performance no servidor.
3. Programas tipo Client
Este tópico me lembra uma ocasião em que fui verificar um problema na máquina de um amigo. Na máquina dele tinha tanto programa rodando ao mesmo tempo minimizado que a barra de tarefas (system tray) do Windows dele estava preenchida com ícones até a metade da tela! E olha que ele estava rodando com uma resolução pequena e com um monitor de 17 polegadas!
Falando sério agora, um servidor de banco de dados é uma máquina que não deve ser utilizada para brincadeira. Programas como ICQ, Morpheus, Kazaa, Real Audio, tradutor inglês-português, descanso de tela, driver do mouse ou teclado especial, etc..., devem ser COMPLETAMENTE eliminados do servidor. Geralmente estes programas são carregados no momento da inicialização do servidor (boot) e podem ser desabilitados de diversas maneiras. Eu costumo dizer que na barra de tarefas do Windows, ao lado do relógio só o mostrador de tráfego de rede e o gerenciador de tarefas (task manager), com a medição da performance, devem ser vistos.
Também é bom dar uma verificada em programas client como o do proxy, do firewall, do DNS, etc. Alguns destes programas realmente são necessários, mas deve-se fazer uma boa revisão no que deve estar instalado e rodando no servidor.
Eu particularmente procuro instalar o mínimo de programas no servidor. Nem o Office eu recomendo a instalação (mesmo por que ele consome muito espaço na HD) e também nenhum programa client de e-mail.
Resumindo: se você quiser um computador para rodar aquele server do Counter Strike, mesmo que seja somente durante o almoço, é melhor procurar outra máquina que não a do banco de dados!
4. Serviços
Também é extremamente importante uma boa olhada nos serviços que estão rodando no servidor. Podemos obter a lista dos serviços através do Painel de Controle (Control Panel), Ferramentas Administrativas (Administrative Tools) e no ícone Serviços (Services).
Se preocupe somente com aqueles marcados para a inicialização automática. Abaixo mostro alguns serviços (o nome deles está em português) que podem ser desabilitados, poupando memória. Mas atenção: sempre que foi fazer uma modificação no estado de um serviço procure verificar quais os efeitos colaterais que esta ação causará!
* Agendador de tarefas – Geralmente utilizado para a execução de programas como o Defrag ou o ScanDisk periodicamente. Pode ser desabilitado sem problemas.
* Spooler de impressão – Se você não deseja imprimir a partir desta estação, desabilite este serviço.
* Localizador de computadores – Geralmente não precisamos deste serviço que serve somente para localizar computadores na rede.
* Serviço RunAs – Somente habilite este serviço se for utilizar o utilitário de console RunAs. Se você nem sabe o que é isso, desabilite este serviço.
* Windows Installer – Confesso que este serviço as vezes me irrita! Em um servidor de banco de dados dedicado, onde raramente são instalados novos softwares, podemos desabilitar este serviço para não receber aquelas irritantes janelas de aviso de instalação...
* Gerenciador de discos lógicos e Serviço administrativo do gerenciador de disco lógico – Estes dois serviços servem somente para a formatação/alteração de uma partição dos discos rígidos do servidor. Como estes serviços somente são utilizados uma vez na vida e outra na morte, podemos desabilitá-los.
Aqui quero fazer um aviso importante: geralmente mexer em alguns serviços do Windows que não sabemos para que servem pode ser um mau negócio. Principalmente se for um serviço essencial... Por isso, todo cuidado é pouco! E sempre que um serviço que está rodando lhe parecer estranho, se informe pois pode ser até algo colocado por um Hacker!
Todos os serviços que forem desabilitados podem ser habilitados normalmente e vice e versa.
5. Verificando os processos.
Podemos ver quais processos estão rodando atualmente no Windows, assim como quanto de memória e de processador está sendo gasto em cada processo, através do Gerenciador de Tarefas (task manager) na aba processos. Para a galera que vem do Linux, é quase a mesma coisa que o comando ps. É muito importante sabermos o que está rodando no momento na máquina e ficarmos ligados nos processos, inclusive alterando a prioridade ou matar o processo, caso este esteja travado. Geralmente se um processo ficar ocupando muito do processador por um bom período de tempo, é provável que ele esteja “travado” e onerando a performance de todo o sistema.
6. Recursos do servidor
Abaixo eu mostro algumas dicas sobre como otimizar o uso de recursos da máquina servidora pelo Windows:
* Resolução da Máquina
O servidor de banco de dados não é uma máquina que deve ser utilizada diretamente na estação (geralmente o DBA faz administração remota, via Terminal Services ou VNC). Logo, não há razão para utilizar uma resolução boa, tanto de cor como de tamanho. Aconselho 800x600 com 16 cores, no máximo, para conservar memória.
* Compartilhamento
Procure evitar também muitos compartilhamentos de recursos. Se possível, remova os compartilhamentos padrão (como o C$ ou D$) como medida de segurança.
* Som
Elimine qualquer aplicativo/driver que necessite de som do servidor. Na maioria dos casos, nem há uma placa de som no servidor.
* Ícones no DeskTop
Diminua ao máximo a quantidade de ícones no Desktop, pois cada um deles ocupa a memória de vídeo e espaço em disco
* Proteção de Tela
Como não devemos utilizar a estação do servidor diretamente para acessá-lo (salvo em casos extremos), podemos desabilitar a proteção de tela. Uma boa idéia também é desligar o monitor e acabar economizando energia. É interessante também nem logarmos a estação, uma vez que o serviço do banco de dados pode ser configurado para a inicialização automática.
* Opções de Desempenho
Existe uma opção no Windows que dá prioridade aos programas que estão funcionando em background, como é o caso do SQL Server. Para habilitá-la vá em propriedades do sistema, escolha a aba avançado e clique no botão Opções de Desempenho. Escolha o check box Serviços em Segundo plano.
Fiquem atentos também ao valor estabelecido para a memória virtual do Windows.
* Internet e E-mail
Como já mencionado anteriormente, procure evitar que o servidor de banco de dados possua acesso à Internet e ao servidor de e-mail, para evitar uma brecha de segurança e para que não haja risco de contaminação com vírus via e-mail.
* IP Fixo
Como o servidor de banco de dados raramente deve ser reinicializado (a não ser em casos extremamente necessários) procure colocar um IP fixo no mesmo, evitando assim que o servidor faça um acesso para a obtenção de um IP dinâmico ao servidor de DHCP.
7. Dispositivos
Sempre que possível, procure não conectar nenhum dispositivo que não seja realmente necessário para o funcionamento do servidor, seja ele via porta serial, paralela, USB ou interno. Lembre-se também que a cada novo dispositivo plugado no computador um driver deve ser carregado na memória, consumindo assim mais recursos. Abaixo eu mostro uma lista de dispositivos que não são recomendados em um servidor de banco de dados:
* Placa de Som (Quem gostaria de ouvir música no servidor de banco de dados?)
* Placa de Vídeo 3D
* Scanner
* Zip Drive
* Impressora
* Câmera Digital
* Gravador de CD
* DVD
Por outro lado, é extremamente interessante que o servidor possua um leitor de CD comum (para instalação do software) e um dispositivo para backup de grande quantidade como um leitor de fita DAT, por exemplo. Isto sem contar a essencial placa de rede.
Dica retirada do site
http://www.imasters.com.br
Oracle - Dicas para Criação / Manutenção de uma instância Oracle
Dicas para Criação / Manutenção de uma instância Oracle
(RM Sistemas)
O presente documento contém algumas
dicas para DBAs manterem suas instâncias Oracle em perfeito estado de
funcionamento.
As primeiras dicas referem-se a
parâmetros encontrados no arquivo init.ora, encontrado no diretório de
instalação da instância Oracle na máquina em questão.
Para alterar alguns deles (quando
possível), basta editar o arquivo em questão, salvá-lo e restartar a instância.
Quaisquer dúvidas podem ser
encaminhadas ao suporte da RM Sistemas através do mail (suporte@rm.com.br).
Tamanho do bloco Oracle
Este parâmetro deve ser configurado no momento
da criação da base de dados. Sugerimos a utilização de blocos de 8k
(DB_BLOCK_SIZE = 8192).
OBS: Note que o tamanho do bloco deve ser
informado em nº de bytes.
Caso a instância já esteja criada, pode-se
verificar a configuração deste parâmetro, editando-se o arquivo de parâmetros (init.ora) do Oracle e verificando o valor da variável DB_BLOCK_SIZE.
Uma outra alternativa para visualizar o valor
do parâmetro seria a utilização da ferramenta Instance Manager. Aqui, o
parâmetro pode ser visualizado através de:
Initialization
Parameters / Instance Specific
A alteração deste parâmetro só pode ser feita
caso a instância seja recriada.
Distribuição da memória disponível para o Oracle
Depois de determinada a quantidade de memória
que estará disponível para o Sistema Operacional e a quantidade que ficará
disponível para o Oracle, deve-se fazer a distribuição da memória disponível
para o Oracle.
o
SORT_AREA_SIZE
Deve-se configurar este parâmetro com grande
cautela, uma vez que ele reflete a quantidade de memória que cada conexão de usuário irá ter
disponível para operações de SORT.
Devemos levar em consideração também a
quantidade de memória fixa que cada conexão de usuário gasta (1,7 MB).
Sendo assim, o gasto de memória com conexões de
usuários em uma aplicação onde estejam abertas 10 sessões e o SORT_AREA_SIZE
esteja configurado com o valor de 1048576
(1MB) é:
10
* (1,7+1) = 27 MB.
OBS: Note que o valor do SORT_AREA_SIZE deve ser informado em nº de bytes.
O valor a ser configurado para este parâmetro
deve ser definido levando-se em consideração
o número de conexões simultâneas
no Oracle e a quantidade de memória disponínel para mesmo.
o
DB_BLOCK_BUFFER
Este parâmetro irá refletir a quantidade de
memória destinada ao Oracle que será utilizada para Cache de dados.
Este parâmetro deve ser configurado com o
número de blocos do Oracle que será utilizado para este Cache.
Sugerido:
60% da memória restante destinada ao Oracle destinada ao Cache de dados.
Como calcular o valor do parâmetro:
DB_BLOCK_BUFFER =
(M * 1048576) / B
Onde: M
= É a quantidade de memória ( em Mega bytes ) que deve ser destinada ao Buffer de Dados.
B= Tamanho do bloco de dados (em bytes)
utilizado pelo Oracle.
o
SHARED POOL
Este parâmetro irá refletir a quantidade de
memória destinada ao Oracle que será utilizada para o SHARED POOL.
Sugerido:
Restante da memória destinada ao Oracle (40%), destinada ao SHARED POOL.
O valor deste parâmetro deve ser determinado de
Bytes.
SHARED_POOL_SIZE = M
Onde: M=
Memória destinada ao SHARED POOL em bytes.
Tablespaces
Deve-se criar pelo menos uma TableSpace
distinta para cada finalidade: System, Dados,
Indices, Temp, Rollback, Redo.
É desejável também que os DataFiles destas
TableSpaces sejam distribuídos em discos diferentes, de forma a minimizar a
concorrência de acesso. Isto deve ser feito conforme a disponibilidade de
discos. Exemplo:
Cenário
1:
Um
disco:
System, Dados,
Iindices, Temp, Rollback , Redo no mesmo disco, mas em TableSpaces
diferentes.
Cenário
2:
Dois
discos:
1º
disco: Dados + Temp + Rollback
2º disco: System + Indices + Redo
CPU
Deve-se verificar costantemente a taxa de
utilização da CPU, a mesma não deve estar com taxa de utilização muito alta
durante a maior parte do período (90% de utilização).
Caso esteja utilizando mais de um processador
deve-se verificar se a carga da CPU está balanceada.
Para estas medições, pode se
utilizar a ferramenta Performance Monitor (no caso de servidores Windows
NT/2000).
COALESCE
Deve-se verificar periodicamente (mensalmente)
a fragmentação do espaço livre alocado
para cada TableSpace.
o
Pode-se
verificar tal fragmentação utilizando:
SELECT
TABLESPACE_NAME, TOTAL_EXTENTS , PERCENT_EXTENTS_COALESCED
FROM DBA_FREE_SPACE_COALESCED
WHERE PERCENT_EXTENTS_COALESCED <> 100
o
Para
efetuar a desfragmentação:
ALTER TABLESPACE tablespace COALESCE
Atualização de estatísticas
A rotina de atualização de estatísticas deve
ser agendada para execução diária..
Sugere-se o utilizar o Package DBMS_UTILITY
para fazer a atualização de estatísticas:
execute
DBMS_UTILITY.analyze_schema('RM','COMPUTE')
Para agendar a execução diária de estatísticas em um servidor que esteja
utilizando o Windows NT ou Windows 2000:
1º) crie um arquivo TXT com o seguinte
conteúdo:
execute DBMS_UTILITY.analyze_schema('RM','COMPUTE')
2º) Utilize o command prompt para agendar a
tarefa :
at 22:00 every:M,T,W,Th,F,S,Su cmd /c
"sqlplus rm/rm @d:\temp\script.txt"
O comando acima agenda a atualização de
estatíscas para ocorrer todos os dias às 22:00 horas. Considera-se que o
arquivo TXT criado no primeiro item é o d:\temp\script.txt
Indices
Os índices devem ser reconstruídos
periodicamente (mensalmente) , ou após periodo de grande “deleção” dos mesmos.
Para a verificação do percentual de linhas
deletadas em um determinado índice utilize:
1º) Analyze :
ANALYZE
INDEX indice VALIDATE STRUCTURE;
2º) Verificando o percetual de deleção:
SELECT LF_ROWS , DEL_LF_ROWS
FROM INDEX _STATS
OBS: Caso 30% das linhas em folhas
(LF_ROWS) tenham sido deletados (DEL_LF_ROWS), o índice deve ser reconstruído.
3º) Reconstrução do índice:
ALTER INDEX indice REBUILD tablespace.
Para reconstruir o índice, durante o
REBUILD deve haver espaço disponível
para a coexistência dos dois índices (antigo e novo).
O comando abaixo gera um script para a
reconstrução de todos os índices da base de dados:
SELECT 'ALTER INDEX ' || INDEX_NAME ||
' REBUILD TABLESPACE RM_INDICES; '
FROM USER_INDEXES
Este script deve ser executado em um momento em que não haja acesso à
base de dados.
Export / Import
O Export e Import da base de dados deve ser
feito periodicamente com finalidade de reorganizar os dados dentro da base de
dados, desfragmentar e resolver casos de linhas Migradas.
Sugere-se fazer a Exportação / Importação da
base de dados de 2 em 2 meses.
Passos para a execução do Export / Import
§ Export da base.
§ Backup físico da base
§ Drop do Schema
§ Import da base
OBS: Semanalmente sugere-se verificar o número de linhas MIGRADAS na base
de dados. Caso o número esteja muito alto, deve-se fazer o Export / Import da
base.
Para verificar o número de linhas MIGRADAS
utilize:
SELECT
TABLE_NAME, CHAIN_CNT
FROM USER_TABLES
ORDER BY CHAIN_CNT DESC
OBS: A coluna CHAIN_CNT, reflete
não apenas o número de linhas migradas, mas o processo de Export / Import irá
atacar apenas este problema.
ALERT
O ALERT dever ser verificado diariamente .
Deve-se verificar se existem mensagens de erro do tipo ORA-00600 e /ou
ORA-01578 , que indicam erros internos do Oracle ou blocos corrompidos.
Assinar:
Postagens (Atom)