domingo, 20 de setembro de 2015

Aumentar Tablespace Utilizando o Enterprise Manager 12C (OEM12C)


Olá a todos,

Alem de verificarmos as tablespaces de forma rapida e de varios alvos,com o Enterprise Manager, tambem podemos aumentar o datafile ou inserir um novo,facilita muito o trabalho do DBA no dia a dia.

Segue o passo a passo;


1 - Logado no OEM12C, selecione a opção Alvos > Banco de Dados;




1.1 - Essa opção leva a lista de banco de dados gerenciados pelo Enterprise Manager 12c,selecione o alvo que deseja efetuar a modificação.



2- Selecione a opção Administração > Armazenamento > Tablespace;





3 - Esta particularmente é umas das telas que mais gosto no OEM12c, aqui temos as informações de espaço,tipo,tamanho  e espaço utilizado da tablespace;



3.1 - Selecione a Tablespace qual você quer aumentar


4 - Na tela abaixo, temos a informação do data file,qual o tamanho dele atualmente,o diretório que se encontra, o tamanho utilizado e se esta habilitada a expansão automática;

Você tem duas alternativas, expandir o data file, clicando sobre o nome dele, ou adicionar um novo data file;


5 - Na tela abaixo, eu criei um novo datafile,observe uma coisa muito importante o OEM não esta criando o meu datafile no mesmo diretório que ja esta os antigos,isso é muito perigoso,pois quando rodamos um backup dependendo da ferramenta,pode ocorrer erros e uma possível ruptura dos dados;



Após inserir os dados solicitados, você tem três opções, mostrar SQL ( onde aparece o código SQL para inserir diretamente por linha de comando), você pode cancelar, ou simplesmente clicar em OK (se clicar em OK ele vai confirmar os dados e executar)


Mostrar SQL





E pronto,espero ter ajudado.


Boa Sorte DBAs.


Bjs

Mari

quinta-feira, 3 de setembro de 2015

ORA-32001: write to SPFILE request but no SPFILE specified at startup


Esse erro ocorre quando o SPFILE não foi configurado para ser utilizado no banco de dados. |Antes da correção do erro vamos ver o que é SPFILE e PFILE.

Alem do Control files o Oracle tem dois tipos de arquivos de parâmetros que são lidos na inicilização do banco de dados,caso não encontre os arquivos a inicialização falha.

PFILE 

O PFILE é um arquivo texto, dentro dele estão guardados os parâmetros de configuração do banco de dados. Estes parâmetros informam a quantidade de memória a ser alocada, onde estão os arquivos do banco de dados e onde gravar os arquivos necessários ao funcionamento do banco. Como o PFILE é um arquivo de texto puro, ele pode ser facilmente editado no VI do UNIX ou no Notepad do Windows. Normalmente ele tem o nome de init.ora, onde SID é a identificação de seu banco de dados, exemplo se seu SID é MDB  então seu PFILE será nomeado como initmdb.ora


SPFILE

Diferente do PFILE, o SPFILE é um arquivo binário e seu conteúdo não pode ser editado. Para verificar se ele existe, use o comando:


SHOW PARAMETER SPFILE;

Ele não pode ser editado diretamente como o PFILE, porem com o comando ALTER SYSTEM você pode modificar os parametros, a maior vantagem de uso do SPFILE é que ele é incluido no backup do RMAN toda vez que é modificado e essas modificações são efetuadas com o banco aberto,porem o correto é reiniciar a intância assim que modificar o parametro.



Corrigindo o ORA-32001


1 - Verifique se o SPFILE esta sendo usado;

show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string

Podemos ver que o value esta em branco, isso indica que o spfile não foi criado.

2 - Crie um SPFILE;

create pfile from spfile;


3 - shutdown immediate
     startup
     
4 - Repita o comando do passo 1 e verifique se o value esta preenchido.

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
                                                 /db_1/dbs/spfileprodnew.ora


Boa Sorte DBAs

Bjs

Mari







ORA-00020 : maximum number os processes exceeded


Este erro pode causar sérios problemas em um ambiente de produção, uma vez que na maioria das vezes requer um shutdown para resolver.
O peso do problema é que que os processos de parâmetro foi definido muito baixo no arquivo de parâmetro. Pode ser também que você calculou o valor do parâmetro corretamente, mas os usuários não são desligar de suas sessões e assim estão segurando processos e de ter atingido o limite.

O parâmetro processos especifica o número máximo de processos do usuário do sistema operacional que pode se conectar simultaneamente ao Banco Oracle. Seu valor deve permitir  todos os processos em segundo plano, processos de fila de trabalho e os processos de execução paralela. 

O número de processos em segundo plano de  um banco de dados depende da versão e recursos que você usar. 

É importante não definir esse parâmetro para um valor ridiculamente alto, como a 10000 quando você não terá mais de 1000 usuários simultâneos. À medida que cada processo iniciado é alocado memória e se você definir o parâmetro muito alto, você pode receber um ORA-00371: não o suficiente erro da memória pool compartilhado quando você tenta iniciar o banco de dados.

Portanto, se você receber um chamado onde os usuários reclamam de um ORA-00020 ou se você ver o erro no seu log de alerta, o que deve fazer? Se for um ambiente de produção e você quer evitar um shutdown, você pode começar por matar sessões inativas usando a seguinte consulta para determinar as sessões inativas:


SELECT USERNAME, SID, SERIAL#, STATUS FROM V$SESSION WHERE STATUS = ‘INACTIVE’;


Em seguida execute a seguinte Query para matar a sessão;


ALTER SYSTEM KILL SESSION ’7,15′; (Where 7 is the SID and 15 is the SERIAL#)

A correção acima só é possível se você mesmo é capaz de garantir uma conexão. Se você já estava conectado como SYSDBA, em seguida, a sessão será suficiente, mas se não você terá que matar um processo para obter-se conectado.

Fazê-lo no sistema operacional da seguinte forma:

ps -ef |grep oracleMDB1 (Onde oracleMDB1 é o SID do banco de dados)

O Resultado é esse: 

oracle 4144 1 0 05:36 ? 00:00:00 ora_w000_MDB1


Proximo passo é matar a sessão:


kill -9 4144 (4144 é o ID do Processo)

Isso vai matar o processo e emitir um ORA-03135: conexão perdida mensagem de erro contato quando o usuário tenta acessar a sessão. O problema aqui é que você não pode ter certeza se o processo estava ativo ou não.

Finalmente, se você matar processos suficientes e precisa aumentar o valor dos processos, em seguida, faça o seguinte:

Login sysdba

Verifique o valor dos parametros;

show parameter sessions; 
show parameter processes;
show parameter transactions;


Se você tem a intenção de aumentar o numero de processos, você tambem terá que modificar o numero de sessões e transações.

Para não colocar qualquer numero a Oracle indica uma conta simples para definir esses parâmetros;

processes=x
sessions=x*1.1+5
transactions=sessions*1.1

Definido o valor será necessário apenas modificar o parametro se você utiliza o SPfiles;

alter system set processes=xxx scope=spfile;
alter system set sessions=xxx scope=spfile;
alter system set transactions=xxx scope=spfile;

shutdown immediate 
startup


Boa Sorte DBAs

Bjs

Mari