DBA BRASIL 4.0

Está preparado ? Já fez a inscrição aqui ?

Esse ano o DBA BRASIL será realizado dia 04/05 na Faculdade Impacta,
Avenida Rudge, 315 – Barra Funda/SP, à partir das 8:45h.

O evento, como sempre, é gratuito e tem uma grade de conteúdo excelente.

Minha palestra será sobre Disaster Recovery na Oracle Cloud às 13h na sala 113.

Nos vemos lá !

Agradeço, desde já, aos organizadores e patrocinadores do evento.

ORA-1031 on Logical Standby

Comecei a estudar para a prova Oracle 12c Data Guard Administrator faz alguns dias e durante meus testes encontrei o erro ORA-1031 no logical standby.

I’ve started my studies for Oracle 12c Data Guard Administrator test a couple of days ago and during the tests on my LAB I got the error ORA-1031 on logical standby.

Na verdade eu nunca havia criado um Logical Standby então tudo aqui é novidade pra mim !

The true is everything related to logical standby is new to me since I have never had the opportunity to work with this technology.

Antes de descobrir o erro ORA-1031, o dg broker mostra o erro genérico ORA-16810:

Before error ORA-1031 I got the generic error ORA-16810:

logical_error

Você chega no erro de verdade de duas maneiras:

You will narrow this issue down using either of those two approaches:

  • Checking alert.log  from logical standby

alert_stdb_err

trace file from Apply process (chicago_as01_18532.trc) also shows error ORA-1031:

[oracle@oralab2 ~]$ tail -5 /u01/app/oracle/diag/rdbms/chicago/chicago/trace/chicago_as01_18532.trc
*** 2018-12-10 06:40:38.414
ORA-01031: insufficient privileges
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-01031: insufficient privileges
  • Running dg broker command show database <db> ‘StatusReport’logical_ora1031

O erro começou quando eu executei o comando “grant sysdg to sysdg” uma vez que o processo de apply não é executado com privilégio de sysdba.

This issue was due to the command “grant sysdg to user” because the Logical Apply Processes does not run with sysdba privileges.

Para corrigir precisaremos criar uma procedure para “pular” erros de grant no schema desejado.

To fix it we need to build a procedure to skip grants errors on specific schemas.

Exmple:

CREATE OR REPLACE PROCEDURE sys.handle_error_ddl ( 
old_stmt IN VARCHAR2, 
stmt_type IN VARCHAR2, 
schema IN VARCHAR2, 
name IN VARCHAR2, 
xidusn IN NUMBER, 
xidslt IN NUMBER, 
xidsqn IN NUMBER, 
error IN VARCHAR2, 
new_stmt OUT VARCHAR2 
) AS 

BEGIN 
-- Default to what we already have 
new_stmt := old_stmt; 

-- Ignore any GRANT errors on SYS or HR schemas 
IF INSTR(UPPER(old_stmt),'GRANT') > 0 
THEN 
IF schema IS NULL 
OR (schema IS NOT NULL AND 
(UPPER(schema) = 'SYS' OR UPPER(schema) = 'SYSDG' ))
THEN 
new_stmt := NULL; 
-- record the fact that we just skipped an error on 'SYS' or 'HR' schemas 
-- code not shown here 
END IF; 
END IF; 

END handle_error_ddl; 
/
EXECUTE DBMS_LOGSTDBY.SKIP_ERROR (stmt => 'NON_SCHEMA_DDL', schema_name => NULL, object_name => NULL, proc_name => 'SYS.HANDLE_ERROR_DDL');

Depois basta iniciar o processo de apply novamente.

After that you have to restart the Logical Apply Process again.

Update 1:

Outra situação em que o erro ORA-1031 pode acontecer é quando o arquivo de senhas (orapw<sid>) não está sincronizado entre os bancos primary e standby.

Another situation when error ORA-1031 happens is when the password file gets out-of-sync.

 

 

BUG 23300142 – Redo Transport Slave Process

A semana começou com o filesystem /u01 alarmando ocupação elevada. Iniciei então uma investigação para encontrar o que estava ocupando o disco.

My week started with a filesystem high occupation alarm. I then started looking for what was going on.

Utilizei o comando find abaixo para buscar por arquivos grandes:

I usually use the find command bellow to search for huge files:

find / -type f -size +800M -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'

Bingo! encontrei o arquivo de trace do processo TT01 (Redo Transport Slave Process) consumindo 6Gb !

Yes ! found a trace file from process TT01 (Redo Transport Slave Process) consuming 6 Gb!

Olhando o conteúdo do arquivo, a mensagem:

Looking at the contents of the trace file the messages:

Error in determining current logfile for thread 1
ASYNC ignored current log: KCCLENAL clear thread open

era repetida continuamente.

was happening on an on.

Uma pesquisa rápida no MOS e confirmado mais um BUG para coleção: Bug 23300142 – TT background process trace file message: async ignored current log: kcclenal clear thread open (Doc ID 23300142.8)

A quick search on MOS and I have hit another BUG for my collection: Bug 23300142 – TT background process trace file message: async ignored current log: kcclenal clear thread open (Doc ID 23300142.8)

A correção está disponível nos patches:

Bug fix is included on patches:

12.2.0.1.170919 (Sep 2017) Database Release Update (DB RU)
12.1.0.2.180116 (Jan 2018) Database Proactive Bundle Patch
12.2.0.1.171017 (Oct 2017) Bundle Patch for Windows Platforms

 

Oracle Data Guard Database Compare

Uma nova procedure chamada DBMS_DBCOMP.DBCOMP (disponível na 12.2), compara os blocos de dados armazenados no Primary DB e seu standby físico. A ferramenta busca por erros de disco que não podem ser detectados por outras ferramentas como, por exemplo, o utilitário DBVERIFY.

Veja que o proprio DataGuard já realiza a validação de corrupção de dados quentes (dados que são lidos ou alterados) tanto no Primary quanto no Standby.

Mas a nova ferramenta vai além pois valida também os dados frios, permitindo ao DBA ter confiança de que seu ambiente está livre de corrupções físicas.

Modo de utilização:

DBMS_DBCOMP.DBCOMP (datafile IN varchar2, outputfile IN varchar2, block_dump IN boolean);

Onde,

datafile – pode ser o número ou nome do datafile. Utilize ‘ALL’ para comparar todos os datafiles.

outputfile – define um prefixo para o nome do arquivo de saída. Por padrão o arquivo é gerado no diretório $ORACLE_HOME/dbs. É gerado um arquivo de saída por datafile.

block_dump – Parâmetro boleano para especificar se o conteúdo do bloco deve ser gravado no arquivo de saída quando um bloco não idêntico entre primary/standby for encontrado. False por padrão.

Exemplo: Execute no Primary.

exec sys.dbms_dbcomp.dbcomp(‘ALL’,’standbypdbComparison’, true);

e utilize a view V$SESSION_LONGOPS para acompanhar o progresso.

Oracle 12c – Transaction Guard and Application Continuity

São dois recursos novos disponíveis nas options Oracle Real Application Clusters (RAC), Oracle RAC One Node e Oracle Active Data Guard:

  1. Transaction Guard is a reliable protocol and tool available with the Oracle Database 12c that returns the outcome of the last in-flight transaction after outages that make the database session unavailable. It is used by Application Continuity to ensure that an in-flight transaction is committed successfully, no more than once.
  2. Application Continuity (AC) is a new feature available with the Oracle Real Application Clusters (RAC), Oracle RAC One Node and Oracle Active Data Guard options that masks outages from end users and applications by recovering the in-flight database sessions following recoverable outages. Application Continuity masks outages from end users and applications by recovering the in-flight work for impacted database sessions following outages. Application Continuity performs this recovery beneath the application so that the outage appears to the application as a slightly delayed execution. Application Continuity strengthens the fault tolerance of systems and applications that use an Oracle database.

Ou seja, com esse recurso a Oracle melhora a experiência do usuário quando ocorrem indisponibilidades planejadas ou não.

Quer ver na prática como funciona, acesse o link:

https://bdrouvot.wordpress.com/2015/05/07/12c-application-continuity-with-data-guard-in-action/

Dois white papers estão disponíveis com mais informações:

http://www.oracle.com/technetwork/database/options/clustering/application-continuity-wp-12c-1966213.pdf

http://www.oracle.com/technetwork/database/database-cloud/private/transaction-guard-wp-12c-1966209.pdf

Fonte: http://www.oracle.com/technetwork/products/clustering/ac-overview-1967264.html