Pular para o conteúdo principal

Postagens

Usando o RMAN para verificar corrupção no banco e em backups

- Primeiro é interessante entendermos a diferença de uma corrupção lógica para uma física.        Física: Uma corrupção física ocorre quando o conteúdo do bloco não corresponde ao formato físico que o Oracle espera. Por padrão o RMAN realiza uma         verificação física sempre que ocorre um backup, um restore ou um validate.     Lógica: O bloco está no formato correto, mas o conteudo não corresponde ao esperado pelo Oracle. Exemplos de corrupção lógica seriam: corrupção         em um pedaço de uma linha ou uma entrada de índice. - O RMAN pode ser usado para identificar corrupção em datafile, controlfiles, archivelogs. Podemos também saber se uma peça de backup é restaurável. O RMAN VALIDATE pode ser usado para verificar esses tipos de integridade. Existem três tipo para o comando:  - VALIDATE  - BACKUP ... VALIDADTE  - RESTORE ... VALIDATE Obs: O comando VALIDATE usado sozinho só é válido a partir da versão 11g. # VALIDATE  O VALIDATE pode ser usado para checar a localização ...

ORA-00600: internal error code, arguments: [kccpb_sanity_check_2]

       Depois de um pico de energia e do desligamento inesperado do storage, quando fui tentar abrir uma das bases (10.2.0.4) recebi uma mensagem não muito agradável : 08:41:53 SYS@EADTR > startup ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size                  2084400 bytes Variable Size             385876432 bytes Database Buffers         1207959552 bytes Redo Buffers               14692352 bytes ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [8706], [5700], [0x000000000], [], [], [], []        Pelo startup acima, podemos ver que o problema ocorre no momento que o banco procura o controlfile, então a solução foi p...

Novo bug criado junto a Oracle: BUG-11887892

Recentemente passamos por alguns problemas de performance com alguns recursos do Oracle 11g SPM( SQL Plan Management Base) e SMB (SQL Management Base) em nosso ambiente Oracle RAC 11g R2 muito bem detalhado pelo meu parceiro Eduardo. Segue o link : http://dbavalentim.blogspot.com/2011/03/merge-na-sqlobjauxdata-com-full-table.html

Restore e recover Oracle usando backups incremental

No ambiente de testes verifiquei algo que não sabia. Um backup incremental Level 1 , diferencial ou cumulativo não é usado no restore e sim no recover. Um backup level 1 é como se fosse um pacote de archives. No momento do recover se o Oracle encontrar uma peça de backup incremental level 1 que contenha todas as alterações necessária para recuperação da base, ele da prioridade ao backup incremental deixando os archives em segundo plano. Baseado nisso, podemos dizer que é como se os level 1 fossem uma segurança a mais no momento do recover. Para comprovar veja os passos que fiz abaixo. Primeiro executo um backup incremental level 0 RMAN> backup incremental level 0 database; Starting backup at 21-JAN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting incremental level 0 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00001 name=/u01/app/oracle/oradata/CANSADA/datafile/o1_mf_system_6mm2dr9k_.dbf input dat...

Identificando a versão do seu banco de dados Oracle

 - O primeiro dígito é o identificador geral. Ele representa a ultima versão do software, a que possui significantes novas funcionalidades.  - O segundo número representa a versão de level de manutenção. Algumas novas funcionalidades podem ser incluídas.  - O terceiro, mostra o a versão do level do Oracle Fusion Middleware  - O quarto, identifica a versão do level de um componente específico. Componentes diferentes podem possuir diferentes números, dependendo por exemplo conjunto de patches ou versões provisória.  - O quinto dígito identifica uma versão para uma plataforma específica. Normalmente é um patch set. Quando diferentes plataformas requerem um nivel equivalente de patch set, o dígito será o mesmo para todas as plataformas afetadas. Nota: Iniciado na versão 9.2, as versões de manutenção do banco de dados Oracle são indicados por uma mudança no segundo dígito. Em versões anteriores, o terceiro número indicava uma versão particular de manuten...

Conectando-se ao Oracle sem o uso do velho e bom tnsnames.ora

Existem várias maneiras para fazer uma conexão com o banco de dados Oracle sem usar o arquivo tnsnames.ora. O método de nomeação easy connect é uma saída. Ele foi introduzido na versão 10g. Abaixo a sintaxe da conexão: sqlplus user/password@//host:portalistener/SID Normalmente o arquivo sqlnet.ora possui a seguinte linha: NAMES.DIRECTORY_PATH= (TNSNAMES) Para o uso do easy connect é preciso alterar a linha para: NAMES.DIRECTORY_PATH= ( EZCONNECT , TNSNAMES ) Outra alternativa para conexão,caso você não queira usar o tnsnames e nem o sqlnet é colocar os detalhes da conexão que normalmente você colocaria no arquivo tnsnames na linha de comando. sqlplus user/password@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(service_name=TESTE)))'

Novos recursos Oracle 11g

Gerenciamento de memória No Oracle 10g você tem a opção de deixar o Oracle gerencia sua SGA de uma forma dinâmica através do parâmetro SGA_TARGET. Na versão 11g existe um novo parâmetro o MEMORY_TARGET e MEMORY_MAX_TARGET. O MEMORY_TARGET irá ajustar tanto a SGA quanto a PGA, fazendo com que o parâmetro PGA_AGGREGATE_TARGET não precise ser configurado. Este parâmetro poderá ser configurado até o limite descrito no MEMORY_MAX_TARGET. Tabelas Somente Leitura Nas versões anteriores o nível máximo que poderíamos chegar usando a função somente leitura era de tablespaces, como o 11g temos a opção de colocar tabelas como somente leitura. Para deixar a tabela nesse estado basta usar o comando: alter table teste read only; Feito isso, todos os comandos DML não serão mais permitidos nessa tabela. Somente as operações que não alterem os dados ou a estrutura da tabela serão permitidas. Abaixo um lista das operações não permitidas e permit...

Visualizando a marca d´água (High Water Mark)

O HWM - High Water Mark é uma fronteira entre o espaço usado e não usado do segmento.Quando ocorre um solicitação para uso de novos blocos e essa requisição não pode ser atendida pela atual lista de blocos livres, o bloco atual que possue a marca d´água é marcado como usado e a marca avança para o seguinte. Em outras palavras, todo segmento que está a esquerda da marca é usado e o espaço a direita é livre. Quando uma tabela é criada um número inicial de blocos / extensão são alocados para a tabela. Depois, com o aumento de número de operações DML, novas extensões são alocadas de acordo com a demanda. Vamos a um exemplo prático para entender melhor. Criei um tabela para teste com a mesma estrutura da visão dba_users: CREATE TABLE teste AS (SELECT * FROM dba_users WHERE rownum Após alguns insertes: INSERT INTO teste (SELECT * FROM dba_users); COMMIT: Realizando uma consulta na DBA_SEGMENTS, Temos para nossa tabela: 1 extensão contendo 8 blocos. Mas de fato, só poderemos u...