sábado, 16 de outubro de 2010

Administrando uma instância Oracle

Olá pessoal, andei um pouco sumido do Blog nestes últimos meses, devido a algumas mudanças e a dedicação em novos projetos na Empresa na qual trabalho o tempo foi muito curto e não consegui me dedicar a tantas tarefas. Mas agora decidi me dedicar mais a este blog, afim de passar informações, dicas e atualizações sobre tecnologia e principalmente assuntos relacionados a Oracle e Linux.

Vamos então ao meu segundo post, neste irei passar algumas informações básicas da administração de uma instância Oracle. Basicamente na linguagem do Oracle podemos definir que uma instância Oracle é a combinação da memória e dos processos que são parte de uma instalação em funcionamento.

Existem algumas considerações que devemos ter conhecimentos, como:

- Não há necessidade de que uma instância exista sem um banco de dados, claro, isso é possível sim, podemos criar uma instância e ela não ter acesso a nenhum arquivo do banco de dados. Contudo essa não é uma prática usual. O procedimento para criação de uma banco de dados é isso, primeiramente criamos uma instância do Oracle e logo depois é criado o banco de dados dentro desta mesma instância.

- Existe uma opção do Oracle chamada ASM (Automatic Storage Management), esta utiliza uma instância, mas não esta associada a um banco de dados.

- Pode-se dizer que um banco de dados pode existir sem uma instância, mais isso seria totalmente inútil.

- Uma instância acessa somente um banco de dados por vez, podemos dizer que é possível configurar múltiplas instâncias para acessar o mesmo grupo de arquivos ou um banco de dados. Quando uma instância é criada, o próximo procedimento é fazer a montagem desta instância em um banco de dados. Uma instância pode montar apenas um banco de dados por vez.

Agora irei detalhar um pouco alguns dos principais comandos para administrar uma instância do Oracle. Lembrando que os comandos a seguir foram executados em ambiente Linux, mais nada impede de executar em ambiente Windows também.

Bom, mãos na massa.

#1. Parar o Servidor Oracle

#1.1. Parar Enterprise Manager
emctl stop dbconsole

#1.2. Parar o Banco
sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit

#1.3. Parar Listener
lsnrctl stop


#2. Iniciar o Servidor Oracle

#2.1 Iniciar Listener
lsnrctl start

#2.2 Iniciar o Banco
sqlplus / as sysdba
SQL> startup
SQL> exit

#2.3 Iniciar Enterprise Manager
emctl start dbconsole


#3. Acessar Enterprise Manager no Servidor
firefox http://localhost:1158/em


#4. Acessar SQLPlus

#4.1. Acessar SQLPlus com Autenticação Normal
sqlplus system/oracle

#4.2. Acessar SQLPlus com Autenticação pelo Arquivo de Senhas
sqlplus sys/oracle as sysdba
sqlplus sys/oracle as sysoper

#4.3. Acessar SQLPlus com Autenticação pelo Sistema Operacional
sqlplus / as sysdba
sqlplus / as sysoper


#5. Acessar iSQLPlus

#5.1. Iniciar iSQLPlus
isqlplusctl start

#5.2. Parar iSQLPlus
isqlplusctl stop

#5.3. Acessar iSQLPlus no Servidor
firefox http://localhost:5560/isqlplus


#6. Manipular Arquivos de Inicialização (conectado no SQLPlus)

#6.1. Visualizar todos os parâmetros da Instância
show parameters

#6.2. Visualizar parâmetro da Instância
show parameters sga_target
show parameter pga_aggregate_target

#6.3. Alterar parâmetros no SPFile
alter system set sga_target=256M scope=memory;
show parameter sga_target;
alter system set pga_aggregate_target=70M scope=spfile;
show parameter pga_aggregate_target;
shutdown immediate
startup
show parameter sga_target;
show parameter pga_aggregate_target;
alter system set sga_target=50M scope=both;
alter system set sga_target=50M scope=spfile;
shutdown immediate
startup

#6.4. Criar PFile com base no SPFile para edição manual
create pfile='$ORACLE_HOME/dbs/initorcl.ora' from spfile='$ORACLE_HOME/dbs/spfileorcl.ora';

#6.5. Editar arquivo de parâmetros no Sistema Operacional (Terminal do Linux)
vim $ORACLE_HOME/dbs/initorcl.ora

#6.6. Criar SPFile com base no PFile editado manualmente
create spfile='$ORACLE_HOME/dbs/spfileorcl.ora' from pfile='$ORACLE_HOME/dbs/initorcl.ora';
startup
show parameter sga_target;
show parameter pga_aggregate_target;


#7. Processos de Inicialização do Servidor Oracle (conectado no SQLPlus)

#7.1. Iniciar em modo NOMOUNT
shutdown immediate
startup nomount

#7.2. Alterar para modo MOUNT
alter database mount;

#7.3. Iniciar em modo MOUNT
shutdown immediate
startup mount

#7.4. Alterar para modo OPEN para somente leitura
alter database open read only;

#7.5. Alterar para modo OPEN
shutdown immediate
startup mount
alter database open;

#7.7. Habilitar modo OPEN restrito
alter system enable restricted session;

#7.8. Desabilitar modo OPEN restrito
alter system disable restricted session;

#7.9. Iniciar em modo OPEN restrito e desabilitar modo restrito;
shutdown immediate
startup restrict
alter system disable restricted session;
commit;

#7.10. Iniciar em modo OPEN utilizando um pfile específico
shutdown immediate
startup pfile='$ORACLE_HOME/dbs/initorcl.ora'
shutdown immediate
startup


#8. Shutdown Limpo (conectado no SQLPlus)

#8.1. Opção Normal
shutdown
startup

#8.2. Opção Transactional
shutdown transactional
startup

#8.3. Opção Immediate
shutdown immediate
startup

#9. Shutdown Sujo (conectado no SQLPlus)

#9.1. Opção Abort
shutdown abort
startup

#9.2. Reinicialização forçada
startup force


#10. Acessar Log de Alerta

#10.1. Localizar diretório do log de alerta (conectado no SQLPLus)
show parameter background_dump_dest;

#10.2. Visualizar log de alerta (no terminal do linux)
vim /alert_orcl.log


#11. Acessar views dinâmicas de desempenho (conectado no SQLPLus)

#11.1. Ajustar SQLPlus
set linesize 200;
set pagesize 100;

#11.2. Consultar views dinâmicas
select * from v$fixed_table;

#11.3. Consultar sessões correntes
col machine format a10;
col program format a30;
col username format a10;
col osuser format a10;
select machine, program, username, osuser from v$session where username is not null;

#11.4. Consultar instruções SQL que demoram mais de um segundo
col sql_text format a50;
col executions format 99999;
select sql_text, executions from v$sql where cpu_time > 1000000;

#11.5. Consultar informações da sga
select * from v$sgainfo;

#11.6. Consultar informações dos processos servidores
col username format a10;
col program format a30;
select pid, username, program, pga_used_mem, pga_alloc_mem, pga_freeable_mem, pga_max_mem from v$process;

Bom pessoal, é basicamente isso que podemos fazer quando estamos administrando uma instância Oracle, espero que tenham gostado do post e até o próximo.

PS.: agradeçimentos ao meu professor e DBA Oracle Adriano Sousa Santos por ter ministrado esta aula para mim e ao meu grande amigo também DBA Oracle David Ricardo por ter indicado o livro "Oracle 11g for Dummies" para mim e por estar sempre me ajudando e apoiando no dia a dia.

Nenhum comentário:

Postar um comentário