Guob 2017

Ops!

Atualizando!! Agora é oficial! Já estão abertas as inscrições para o GUOB Tech Day 2017.

Esse ano o evento irá acontecer no campus Vergueiro da Universidade Uninove, o link para inscrição é esse –> https://guobtechday2017.eventize.com.br/ .

novo_banner

 

 

 

Em 29/05/2017

Olá,

Os preparativos para o GUOB 2017 estão em fase final, a data já está marcada, 05/08/2017… Dia de ver aqueles seus amigos nerds, ranzinzas, cervejeiros, barrigudos e é claro, DBAs. 😛 ..

guob

 

Advertisements
Categories: Uncategorized

Cloning PDB – Cloanando PDB entre CDBs Oracle 12c

Olá pessoal, no post de hoje vou mostrar como utilizar a feature de cloning remote pdb do oracle 12c.

 

Basicamente ele permite copiar um PDB de um CDB para outro via rede, é bem legal e tende a economizar um bom tempo quando o 12c estiver realmente sendo utilizado, vamos lá :

 

Resumo:

Source

CBD Name: o12c

PDB Name: plugdb1

 

Target

CDB Name: cdb1

PDB Name: plugdbcopy

 

1 – Conectando no banco de dados de origem com usuário administrativo.

 

2- Agora vamos conectar no PDB e criar um usario com os grans necessários para criar um PDB.

 

 

3 – Agora e necessário baixar o PDB plugdb1 (origen) e subir como open read only .

 

5 – No servidor de destino crie uma entrada de tnsnames para o PDB de origem.

 

plugdb1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.101)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = plugdb1)

)

)

 

6 – Agora entre no CDB destino, no nosso caso cdb1 e crie um database link utilizando o usuário criado acima.

 

7 – Garanta que esta conectado no CDB de destino e no container root.

 

 

8 – Agora a parte divertida, no banco de dados de destino emita o comando abaixo, ele ira criar um PDB plugdbcopy no cdb cdb1.

Create pluggable database plugdbcopy from plugdb1@copy_pdb ;

 

9 – O PDB criado estará no status mount, coloque em modo open e pronto.

alter session set container=plugdbcopy;

 

 

Abs e ate a próxima !

LH

 

Importante:

Parâmetro db_create_file_dest configurado no cdb destino

Pdb deve ter um nome único

 

 

Categories: Uncategorized

AWR – Todo mundo usa, poucos pagam !

Soube ontem que desde que me entendo por gente uso uma feature da Oracle sem pagar, o indispensável AWR faz parte do ORACLE DIAGNOSTICS PACK, e sendo assim é licenciadoa parte.

Para mais detalhes http://www.oracle.com/us/products/enterprise-manager/diagnostic-pack-11g-ds-068465.pdf .

 

Penso que p AWR é essencial e nao deveria ser cobrado a parte, faz parte do troubleshooting inicial de todos DBA´s que conheço.

 

Abs.

 

Categories: Administração, RAC Tags: ,

Criar Jobs para rodar em uma instancia especifica com Oracle 10gR2 (dbms_scheduler).

December 6, 2012 Leave a comment

Criar Jobs que rodarm em uma instancia especifica com Oracle 10gR2 (RAC)-  dbms_scheduler.

 

Olá!!

 

Para isso teremos que criar services específicos no Clusterware, em seguida criar JOB Classes e associar a esses services, e por ultimo criar um JOB associando ao JOB Classes criado na atividade anterior.

Vamos ao passo a passo:

 

Vou criar dois services, um para cada instância… Em resumo os services vão servir para eu conseguir forçar que com aquele service configurado só conecte na instancia 1 e com o outro só na instancia 2 e assim por diante.

 

— adicionando service preferencial para insancia 1

srvctl add service -d orcl -s pref_orcl1 -r orcl1

— adicionando service preferencial para insancia 2

srvctl add service -d orcl -s pref_orcl2 -r orcl2

 

Agora vamos iniciar os dois serviços.

srvctl start service -d orcl -s pref_orcl1

srvctl start service -d orcl -s pref_orcl2

 

Vamos validar se os serviços estão disponíveis.

srvctl status service -d orcl

Service jsl is running on instance(s) orcl1

Service pref_orcl1 is running on instance(s) orcl1

Service pref_orcl2 is running on instance(s) orcl2

 

Validando as configurações de preferencia dos serviços

 

srvctl config service -d orcl

 jsl PREF: orcl2 orcl1 AVAIL:

pref_orcl1 PREF: orcl1 AVAIL:

pref_orcl2 PREF: orcl2 AVAIL:

 

 

2- Agora vamos criar os job_classes e associar ao service que criamos na primeira atividade.

 

begin

sys.dbms_scheduler.create_job_class(job_class_name          => ‘ORCL1_JOB_CLASS’,

service  => ‘pref_orcl1’,

comments => ‘Job Class sera utilizado para encerrar sessoes que geram LOCK em inativiade’);

end;

/

 

begin

sys.dbms_scheduler.create_job_class(job_class_name          => ‘ORCL2_JOB_CLASS’,

service  => ‘pref_orcl2’,

comments => ‘Job Class sera utilizado para encerrar sessoes que geram LOCK em inativiade’);

end;

/

 

3 – Feito isso vamos a criação dos Jobs propriamente dito, no meu caso vou agendar Jobs que dão kill em sessões de um sistema da empresa que vira e mexe fica com a sessão inativa e “locando” N tabelas ao ponto de deixar o sistema todo indisponível.

Vou fazer o agendamento para cada dois minutos.

 

begin

  sys.dbms_scheduler.create_job(job_name            => ‘ROBOT.KILL_SESSION_SISTEMA_ORCL1’,

job_type            => ‘STORED_PROCEDURE’,

job_action          => ‘kill_session_lock’,

start_date          => to_date(’06-12-2012 00:00:00′, ‘dd-mm-yyyy hh24:mi:ss’),

repeat_interval     => ‘Freq=Minutely;Interval=2’,

end_date            => to_date(null),

job_class           => ‘ORCL1_JOB_CLASS’,

enabled             => true,

auto_drop           => false,

comments            => ‘Mata sessoes do usuario sistema que estao gerando lock na base – instancia1’);

end;

/

 

begin

  sys.dbms_scheduler.create_job(job_name            => ‘ROBOT.KILL_SESSION_SISTEMA_ORCL2’,

job_type            => ‘STORED_PROCEDURE’,

job_action          => ‘kill_session_lock’,

start_date          => to_date(’06-12-2012 00:00:00′, ‘dd-mm-yyyy hh24:mi:ss’),

repeat_interval     => ‘Freq=Minutely;Interval=2’,

end_date            => to_date(null),

job_class           => ‘ORCL1_JOB_CLASS’,

enabled             => true,

auto_drop           => false,

comments            => ‘Mata sessoes do usuario sistema que estao gerando lock na base – instancia2’);

end;

/

 

Pronto, agora é so acompanhar a execução do job, isso pode ser feito usando a seguite query.

 

select * from dba_scheduler_job_log

where job_name like ‘KILL_SESSION_SISTEMA_%’

 

 

Abs,

LuizHenrique

Categories: Uncategorized

Trigger de after logon não funciona para usuarios DBA – Raise_application_error procedure in AFTER LOGON trigger

December 1, 2012 1 comment

Olá Pessoal.

Tinha um grande problema na empresa que trabalho… Existem alguns usuários de aplicação que são monstros com grant de DBA, foram criados a mais de dez anos com essa permissão e hoje e impossível mapear sistemas satélites que se conectam através desse usuário  e é claro que os desenv. e analistas utilizavam esse usuário e faziam qualquer coisa no BD :/. Bom fiz trigger de after logon, más usuário com grant de DBA atropela e a trigger não funciona, então criei um procedure que matava a sessão a cada 10 segundos, o que também não adiantava, pois o cara deixava o reconect do toad ativado e nem ligava pra minha procedure.

Em resumo falei com o meu amigo Fabeta, ele já tinha lido uma dica do Tom falando pra criar uma role com os mesmos privilegios de DBA más com outro nome, não funfou, más foi o caminho das pedras 😀 … Tirei alguns grants que achava exagerado (ainda existem N grants exagerados), mas essa e a V1 da role, vou limpar melhor, so preciso ter certeza que a aplicação não vai parar de funcionar, dentre alguns grants que me lembro ter removidos foram:

 

Imp ful database.

exp full database.

Alguns relacionados ao dbms_scheduler, resource manager, advisors e etc.

grant administer database trigger to DBA with admin option;

 

Em seguida removi a role dba do usuário e dei permissão nessa que criei, e funcionou! Repito, vou melhorar e remover mais grants desnecessários, de qualquer forma com essas customizações já funciona!!

Abs,

Como configurar Multipath no linux.

October 4, 2012 Leave a comment

Pessoal,

 

Esse post explica de forma bem objetiva como fazer configuração do multipath do linux, recurso muito utilizado em ambientes de alta disponibilidade, no meu caso estava usando um single instance comum com ASM.

 

Configurar Multipath

— verifica status do serviço
service multipathd status

— habilita o mesmo na inicialização do sistema
chkconfig multipathd on

— Cria os devices virtuais.
multipath -v 3

— Lista os vdisks
multipath -ll

— Saida do comando
sdax: checker msg is “emc_clariion_checker: Logical Unit is unbound or LUNZ”
sday: checker msg is “emc_clariion_checker: Logical Unit is unbound or LUNZ”
sdc: checker msg is “emc_clariion_checker: Logical Unit is unbound or LUNZ”
sdd: checker msg is “emc_clariion_checker: Logical Unit is unbound or LUNZ”
mpath2 (360050768028201d0680000000000001c) dm-2 IBM,2145
[size=200G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=400][active]
\_ 4:0:11:0 sdal 66:80 [active][ready]
\_ 4:0:12:0 sdao 66:128 [active][ready]
\_ 4:0:13:0 sdar 66:176 [active][ready]
\_ 4:0:14:0 sdau 66:224 [active][ready]
\_ 3:0:14:0 sdq 65:0 [active][ready]
\_ 3:0:15:0 sdt 65:48 [active][ready]
\_ 3:0:16:0 sdw 65:96 [active][ready]
\_ 3:0:17:0 sdz 65:144 [active][ready]
\_ round-robin 0 [prio=70][enabled]
\_ 4:0:8:0 sdac 65:192 [active][ready]
\_ 4:0:9:0 sdaf 65:240 [active][ready]
\_ 4:0:10:0 sdai 66:32 [active][ready]
\_ 3:0:10:0 sde 8:64 [active][ready]
\_ 3:0:11:0 sdh 8:112 [active][ready]
\_ 3:0:12:0 sdk 8:160 [active][ready]
\_ 3:0:13:0 sdn 8:208 [active][ready]
mpath1 (360050768028201d0680000000000001e) dm-1 IBM,2145
[size=200G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=400][enabled]
\_ 3:0:17:2 sdab 65:176 [active][ready]
\_ 4:0:11:2 sdan 66:112 [active][ready]
\_ 4:0:12:2 sdaq 66:160 [active][ready]
\_ 4:0:13:2 sdat 66:208 [active][ready]
\_ 4:0:14:2 sdaw 67:0 [active][ready]
\_ 3:0:14:2 sds 65:32 [active][ready]
\_ 3:0:15:2 sdv 65:80 [active][ready]
\_ 3:0:16:2 sdy 65:128 [active][ready]
\_ round-robin 0 [prio=70][enabled]
\_ 4:0:8:2 sdae 65:224 [active][ready]
\_ 4:0:9:2 sdah 66:16 [active][ready]
\_ 4:0:10:2 sdak 66:64 [active][ready]
\_ 3:0:10:2 sdg 8:96 [active][ready]
\_ 3:0:11:2 sdj 8:144 [active][ready]
\_ 3:0:12:2 sdm 8:192 [active][ready]
\_ 3:0:13:2 sdp 8:240 [active][ready]
mpath0 (360050768028201d0680000000000001d) dm-0 IBM,2145
[size=200G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=350][enabled]
\_ 4:0:8:1 sdad 65:208 [active][ready]
\_ 4:0:9:1 sdag 66:0 [active][ready]
\_ 4:0:10:1 sdaj 66:48 [active][ready]
\_ 3:0:10:1 sdf 8:80 [active][ready]
\_ 3:0:11:1 sdi 8:128 [active][ready]
\_ 3:0:12:1 sdl 8:176 [active][ready]
\_ 3:0:13:1 sdo 8:224 [active][ready]
\_ round-robin 0 [prio=80][enabled]
\_ 3:0:17:1 sdaa 65:160 [active][ready]
\_ 4:0:11:1 sdam 66:96 [active][ready]
\_ 4:0:12:1 sdap 66:144 [active][ready]
\_ 4:0:13:1 sdas 66:192 [active][ready]
\_ 4:0:14:1 sdav 66:240 [active][ready]
\_ 3:0:14:1 sdr 65:16 [active][ready]
\_ 3:0:15:1 sdu 65:64 [active][ready]
\_ 3:0:16:1 sdx 65:112 [active][ready]
— Descricao do comando
# parte da saída do comando acima
mpath0 (36001438009b0190600003000002f0000) dm-0 IBM,2145

# Nome do device
mpath0

# ID
360050768028201d0680000000000001d

— Criando alias para o vdisk (fazer backup do arquivo antes).
— Na parte de multipath configurar conforme abaixo.

vi /etc/multipath.conf

multipaths {

# alias do devicem path0
multipath {
# ID do device
wwid 360050768028201d0680000000000001d
# nome com o qual ele ira aparecer no sistema
alias ASMDISK_01
}
# alias do device mapth1
multipath {
wwid 360050768028201d0680000000000001e
alias ASMDISK_02
}
# alias do device mapth2
multipath {
wwid 360050768028201d0680000000000001c
alias ASMDISK_03
}
}
— Restarta o serviço
service multipathd restart

— Localizacao do device
[root@srvwmsbd1 mapper]# pwd
/dev/mapper
[root@srvwmsbd1 mapper]# ls
ASMDISK_01 ASMDISK_02 ASMDISK_03 control
[root@srvwmsbd1 mapper]#

 

 
mpath0 (360050768028201d0680000000000001d) dm-0 IBM,2145

mpath1 (360050768028201d0680000000000001e) dm-1 IBM,2145

mpath2 (360050768028201d0680000000000001c) dm-2 IBM,2145

multipaths {

# alias do devicem path0
multipath {
# ID do device
wwid 360050768028201d0680000000000001d
# nome com o qual ele ira aparecer no sistema
alias ASMDISK_01
}
# alias do device mapth1
multipath {
wwid 360050768028201d0680000000000001e
alias ASMDISK_02
}
# alias do device mapth2
multipath {
wwid 360050768028201d0680000000000001c
alias ASMDISK_03
}
}
Outra dica é para adicionar Lun a quente no server Linux, caso contrário é necessário reiniciar o server.
Eu so conheço essa forma, se existir outra postem ai please.

— Adicionar LUN no servidor a quente.

echo “- – -” > /sys/class/scsi_host/host3/scan
Essa é uma configuração básica do multipath, o ideal é ler a documentação e customizar o multipath.conf as suas
necessidades.

Tks.
Abs.

 

Mover controlfile para o ASM

Olá Pessoal.

Criando um novo banco com ASM fiz um “corno job”… Deixei o controlfile somente no filesystem. Bom resumindo, tive que parar o banco que já estava em produção para multiplexar o controlfile e deixa-lo também no ASM, até porque só tenho um DISKGROUP no ASM.

Vamos aos steps :

1 – Identificar o local do controlfile.

select name from v$controlfile;

/oracle/product/db/10.2/wms/dbs/control01.ctl’

2 – Baixar a instância e subir em nomount;

Shutdown normal;

Startup nomount;

3 – Movimentar o controlfile para o ASM.

Rman target /

Restore controlfile from ‘/oracle/product/db/10.2/wms/dbs/control01.ctl’ to ‘+DATA’;

4 – Encontrar o path que foi restaurado o controlfile (Dentro do ASMCMD).

find -t CONTROLFILE +DATA *

5 – Editar o init do banco e acrescentar o path do ctrl do ASM.

control_files=”+data/wms/controlfile/current.284.787245295′

6 – Baixar a base de dados.

Shutdown immediate;

7 – Iniciar instancia.

Startup mount;

Abs,