Ola Pessoal..
Irei dar uma dica sobre com o utilizar o ADDM para Criação de um relatório par análise do Banco de Dados e depois como podemos utilizar o SQL Tunnig Advisor para gerar recomendações de ajustes para o Banco.
Lembre-se mais informações é só consultar os documentos fornecidos pela Oracle.
Vamos lá ........
1-Verificar o DB time do banco de dados :
Quick Tip : O db time é um valor que o Oracle calcula para indicar o tempo cumulativo que é gasto no processamento das requisições feitas pelos usuários no banco de dados.
select sum(value) "DB time” from v$sess_time_model
where stat_name='DB time';
2-Execute o Script awrrpt.sql para informações dos Snapshots contidos no AWR que serão utilizados para criação do relatório do ADDM :
SQL>@?/rdbms/admin/awrrpt.sql
3-Executar o Script para Criacão e Geração do Relatório ADDM para gerar análises sobre os Diagnosticos no Banco de Dados :
SQL>@?/rdbms/admin/addmrpt.sql
4-Criar uma tarefa com o SQLTUNE para as recomendação fornecida pelo ADDM :
DECLARE
l_sql_tune_task_id VARCHAR2(100);
BEGIN
l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
begin_snap =>'26',
end_snap => '64',
sql_id => 'b6usrg82hwsa3',
scope=> DBMS_SQLTUNE.scope_comprehensive,
time_limit => 60,
task_name => 'tarefa_AWR_tuning_task');
DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
END ;
/
5-Executar a Tarefa criada acima.
EXEC DBMS_SQLTUNE.execute_tuning_task(task_name =>'tarefa_AWR_tuning_task');
6- Verificar o Status da tarefa :
SELECT task_name, status FROM dba_advisor_log WHERE owner ='SYS';
tarefa_AWR_tuning_task
7-Verificar Recomendações da tarefa criada pelo SQL TUNNIG Advisor :
SELECT DBMS_SQLTUNE.report_tuning_task('tarefa_AWR_tuning_task')
AS recomendacao FROM dual;
8-Dropar a Tarefa.
BEGIN
DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'tarefa_AWR_tuning_task' );
END;
/
quinta-feira, 19 de maio de 2011
Excluir um Sql Tunning Set
Bom dia Pessoal ..
Não Acredito , Você criou um Sql Tunning Set (Conjunto de Ajuste Sql) para análisar a performance dos Sql's no seu banco de dados e esqueceu como exclui-lo ...Bammmmmmmmmmm.
Não se desespere aqui vai mais uma dica rapída de sua companheira ......
O procedimento DROP_SQLSET é utilizado para dropar um STS ( Sql Tunning Set ) que não será necessário.
Por exemplo
BEGIN
DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'conj_sql_tunning' );
END;
/
Valeu ......
Fiquem com Deus ..
Não Acredito , Você criou um Sql Tunning Set (Conjunto de Ajuste Sql) para análisar a performance dos Sql's no seu banco de dados e esqueceu como exclui-lo ...Bammmmmmmmmmm.
Não se desespere aqui vai mais uma dica rapída de sua companheira ......
O procedimento DROP_SQLSET é utilizado para dropar um STS ( Sql Tunning Set ) que não será necessário.
Por exemplo
BEGIN
DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'conj_sql_tunning' );
END;
/
Valeu ......
Fiquem com Deus ..
terça-feira, 17 de maio de 2011
Utilizando SQL Tunning Advisor com uma declaração Sql.
Ola Pessoal .....Belezinha..
Hoje irei dar uma dica rapída sobre o Assitente de Ajuste Sql ( SQL Tunning Advisor)
Ele é utilizado para ajudar os DBA`s a otimizar , e realizar ajustes nas querys do banco de dados e surgiu com a versão 10g do Oracle.
Lembre-se sempre pesquizem o material da Oracle para Mais informações.
Eu utilizei o Oracle 11g como ambiente de teste.
Referencias:http://www.oracle-base.com/articles/10g/AutomaticSQLTuning10g.php
Mãos a Obra ....
1-Executar o script para Criacao da tabela de Planos.
SQL> @?/RDBMS\ADMIN\utlxplan.sql;
SQL> desc plan_table
2-Executar explain de determinada declaração:
SQL> SET TIMING ON -- Para verificarmos o tempo de execução
SQL>explain plan SET STATEMENT_ID=’ID’ for Select * From scott.emp ;
SQL> SET TIMING OFF
3-Visualize as saida da tabela de planos com a o pacote dbms_xplan:
select * from TABLE(dbms_xplan.display);
4-Conceder privilégio para que um usuário possa utilizar o Advisor de Auste SQL
CONN sys/password AS SYSDBA
GRANT ADVISOR TO scott;
CONN scott/tiger
5-Criar uma tarefa para executar o Advisor
SQL> DECLARE
l_sql VARCHAR2(500);
l_sql_tune_task_id VARCHAR2(100);
BEGIN
l_sql := 'SELECT * FROM emp';
l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
sql_text=> l_sql,user_name => 'SCOTT',SCOPE => DBMS_SQLTUNE.scope_comprehensive,
time_limit => 60,task_name => 'emp_tuning_task');
DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
END ;
/
PL/SQL procedure successfully completed.
6-Com a tarefa de ajuste definida o próximo passo é executá-lo usando o procedimento EXECUTE_TUNING_TASK:
SQL> EXEC DBMS_SQLTUNE.execute_tuning_task(task_name =>'emp_tuning_task');
PL/SQL procedure successfully completed.
Quick Tip:Durante a fase de execução você pode querer fazer uma pausa e reiniciar a tarefa, cancelar ou reiniciar a tarefa de permitir que ele seja re-executado
a-Interromper e retomar uma tarefa de afinação
EXEC DBMS_SQLTUNE.interrupt_tuning_task (task_name => 'emp_tuning_task');
EXEC DBMS_SQLTUNE.resume_tuning_task (task_name => 'emp_tuning_task');
b-Cancelar uma tarefa
EXEC DBMS_SQLTUNE.cancel_tuning_task (task_name => 'emp_tuning_task');
c-Redefinir uma tarefa de ajuste que permite que ele seja re-executada.
EXEC DBMS_SQLTUNE.reset_tuning_task (task_name => 'emp_dept_tuning_task');
7-O status da tarefa de ajuste pode ser monitorado usando a visão DBA_ADVISOR_LOG:
SELECT task_name, status FROM dba_advisor_log WHERE owner ='SCOTT';
8-Depois que a tarefa de ajuste foi executado com êxito as recomendações podem ser exibidas usando a função REPORT_TUNING_TASK:
SET LONG 10000;
SET PAGESIZE 1000
SET LINESIZE 200
SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations FROM dual;
SET PAGESIZE 24
SQL> SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations
2 FROM DUAL;
9-Após a sessão de ajuste a tarefa de ajuste pode ser eliminada utilizando o procedimento DROP_TUNING_TASK:
BEGIN
DBMS_SQLTUNE.drop_tuning_task (task_name => 'emp_tuning_task');
END;
/
Bom Valeu ......Fiquem com Deus .
Hoje irei dar uma dica rapída sobre o Assitente de Ajuste Sql ( SQL Tunning Advisor)
Ele é utilizado para ajudar os DBA`s a otimizar , e realizar ajustes nas querys do banco de dados e surgiu com a versão 10g do Oracle.
Lembre-se sempre pesquizem o material da Oracle para Mais informações.
Eu utilizei o Oracle 11g como ambiente de teste.
Referencias:http://www.oracle-base.com/articles/10g/AutomaticSQLTuning10g.php
Mãos a Obra ....
1-Executar o script para Criacao da tabela de Planos.
SQL> @?/RDBMS\ADMIN\utlxplan.sql;
SQL> desc plan_table
2-Executar explain de determinada declaração:
SQL> SET TIMING ON -- Para verificarmos o tempo de execução
SQL>explain plan SET STATEMENT_ID=’ID’ for Select * From scott.emp ;
SQL> SET TIMING OFF
3-Visualize as saida da tabela de planos com a o pacote dbms_xplan:
select * from TABLE(dbms_xplan.display);
4-Conceder privilégio para que um usuário possa utilizar o Advisor de Auste SQL
CONN sys/password AS SYSDBA
GRANT ADVISOR TO scott;
CONN scott/tiger
5-Criar uma tarefa para executar o Advisor
SQL> DECLARE
l_sql VARCHAR2(500);
l_sql_tune_task_id VARCHAR2(100);
BEGIN
l_sql := 'SELECT * FROM emp';
l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
sql_text=> l_sql,user_name => 'SCOTT',SCOPE => DBMS_SQLTUNE.scope_comprehensive,
time_limit => 60,task_name => 'emp_tuning_task');
DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
END ;
/
PL/SQL procedure successfully completed.
6-Com a tarefa de ajuste definida o próximo passo é executá-lo usando o procedimento EXECUTE_TUNING_TASK:
SQL> EXEC DBMS_SQLTUNE.execute_tuning_task(task_name =>'emp_tuning_task');
PL/SQL procedure successfully completed.
Quick Tip:Durante a fase de execução você pode querer fazer uma pausa e reiniciar a tarefa, cancelar ou reiniciar a tarefa de permitir que ele seja re-executado
a-Interromper e retomar uma tarefa de afinação
EXEC DBMS_SQLTUNE.interrupt_tuning_task (task_name => 'emp_tuning_task');
EXEC DBMS_SQLTUNE.resume_tuning_task (task_name => 'emp_tuning_task');
b-Cancelar uma tarefa
EXEC DBMS_SQLTUNE.cancel_tuning_task (task_name => 'emp_tuning_task');
c-Redefinir uma tarefa de ajuste que permite que ele seja re-executada.
EXEC DBMS_SQLTUNE.reset_tuning_task (task_name => 'emp_dept_tuning_task');
7-O status da tarefa de ajuste pode ser monitorado usando a visão DBA_ADVISOR_LOG:
SELECT task_name, status FROM dba_advisor_log WHERE owner ='SCOTT';
8-Depois que a tarefa de ajuste foi executado com êxito as recomendações podem ser exibidas usando a função REPORT_TUNING_TASK:
SET LONG 10000;
SET PAGESIZE 1000
SET LINESIZE 200
SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations FROM dual;
SET PAGESIZE 24
SQL> SELECT DBMS_SQLTUNE.report_tuning_task('emp_tuning_task') AS recommendations
2 FROM DUAL;
9-Após a sessão de ajuste a tarefa de ajuste pode ser eliminada utilizando o procedimento DROP_TUNING_TASK:
BEGIN
DBMS_SQLTUNE.drop_tuning_task (task_name => 'emp_tuning_task');
END;
/
Bom Valeu ......Fiquem com Deus .
quinta-feira, 5 de maio de 2011
Upgrade do Oracle 10.2.0.4 para 11g Release 11.1.6.0
Oi Pessoal ...Que saudades .....Esta vida corrida , mas beleza estamos juntos...
Hoje irei passar mais uma dica rapída para aqueles momentos em que esquecemos os passos necessários para realizar um Upgrade no Oracle.
Eu sempre repito essas frases "Pesquizem a documentação da Oracle ". A intenção aqui é relembrar passos rapídos em ocasiões que exigem agilidades.
O ambiente utilizado é o Red Hat Enterprise Linux 5 como o Oracle 10.2.0.4 instalado.
Vamos lá tirar poeira do cérebro.kkkkkkkkkkkkk
I-Pré Upgrade
1-Determinar o Caminho de atualizção (Qual versão Oracle será atualizado)
2-Escolha Um Método de Atualização:
Irei realizar o método Manual
3-Escolha um novo Diretório para a Nova Versão do Oracle e Instale o Oracle 11G:
Quick Tip:Você não pode instalar o novo software para o mesmo diretório home do Oracle , a menos que você esteja instalando uma versão do Oracle Database 11g patchset.
4-Realizar Um Backup da base de Dados que será atualizada , caso queira fazer um Restore se as coisas derem errado.
a. rman "target / nocatalog"
b. Issue the following RMAN commands:
RMAN> run
{
allocate channel c1 type disk;
backup database format 'db_%u_%d_%s';
backup format 'log_t%t_s%s_p%p';
BACKUP CURRENT CONTROLFILE TO 'save_controlfile_location';
(archivelog all);
}
Quick Tip: Se não utiliza o Rman faça um Backup a Frio com os comando do sistema operacional.
Quick Tip: Desenvolver um Plano de Testes para seu Upgrade , Não Use o ambiente de Produção.
5-Copie o script utlu111i.sql que esta lolizado no ORACLE_HOME do 11G para o ORACLE_HOME
do 10G e execute ele com previlégio sysdba na instancia do Oracle 10g.
Quick Tip:Este script ira lhe mostrar o que deverá ser atualizado no 10G antes da realização do upgrade .
SQL> SPOOL upgrade_info.log
SQL> @utlu111i.sql
SQL> SPOOL OFF
Após verificar a saída do script será necessário realizar algumas alterações recomendadas veja algumas destas ações abaixo:
A - Remova os Parâmetros Obsoletos e ajuste os parâmetros depreciados.
B- Assegure que o parâmetro COMPATIBLE esta apropriadamente configurado para Database 11.1.
C-Ajuste O valor dos parâmetros de configuração para no mínimo mostrado no pré configuração
D-Assegure que todos os caminhos foram especificados nos arquivos de Parâmetros.
6-Copie as configurações do arquivo ORACLE_HOME que esta sendo atualizado para o ORACLE_HOME do Oracle Database 11g Release 1: (Faça sempre um backup destes arquivos antes de qualquer alteração)
ex: Spfile , Init.ora,Orapwd , Listener.ora,TnsNames.Ora etc...
II-Upgrade
Quick Tip: Parem todos os processos Oracle.
7-Siga os seguintes passos:
a -Set seu ORACLE_SID corretamente.
b-O arquivo oratab deverá estar apontado para Oracle Database 11g Release (11.1) home.
c- A seguinte variável de ambiente deve apontar para os diretórios do Oracle Database 11g Rel.1
ORACLE_HOME
PATH
d-Alguns Scripts Clients que utiliza o valor do Oracle_Home deve apontar para o novo ORACLE_HOME.
8-Logar No sistema:
Logue no sistema com o dono do diretório ORACLE_HOME Oracle Database 11g Release (11.1)
9-No prompt , mude para o diretório ORACLE_HOME/rdbms/admin
10-Start O SQL*Plus
11-Conect a Instância como usuário com previlégio SYSDBA.
12-Start na Instancia o comando
SQL> STARTUP UPGRADE
a-Execute o script
SQL> SPOOL upgr.log
SQL> @catupgrd.sql
SQL>SPOOL OFF
13-Após a execução do script reinicie a instância
SQL> STARTUP
III-Pos-Upgrade
14-Execute o script pré upgrade para verificar se tudo esta correto:
SQL> @utlu111s.sql
15-Caso queira atualizar os dados de baselines execute o seguinte script:
SQL> @rdbms/admin/catuppst.sql
16-Execute o Script abaixo para compilar os objetos inválidos do banco de dados.
a-SQL> @utlrp.sql
b-Verifique se todos os objetos estão validos :
SQL> SELECT count(*) FROM dba_invalid_objects;
SQL> SELECT distinct object_name FROM dba_invalid_objects;
17-Caso use o Enterprise Manager , vc tera qua atualiza-lo:
$ emca -upgrade db
18- Atualize o Catalogo ro RMAN :
% rman CATALOG rman/rman@orcl
RMAN> UPGRADE CATALOG
entre com o comando UPGRADE CATALOG novamente para confirmar a atualização do Catálago.
RMAN> UPGRADE CATALOG
19-Verifique se esta tudo ok:
SQL> select comp_name , version , status from dba_registry;
Bom espero que ajude.
Referencias : http://download.oracle.com/docs/cd/B28359_01/server.111/b28300/toc.htm
Obrigado a todos.......
Hoje irei passar mais uma dica rapída para aqueles momentos em que esquecemos os passos necessários para realizar um Upgrade no Oracle.
Eu sempre repito essas frases "Pesquizem a documentação da Oracle ". A intenção aqui é relembrar passos rapídos em ocasiões que exigem agilidades.
O ambiente utilizado é o Red Hat Enterprise Linux 5 como o Oracle 10.2.0.4 instalado.
Vamos lá tirar poeira do cérebro.kkkkkkkkkkkkk
I-Pré Upgrade
1-Determinar o Caminho de atualizção (Qual versão Oracle será atualizado)
2-Escolha Um Método de Atualização:
Irei realizar o método Manual
3-Escolha um novo Diretório para a Nova Versão do Oracle e Instale o Oracle 11G:
Quick Tip:Você não pode instalar o novo software para o mesmo diretório home do Oracle , a menos que você esteja instalando uma versão do Oracle Database 11g patchset.
4-Realizar Um Backup da base de Dados que será atualizada , caso queira fazer um Restore se as coisas derem errado.
a. rman "target / nocatalog"
b. Issue the following RMAN commands:
RMAN> run
{
allocate channel c1 type disk;
backup database format 'db_%u_%d_%s';
backup format 'log_t%t_s%s_p%p';
BACKUP CURRENT CONTROLFILE TO 'save_controlfile_location';
(archivelog all);
}
Quick Tip: Se não utiliza o Rman faça um Backup a Frio com os comando do sistema operacional.
Quick Tip: Desenvolver um Plano de Testes para seu Upgrade , Não Use o ambiente de Produção.
5-Copie o script utlu111i.sql que esta lolizado no ORACLE_HOME do 11G para o ORACLE_HOME
do 10G e execute ele com previlégio sysdba na instancia do Oracle 10g.
Quick Tip:Este script ira lhe mostrar o que deverá ser atualizado no 10G antes da realização do upgrade .
SQL> SPOOL upgrade_info.log
SQL> @utlu111i.sql
SQL> SPOOL OFF
Após verificar a saída do script será necessário realizar algumas alterações recomendadas veja algumas destas ações abaixo:
A - Remova os Parâmetros Obsoletos e ajuste os parâmetros depreciados.
B- Assegure que o parâmetro COMPATIBLE esta apropriadamente configurado para Database 11.1.
C-Ajuste O valor dos parâmetros de configuração para no mínimo mostrado no pré configuração
D-Assegure que todos os caminhos foram especificados nos arquivos de Parâmetros.
6-Copie as configurações do arquivo ORACLE_HOME que esta sendo atualizado para o ORACLE_HOME do Oracle Database 11g Release 1: (Faça sempre um backup destes arquivos antes de qualquer alteração)
ex: Spfile , Init.ora,Orapwd , Listener.ora,TnsNames.Ora etc...
II-Upgrade
Quick Tip: Parem todos os processos Oracle.
7-Siga os seguintes passos:
a -Set seu ORACLE_SID corretamente.
b-O arquivo oratab deverá estar apontado para Oracle Database 11g Release (11.1) home.
c- A seguinte variável de ambiente deve apontar para os diretórios do Oracle Database 11g Rel.1
ORACLE_HOME
PATH
d-Alguns Scripts Clients que utiliza o valor do Oracle_Home deve apontar para o novo ORACLE_HOME.
8-Logar No sistema:
Logue no sistema com o dono do diretório ORACLE_HOME Oracle Database 11g Release (11.1)
9-No prompt , mude para o diretório ORACLE_HOME/rdbms/admin
10-Start O SQL*Plus
11-Conect a Instância como usuário com previlégio SYSDBA.
12-Start na Instancia o comando
SQL> STARTUP UPGRADE
a-Execute o script
SQL> SPOOL upgr.log
SQL> @catupgrd.sql
SQL>SPOOL OFF
13-Após a execução do script reinicie a instância
SQL> STARTUP
III-Pos-Upgrade
14-Execute o script pré upgrade para verificar se tudo esta correto:
SQL> @utlu111s.sql
15-Caso queira atualizar os dados de baselines execute o seguinte script:
SQL> @rdbms/admin/catuppst.sql
16-Execute o Script abaixo para compilar os objetos inválidos do banco de dados.
a-SQL> @utlrp.sql
b-Verifique se todos os objetos estão validos :
SQL> SELECT count(*) FROM dba_invalid_objects;
SQL> SELECT distinct object_name FROM dba_invalid_objects;
17-Caso use o Enterprise Manager , vc tera qua atualiza-lo:
$ emca -upgrade db
18- Atualize o Catalogo ro RMAN :
% rman CATALOG rman/rman@orcl
RMAN> UPGRADE CATALOG
entre com o comando UPGRADE CATALOG novamente para confirmar a atualização do Catálago.
RMAN> UPGRADE CATALOG
19-Verifique se esta tudo ok:
SQL> select comp_name , version , status from dba_registry;
Bom espero que ajude.
Referencias : http://download.oracle.com/docs/cd/B28359_01/server.111/b28300/toc.htm
Obrigado a todos.......
"A busca pelo conhecimento é o princípio da sabedoria"
Michelle Ramos
quarta-feira, 6 de abril de 2011
Criando um Catálago de Recuperação para o Rman
Olá Amigos ...
Prontos para outra dica Rapída ? Vamos lá
1-Criar uma Base de Dados Para o Rman, utilizando os Scripts gerados pelo DBCA
2- vamos criar todos os objetos e configurações necessários para nosso ambiente de RMAN.
A- Tarefa - Criação da Tablespace do Catalogo
SQL > create tablespace RMAN
2 datafile '/u01/app/oracle/oradata/rman/rman_01.dbf' size 100M
3 permanent
4 online
5 extent management local autoallocate
6 segment space management auto
3- Tarefa - Criação do usuário RMAN
SQL>create user RMAN
2 identified by imasters
3 default tablespace RMAN
4 temporary tablespace TEMP
4-Tarefa - Permissões ao usuário RMAN a role recovery_catalog_owner tem que estar setada como default role padrão
SQL> grant connect, resource, recovery_catalog_owner to rman;
5-Tarefa - Criação do Catálogo
Para criar o catálogo, devemos sair do SQL*PLUS e ir para as linhas de comando e acessar a ferramenta RMAN propriamente dito.
[oracle@serverdb dbs]$ rman catalog 'rman/imasters@rman';
RMAN> create catalog tablespace "RMAN";
RMAN> exit
6-Registrar as instancias no Catalago de Backup :
[oracle@localhost ~]$ rman catalog rman/rman@rman target sys/sys@orcl
Recovery Manager: Release 10.2.0.4.0 - Production on Sun Mar 20 13:58:57 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1273394171)
connected to recovery catalog database
RMAN> register database ;
Prontos para outra dica Rapída ? Vamos lá
1-Criar uma Base de Dados Para o Rman, utilizando os Scripts gerados pelo DBCA
2- vamos criar todos os objetos e configurações necessários para nosso ambiente de RMAN.
A- Tarefa - Criação da Tablespace do Catalogo
SQL > create tablespace RMAN
2 datafile '/u01/app/oracle/oradata/rman/rman_01.dbf' size 100M
3 permanent
4 online
5 extent management local autoallocate
6 segment space management auto
3- Tarefa - Criação do usuário RMAN
SQL>create user RMAN
2 identified by imasters
3 default tablespace RMAN
4 temporary tablespace TEMP
4-Tarefa - Permissões ao usuário RMAN a role recovery_catalog_owner tem que estar setada como default role padrão
SQL> grant connect, resource, recovery_catalog_owner to rman;
5-Tarefa - Criação do Catálogo
Para criar o catálogo, devemos sair do SQL*PLUS e ir para as linhas de comando e acessar a ferramenta RMAN propriamente dito.
[oracle@serverdb dbs]$ rman catalog 'rman/imasters@rman';
RMAN> create catalog tablespace "RMAN";
RMAN> exit
6-Registrar as instancias no Catalago de Backup :
[oracle@localhost ~]$ rman catalog rman/rman@rman target sys/sys@orcl
Recovery Manager: Release 10.2.0.4.0 - Production on Sun Mar 20 13:58:57 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1273394171)
connected to recovery catalog database
RMAN> register database ;
terça-feira, 5 de abril de 2011
FlashBack Table e Flashback Drop
Olá Caros Amigos...
Continuando a nossa tragetória sobre as Técnologias de Flashback no Oracle, hoje eu irei passar-lhes dicas sobre mais dois tipos de Flashback .
Mãos a Obra!!!!
I-FLASHBACK TABLE
FlashBack Table permiti restaurar uma tabela sem a necessidde de um backup/restore do banco de dados.
Quando realizamos um restore da tabela todos os objetos associados para esta tabela , tais como indices, triggers , e constraints são restaurados também.
QUICK TIP: Se vc quer utilizar a tecnologia de flashback table é um boa pratica ajustar os parametros que manipulam o tablespace de Undo.
O tablespace de Undo contém os dados que serão usados para recuperacão da tabela .
Parametro UNDO_RETENTION especifica em segundos o default são 900 s (15 segundos) o tempo no qual os dados serão retidos , mas se alguma transação ativa usar todo tablespace de undo, então ele sera reutilizado e vc não poderá voltar a tabela. Para contornar esta situação o ideal é criar um tablespace de undo com a opção RETENTION GUARANTEE para garantir que os dados de undo não sejam reutilizados e respeite o parametro UNDO_RETENTION .
Veja um exemplo abaixo para criacão de um tablespace de undo :
SQL> CREATE UNDO TABLEAPCE undo_tbs
DATAFIEL ‘/u01/app/oracle/undo_tbs01.dbf’ SIZE 1 G
RETENTION GUARANTEE;
Vamos Lá:
Suponhamos que vc apagou determinada linhas de uma tabela por acidente e agora precisa recuperarar esta tabela ...
1-Habilite o movimento da linha
SQL> ALTER TABLE teste ENABLE ROW MOVEMENT;
2-Restaure a tabela para um determinado SCN.
SQL> FLASHBACK TABLE teste TO SCN 1743434;
OU
2.1-Restaure a tabela a um tempo no qual ela se encontrava correta.
SQL> FLASHBACK TABLE teste
TO TIMESTAMP
TO_TIMESTAMP(‘24-MAR-11 12:00:00’,’MM/DD/YY HH:MI:SS’);
3-Verifique se todas as linhas se encontram lá de novo.
II-FLASHBACK DROP
OBS : Nas versões anteriores do Oracle 10g o comando Drop table removia uma tabela da base permanentemente .
Com a Versão 10G as tabelas não serão mais removidas mais sim renomeadas e movidas para um objeto chamado de Recycle bin.
Vamos ver se isso é verdade :
Siaga os Passos abaixo:
1- Drop uma tabela .
SQL>Drop table teste ;
2-Faça uma pesquisa para verificar se a tabela ainda se encontra na recycle bin :
SQL> select object_name, original_name,
2 type, createtime, droptime
3 from user_recyclebin;
QUICK TIP : Quando a tabela é movida para a recyclebin (licheira) oracle lhe da um nome meio estranho, para visualizar o nome da tabela utilize a coluna original_name, na view user_recyclebin.
3-Para restaurar novamente a tabela utilize o seguinte comando:
SQL> flashback table “BIN$0+ktoVChEmXgNAAADiUEHQ==$0” to before drop; (nome que o oracle atribui a tabela)
ou
SQL> flashback table teste to before drop;
4-Para limpar a recyclebin execute o comando abaixo:
SQL> purge recyclebin;
5-Para limpar apenas um objeto da recyclebin utilize o comando abaixo:
SQL> purge table "BIN$0+ktoVChEmXgNAAADiUEHQ==$0";
QUICK TIP:Caso queira dropar a tabela permanentemente do banco de dados utilize o comando abaixo:
drop table teste purge ;
Obrigada e Até maisssssssssssss.......
Continuando a nossa tragetória sobre as Técnologias de Flashback no Oracle, hoje eu irei passar-lhes dicas sobre mais dois tipos de Flashback .
Mãos a Obra!!!!
I-FLASHBACK TABLE
FlashBack Table permiti restaurar uma tabela sem a necessidde de um backup/restore do banco de dados.
Quando realizamos um restore da tabela todos os objetos associados para esta tabela , tais como indices, triggers , e constraints são restaurados também.
QUICK TIP: Se vc quer utilizar a tecnologia de flashback table é um boa pratica ajustar os parametros que manipulam o tablespace de Undo.
O tablespace de Undo contém os dados que serão usados para recuperacão da tabela .
Parametro UNDO_RETENTION especifica em segundos o default são 900 s (15 segundos) o tempo no qual os dados serão retidos , mas se alguma transação ativa usar todo tablespace de undo, então ele sera reutilizado e vc não poderá voltar a tabela. Para contornar esta situação o ideal é criar um tablespace de undo com a opção RETENTION GUARANTEE para garantir que os dados de undo não sejam reutilizados e respeite o parametro UNDO_RETENTION .
Veja um exemplo abaixo para criacão de um tablespace de undo :
SQL> CREATE UNDO TABLEAPCE undo_tbs
DATAFIEL ‘/u01/app/oracle/undo_tbs01.dbf’ SIZE 1 G
RETENTION GUARANTEE;
Vamos Lá:
Suponhamos que vc apagou determinada linhas de uma tabela por acidente e agora precisa recuperarar esta tabela ...
1-Habilite o movimento da linha
SQL> ALTER TABLE teste ENABLE ROW MOVEMENT;
2-Restaure a tabela para um determinado SCN.
SQL> FLASHBACK TABLE teste TO SCN 1743434;
OU
2.1-Restaure a tabela a um tempo no qual ela se encontrava correta.
SQL> FLASHBACK TABLE teste
TO TIMESTAMP
TO_TIMESTAMP(‘24-MAR-11 12:00:00’,’MM/DD/YY HH:MI:SS’);
3-Verifique se todas as linhas se encontram lá de novo.
II-FLASHBACK DROP
OBS : Nas versões anteriores do Oracle 10g o comando Drop table removia uma tabela da base permanentemente .
Com a Versão 10G as tabelas não serão mais removidas mais sim renomeadas e movidas para um objeto chamado de Recycle bin.
Vamos ver se isso é verdade :
Siaga os Passos abaixo:
1- Drop uma tabela .
SQL>Drop table teste ;
2-Faça uma pesquisa para verificar se a tabela ainda se encontra na recycle bin :
SQL> select object_name, original_name,
2 type, createtime, droptime
3 from user_recyclebin;
QUICK TIP : Quando a tabela é movida para a recyclebin (licheira) oracle lhe da um nome meio estranho, para visualizar o nome da tabela utilize a coluna original_name, na view user_recyclebin.
3-Para restaurar novamente a tabela utilize o seguinte comando:
SQL> flashback table “BIN$0+ktoVChEmXgNAAADiUEHQ==$0” to before drop; (nome que o oracle atribui a tabela)
ou
SQL> flashback table teste to before drop;
4-Para limpar a recyclebin execute o comando abaixo:
SQL> purge recyclebin;
5-Para limpar apenas um objeto da recyclebin utilize o comando abaixo:
SQL> purge table "BIN$0+ktoVChEmXgNAAADiUEHQ==$0";
QUICK TIP:Caso queira dropar a tabela permanentemente do banco de dados utilize o comando abaixo:
drop table teste purge ;
Obrigada e Até maisssssssssssss.......
segunda-feira, 4 de abril de 2011
Flashback Database na Prática
No Post Anterior nós relembramos como habilitar e desabilitar a tecnologia de FlashBack..
As próximas dicas rapídas irão mostrar como fazer uma recuperacão com do Flshaback do banco de dados habilitado..
Sigam os passos abaixo e divirtam-se com moderação, utilizem sempre ambientes de testes......
I-FLASBACK DATABSE PARA UM TEMPO ESPECÍFICO UTILIZANDO COMANDOS SQL
1- feche o Banco de Dados e abra-o em Modo Mount
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
2-Eu utilizei o seguinte comando para voltar o banco de dados ao dia anterior :
SQL> FLASHBACK DATABASE to timestamp to_timestamp('24-mar-11 08:00:00','dd-mm-yy hh24-mi-ss') ;
3-Abra o Banco de dados com a Opção RESETLOGS:
SQL>alter database open RESETLOGS ;
Verifique se tudo esta correto como era antes
II-FLASHBACK DATABASE USANDO UM SCN
1-Verifique o SCN para o qual iremos recuperar a instância:
SQL> select current_scn from v$database ;
2- feche o Banco de Dados e abra-o em Modo Mount :
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
3-Eu utilizei o comando abaixo para voltar o banco de dados:
SQL>flashback database to scn 1777333 ;
4-Abra o banco de dados com a Opção RESETLOGS:
SQL> Alter database open RESETLOGS ;
Verifique se esta tudo ok no seu ambiente.
III-FLASHBACK DATABASE USANDO RMAN
1-Feche a Instância que será recuperada e inicie em no Modo Mount :
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
Quick Tip:Para que se possa realizar os procedimetos de Flasback via Rman o Alvo(Target tem que estar Montado)
2-Conecte ao Alvo via Rman
export ORACLE_SID=orcl
oracle@localhost /]$ rman / target
3-Eu utilizei os comandos abaixo para voltar o banco de dados a alguns minutos atrás do desastre ocorrido:
RMAN> FLASHBACK DATABASE
2> TO TIME = "TO_DATE (‘24-MAR-11 03:07:00’,’ dd-mm-yy hh24-mi-ss’) " ;
Quick tip : é Muito importante veirficar a data e hora correta do seu sistema para uma recuperação precisa :
select systimestamp from dual;
4-Abra o Banco de dados com a Opção RESETLOGS:
SQL>alter database open RESETLOGS ;
Verifique se tudo esta correto como era antes
Espero que seja útil .....
Até a proxíma
As próximas dicas rapídas irão mostrar como fazer uma recuperacão com do Flshaback do banco de dados habilitado..
Sigam os passos abaixo e divirtam-se com moderação, utilizem sempre ambientes de testes......
I-FLASBACK DATABSE PARA UM TEMPO ESPECÍFICO UTILIZANDO COMANDOS SQL
1- feche o Banco de Dados e abra-o em Modo Mount
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
2-Eu utilizei o seguinte comando para voltar o banco de dados ao dia anterior :
SQL> FLASHBACK DATABASE to timestamp to_timestamp('24-mar-11 08:00:00','dd-mm-yy hh24-mi-ss') ;
3-Abra o Banco de dados com a Opção RESETLOGS:
SQL>alter database open RESETLOGS ;
Verifique se tudo esta correto como era antes
II-FLASHBACK DATABASE USANDO UM SCN
1-Verifique o SCN para o qual iremos recuperar a instância:
SQL> select current_scn from v$database ;
2- feche o Banco de Dados e abra-o em Modo Mount :
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
3-Eu utilizei o comando abaixo para voltar o banco de dados:
SQL>flashback database to scn 1777333 ;
4-Abra o banco de dados com a Opção RESETLOGS:
SQL> Alter database open RESETLOGS ;
Verifique se esta tudo ok no seu ambiente.
III-FLASHBACK DATABASE USANDO RMAN
1-Feche a Instância que será recuperada e inicie em no Modo Mount :
SQL>shutdown immediate ;
SQL> startup mount exclusive ;
Quick Tip:Para que se possa realizar os procedimetos de Flasback via Rman o Alvo(Target tem que estar Montado)
2-Conecte ao Alvo via Rman
export ORACLE_SID=orcl
oracle@localhost /]$ rman / target
3-Eu utilizei os comandos abaixo para voltar o banco de dados a alguns minutos atrás do desastre ocorrido:
RMAN> FLASHBACK DATABASE
2> TO TIME = "TO_DATE (‘24-MAR-11 03:07:00’,’ dd-mm-yy hh24-mi-ss’) " ;
Quick tip : é Muito importante veirficar a data e hora correta do seu sistema para uma recuperação precisa :
select systimestamp from dual;
4-Abra o Banco de dados com a Opção RESETLOGS:
SQL>alter database open RESETLOGS ;
Verifique se tudo esta correto como era antes
Espero que seja útil .....
Até a proxíma
Assinar:
Postagens (Atom)