Pular para o conteúdo principal

Postagens

Restore #5 - Restore Controlfiles sem backup RMAN

Restore #5 - Restore Controlfiles sem backup RMAN Imagine que você pedeu todos os seus controlfiles e não tem backup RMAN nem backup as TRACE. Usaremos aqui o SNAPSHOT CONTROLFILE para o restore.   Criando cenário: 1 - Verifique onde estão seus controlfiles e SNAPSHOT CONTROLFILE SQL> SHOW PARAMETER CONTROL    RMAN> SHOW ALL; using target database control file instead of recovery catalog RMAN configuration parameters for database with db_unique_name TESTE are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default . . . CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/18.3.0/dbhome_1/dbs/snapcf_TESTE.f'; # default     2 - Simule uma corrupção nos seus controlfiles. Em seguida, acompanhe o log. echo "Thiago Castro" > /u01/app/oracle/oradata/TESTE/control01.ctl echo "Thiago Castro" > /u01/app/oracle/oradata/TESTE/control02.ctl   3 - Acompanhe o alert do banc...

Restore #4 - Restore Tablespace UNDO sem backup

Restore #4 - Tablespace UNDO sem backup Agora vamos recuperar o banco de dados com o tablespace de UNDO comrrompido.   Criando o cenário: 1 - Localize o caminho do seu tablespace de UNDO e faça um escrita no arquivo. Forçando uma corrupção. [oracle@teste dbs]$ echo "Thiago Castro" > /u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h33p4c21_.dbf   2 - Da mesma forma feita no Restore #3 , se tentarmos fechar o banco com SHUTDOWN IMMEDIATE, não teremos sucesso. Vamos usar SHUTDOW ABORT. SQL> shut immediate; ORA-01115: erro de IO ao ler o bloco do arquivo 18 (bloco # 1) ORA-01110: 18 do arquivo de dados: '/u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h33p4c21_.dbf' ORA-27072: Erro de entrada/saida no arquivo Additional information: 4 Additional information: 1 Restore: 1 - Crie um arquivo PFILE a partir do SPFILE SQL> CREATE PFILE FROM SPFILE;   2 - No PFILE altere o parâmetr...

Restore #3 - Restore tablespace de UNDO com Backup

Restore #3 - Restore UNDO com Backup Imagine seu tablespace de UNDO com problemas durante o horário de produção, o que você faria para corrigir o erro? Usaremos dois cenários um restaurando a partir de um backup e outro sem backup. Nesse post usaremos backup. Criando cenário: 1 - Faça um backup full da sua base de dados e em seguida verifique qual o seu tablespace de UNDO padrão SQL> select file_name, online_status from dba_data_files; /u01/app/oracle/oradata/TESTE/datafile/o1_mf_users_h2pfd4yt_.dbf                   ONLINE /u01/app/oracle/oradata/TESTE/datafile/o1_mf_undotbs1_h30fdf6x_.dbf            ONLINE /u01/app/oracle/oradata/TESTE/datafile/o1_mf_system_h2pfb7p9_.dbf               SYSTEM /u01/app/oracle/oradata/TESTE/datafile/o1_mf_sysaux_h2pfcbsm_.dbf   ...

Restore #2 PDB TSPITR: Tablespace Point In Time Recovery de um PDB.

Restore #2 PDB TSPITR: Tablespace Point In Time Recovery de um PDB. Neste cenário vamos simular a recuperação em um ponto específico no tempo para um tablespace de um PDB. O Oracle facilitou muito nossa vida na versão 12 em diante com este tipo de recuperação. Nas versões anteriores não era possível fazer de forma automatizada este tipo de recuperação, era tudo manual. Criando o cenário: 1 - Dentro nosso PDB, vamos criar um novo usuário e um novo tablespace.  ALTER SESSION SET CONTAINER=PDBTESTE; CREATE TABLESPACE NOVA_TBS DATAFILE SIZE 500m; CREATE USER USER_TESTE IDENTIFIED BY teste default tablespace NOVA_TBS; ALTER USER user_teste QUOTA UNLIMITED ON NOVA_TBS; grant create session to user_teste; grant create table to user_teste;   2 - Vamos criar um nova tabela e popular. CREATE TABLE USER_TESTE.TABELA_TESTE (C NUMBER) TABLESPACE NOVA_TBS; INSERT INTO USER_TESTE.TABELA_TESTE VALUES (1000); INSERT INTO USER_TESTE.TABELA_TESTE SE...

Restore #1 Oracle Redo Log Active

Restore #1 Oracle Redo Log Active Restore é sempre uma situação que você precisa saber o que está fazendo e quase sempre não tem muito tempo para fazer um pesquisa. Então é bom se preparar antes do pior acontecer.  Então pensei em escrever um série de post com algumas para me ajudar e ajudar outras pessoas a passarem por algumas situações virão. Imagina que você tem um banco de dados com Redo Log não multiplexado e por algum motivo seu grupo de redo com o status ACTIVE foi corrompido, como faria pra se recuperar dessa falha? Criando o cenário: 1 - Consulte qual é o seu grupo com status ACTIVE SQL> select group#,sequence#,members,status From v$log;     GROUP#  SEQUENCE#    MEMBERS STATUS ---------- ---------- ---------- ----------------          1          7          1 CURRENT ...

Erro durante movimentação/recriação GI Management Repository(GIMR / MGMTDB)

O Grid Infrastructure Management Repository (GIMR ) é um banco de dados multitenant com um PDB que coleta em tempo real métricas sobre a operação do CHM( RAC cluster health monitor). O GIMR foi introduzido no Oracle 12.1.0.1 e na 12.1.0.2 virou obrigatório. Na versão 19c, voltou a ser opicional. O GIMR roda somente em um dos nós do cluster e pode estar em um diskgroup com redundância externa. A Oracle recomenda um diskgroup separado para o GIMR e no ambiente em que peguei, ele estava junto com o OCR. Então resolvi separar. É disponibilizado pela Oracle um utilitário chamado mdbutil.pl para auxiliar na manipulação desse banco de dados. (Doc ID 2065175.1) Abaixo vou descrever o procedimento que realizei para corrigir o erro durante a migração utilizando esse utilitário da Oracle. Verificando o status do GIMR [grid@teste01 ~]$ /tmp/mdbutil.pl --status mdbutil.pl version : 1.98 2019-09-25 16:04:05: I Checking CHM status... 2019-09-25 16:04:06: I Listener MGMTLSNR is con...

Usando Oracle Database Smart Flash Cache

Introduzido na versão 11R2 do banco de dados Oracle, o Database Smart Flash Cache é uma feature que ajuda a ter ganhos de desempenho em sistema com carga intensa de IO. Ele funciona como se fosse uma segunda camada de cache para o banco. Aqui você pode entender melhor como funciona a tecnologia. A idea aqui é realizar alguns testes de uso e mostrar que o banco de dados pode funcionar sem problemas caso de indisponibilidade do hardware que irá implementar essa camada. O Ambiente - Oracle Database 18c - Red Hat Enterprise Linux Server release 7.6 (Maipo) - Diskgroup NVME. Usei placas NVME da Dell. Parâmetros alterados - Criei um tabela TESTE com 27Gb - Para evitar direct path reads quando fizer um select em tabelas grandes:  _serial_direct_read=NEVER alter system set db_flash_cache_file='+NVME/flash_cache' sid='*' scope=spfile; alter system set db_flash_cache_size='60g' scope=spfile sid='*' scope=spfile; alter system set "_seri...

Permissões necessárias para criar triggers no Oracle

Há pouco tempo passei por um problema durante a criação de uma trigger de LOGON na versão 12c do banco de dados Oracle. Estava com alguns problemas em uma aplicação que tinha uma trigger de Logon. A trigger em si era bem simples, vou por o código mais abaixo, o problema é que ela estava criada dentro do usuário SYSTEM. Provavelmente foi a maneira mais fácil e preguiçosa de criar o objeto, uma vez que o SYSTEM já possui todas as permissões necessárias para criação. Porém isso não uma boa prática. Então resolvi tirar do SYSTEM e jogar para o usuário dono dos objetos da aplicação. Quando fui tentar criar o objeto no SCHEMA dono dos objetos da aplicação, recebi um erro com falta de permissões: ORA-01031: insufficient privileges . O erro ocorreu porque estava esquecendo de conceder a role ADMINISTER DATABASE TRIGGER para o usuário. Em resumo, as permissões necessárias para criação de uma trigger: CREATE TRIGGER - para criar uma trigger no seu próprio esquema (SCHEMA) CREATE AN...