Movendo AUD$ para fora da tablespace System

fevereiro 3rd, 2010 por Marcos Aurelio Braga

Mais um assunto interessante para quem está iniciando com os processos de auditoria no banco de dados.

http://sites.google.com/site/universodobraga/oracle/movendo-aud-para-fora-da-tablespace-system

[]s
Braga

Data Guard Broker 11g com RMAN (Standby 11g com RMAN)

janeiro 4th, 2010 por Marcos Aurelio Braga

Oi Pessoal,

Primeiro assunto do ano novo…

No fim do ano andei efetuando testes com RMAN e BROKER sobre as novas funcionalidades para criação de um Standby na versão 11g e achei importante postar esses testes.

O artigo ainda não está finalizado, mas está bem adiantado e podemos nos beneficiar com ele.

http://sites.google.com/site/universodobraga/oracle/standby-11g

[]s
Braga

Recover Completo com RMAN

dezembro 10th, 2009 por Marcos Aurelio Braga

Este é um exemplo prático de uma recuperação completa de um banco de dados pequeno utilizando RMAN com Oracle 11g.

http://sites.google.com/site/universodobraga/oracle/recover-completo-oracle-11g

Virtual Columns

novembro 10th, 2009 por Marcos Aurelio Braga

Oi Pessoal,

Criei uma página direcionada aos meus interesses pessoais e profissionais.

Ela engloba um pouco da minha experiência, interesses e o que pretendo compartilhar com a comunidade.

Meu primeiro assunto é sobre Virtual Columns (colunas virtuais) que encontrei na versão 11g.

http://sites.google.com/site/universodobraga/oracle/memoria-viva/oracle11g-virtualcolumns

[]s
Braga

RMAN-06024

novembro 4th, 2009 por Marcos Aurelio Braga

Este post é para memorizar algo que já precisei e voltei a pesquisar no Google.

Estava criando um Standby através do RMAN, utilizando os seguintes comandos:
connect target /
connect auxiliary sys/[pass]@standby
run {
allocate auxiliary channel ch1 type disk;
duplicate target database for standby dorecover nofilenamecheck;
release channel ch1;
}

E ocorreu o seguinte erro:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/11/2009 12:18:23
RMAN-06026: some targets not found - aborting restore
RMAN-06024: no backup or copy of the controlfile found to restore

A correção foi:
connect target /
sql ‘alter system archive log current’;
connect auxiliary sys/[pass]@standby
run {
allocate auxiliary channel ch1 type disk;
duplicate target database for standby dorecover nofilenamecheck;
release channel ch1;
}

save;
rsssss :) — memória registrada –

[]s
Braga

Senhas de roles

setembro 3rd, 2009 por Marcos Aurelio Braga

Estava montando um script para recriar as roles de um banco de dados em outro banco, e deparei com um problema simples: algumas roles estavam com senha e não encontrei nas views que utilizo comumente alguma coluna que fornecesse essa informação.

Após algumas pesquisas, encontrei esta consulta útil quando for preciso.


select role, password
from sys.user$ u, dba_roles r
where r.role = u.name
and u.type# = 0
and password is not null
/

Observe que é uma tabela do SYS, portanto é necessário permissões para tal.

Com essa consulta é possível criar um script para recriar as roles. Observe.


select 'create role '||role||' identified by values '''||password||''';'
from sys.user$ u, dba_roles r
where r.role = u.name
and u.type# = 0
and password is not null
/

[]s
Braga

Prêmio ORABlog Brasil

julho 24th, 2009 por Marcos Aurelio Braga

Ontem observei este assunto nos atalhos da página principal, e lendo o conteúdo verifiquei que há muito mais que um incentivo cultural para o público brasileiro.

Vi este prêmio como uma oportunidade para todo profissional que posta nos Blogs uma oportunidade de melhorar os assuntos, melhorar a qualidade e um incentivo para que esse procedimento torne-se um hábito entre esses profissionais.

O prêmio também é um incentivo para novos profissionais que pensam e/ou planejam criar um Blog. Muitos destes acabam revendo ótimos “Blogueiros” com assuntos diversificados e de qualidade.

Efetuei a inscrição com a intenção de incentivo a essa cultura e habituar-me a postar sempre, e é claro, medir o nível de aceitação dos assuntos postados.

Espero melhorar os assuntos e não só encher o Blog com muito conteúdo sem utilidade para a comunidade.

A comunidade brasileira será a principal beneficiada com esse prêmio.

[]s a todos e sucesso.
Braga

Trace em uma sessão

julho 19th, 2009 por Marcos Aurelio Braga

Esta semana precisei efetuar um trace em uma sessão de um aplicativo e resolvi postar o procedimento.

Descobrindo a sessão
Para descobrir a sessão, usualmente utilizamos a view V$SESSION e com alguma informação relevante, tipo o usuário do banco, o aplicativo utilizado ou mesmo o nome do computador utilizado. No meu caso o usuário era único no banco de dados, portanto efetuei uma consulta simples.

SQL> select sid, serial# from v$session where username = 'USER';
SID SERIAL#
------- ------------
25 1468

De posse dos dados, vamos habilitrar o trace.

Habilitando o trace

SQL> exec dbms_system.set_sql_trace_in_session(25, 1468, TRUE);

Trace ativo, a partir deste momento tudo que ocorrer na sessão será gravada em arquivo de trace. Aguarde a finalização da sessão ou a confirmação do usuário para encerrar o trace.

Desabilitando o trace

SQL> exec dbms_system.set_sql_trace_in_session(25, 1468, FALSE);

Os arquivos de trace são gravados no diretório dump de usuários, localize através do parâmetro USER_DUMP_DEST.

SQL> show parameter user_dump_dest

Neste diretório estarão os arquivos de trace dos usuários e o arquivo que foi gravado através deste procedimento.

Bom proveito.

[]s
Braga

Listando todos os arquivos de um banco de dados Oracle

julho 9th, 2009 por Marcos Aurelio Braga

Para encontrar todos os arquivos de um banco de dados, diga-se de passagem, controlfile, logfile, datafiles e tempfiles, utilizo esta query:

select name from v$controlfile
union all
select name from v$tempfile
union all
select name from v$dbfile
union all
select member from v$logfile

Observem o exemplo:
SQL> select name from v$controlfile
2 union all
3 select name from v$tempfile
4 union all
5 select name from v$dbfile
6 union all
7 select member from v$logfile;

NAME
------------------------------------------------
C:\ORACLEXE\ORADATA\XE\CONTROL.DBF
C:\ORACLEXE\ORADATA\XE\TEMP.DBF
C:\ORACLEXE\ORADATA\XE\USERS.DBF
C:\ORACLEXE\ORADATA\XE\SYSAUX.DBF
C:\ORACLEXE\ORADATA\XE\UNDO.DBF
C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF
C:\ORACLEXE\ORADATA\O1_MF_2_4ZPK55HD_.LOG
C:\ORACLEXE\ORADATA\O1_MF_1_4ZPK52D8_.LOG

8 linhas selecionadas.

SQL>

Estudando o RMAN, descobri um comando capaz de fornecer uma lista dos datafiles do banco de dados, observem:

RMAN> report schema;

usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
Relatório do esquema do banco de dados

Lista de Arquivos de Dados Permanentes
===========================
Tamanho do Arquivo(MB) Tablespace RB segs Nome do Arquivo de Dados
---- -------- -------------------- ------- ------------------------
1 340 SYSTEM *** C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF
2 90 UNDO *** C:\ORACLEXE\ORADATA\XE\UNDO.DBF
3 480 SYSAUX *** C:\ORACLEXE\ORADATA\XE\SYSAUX.DBF
4 100 USERS *** C:\ORACLEXE\ORADATA\XE\USERS.DBF

Lista de Arquivos Temporários
=======================
Tamanho do Arquivo(MB) Tablespace Tamanho Máximo(MB) Nome do Arquivo Temporário
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 C:\ORACLEXE\ORADATA\XE\TEMP.DBF

RMAN>

Outros métodos podem ser utilizados para descobrir os arquivos de um banco de dados, mas esses dois métodos são eficientes.

[]s
Braga

Sincronizar Data e Hora dos Servidores

julho 8th, 2009 por Marcos Aurelio Braga

NTP ou Network Time Protocol, é um serviço responsável por manter os relógios dos computadores ajustados e sincronizados. Comumente tenho problemas com ajuste de hora em um ambiente com vários servidores instalados. E a política comumente adotada é o ajuste manual ou através de scripts (particularmente, utilizei scripts para manter um grupo de computadores com a hora ajustada entre eles), scripts é uma boa idéia, mas não é a mais confiável, pois não há uma sincronização a nível global.

O remédio para o problema está disponível no Brasil há algum tempo e fica disponível no portal ntp.br.

O serviço é fácil de ser implementado para linux e windows (ainda não tive a oportunidade de implementar em windows), mas implementei em vários servidores linux e funciona que é uma “magavilha”.

Basta acessar a página e seguir o Guia Rápido, nesse guia são encontradas todas as instruções necessárias para a implementação do serviço ntp, incluindo vídeos dos processos executados.

Um aviso aos marinheiros que vão embarcar nessa viagem. Caso a rede que irão implementar o serviço tenha um firewall (o que é fácil encontrar), é necessário a liberação da porta 123 para o protocolo UDP; é por essa porta que a comunicação (sincronização) do serviço ntp é efetuada.

Fica aí a dica para todos os navegantes.

[]s
Braga