Oracle e-mais
Dedicado a dicas sobre banco de dados Oracle, linux, Application Express (conhecido com HTMLDB), softwares que uso (preferencialmente freeware) e qualquer outra coisa que eu queria.
segunda-feira, maio 27, 2013
Ferramenta tipo TOP para Oracle
MOATS - The Mother of All Tuning Scripts
Video:
Link para download e outras informações:
http://blog.tanelpoder.com/2011/03/29/moats-the-mother-of-all-tuning-scripts/
SQL Dashboard
Video:
Download e mais informações:
http://jagjeet.wordpress.com/
terça-feira, maio 21, 2013
Processo que está usando uma certa porta
netstat -tulpn
ou sua variante:
netstat -tulpn|grep 3938
Saída:
tcp 0 0 0.0.0.0:3938 0.0.0.0:* LISTEN 26746/emagent
Nesse caso o cara que estava ocupando a porta era o Agente do Oracle.
segunda-feira, abril 22, 2013
Usando a cláusula VALUES do ALTER USER no Oracle 11g (fazendo um SU no Oracle)
segunda-feira, março 18, 2013
Mudar o prompt do SQLPlus
terça-feira, fevereiro 26, 2013
TPS - Transações Por Segundo
select min(begin_time), max(end_time),
sum(case metric_name when 'User Commits Per Sec' then average end) User_Commits_Per_Sec,
sum(case metric_name when 'User Rollbacks Per Sec' then average end) User_Rollbacks_Per_Sec,
sum(case metric_name when 'User Transaction Per Sec' then average end) User_Transactions_Per_Sec,
snap_id
from dba_hist_sysmetric_summary
where trunc(begin_time) > sysdate-7
group by snap_id
order by snap_id;
O resultado será algo assim:
sexta-feira, janeiro 04, 2013
Instalar Oracle instant client
segunda-feira, setembro 10, 2012
Mudar senha do usuário SYS da instância ASM
- Mude as variávies de ambiente ORACLE_HOME e ORACLE_SID para a instancia ASM
- connect /as sysdba no sqlplus
- O parâmetro "remote_login_passwordfile" deve ter o valor EXCLUSIVE
- Renomeie ou delete o arquivo atual PWD
.ora( In Windows) / orapw ( in UNIX) - Execute
WINDOWS:
orapwd file=
UNIX:
orapwd file=
No Oracle 11g é possível realizar essa tarefa assim:
[oracle@rac1 dbs]$ sqlplus
SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 10 16:01:08 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name: /as sysasm
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> alter user sys identified by oracle;
User altered.
Confirmando que o arquivo foi alterado:
[oracle@rac1 dbs]$ ll
total 40
-rw-rw---- 1 oracle oinstall 1746 Aug 16 16:33 ab_+ASM1.dat
-rw-rw---- 1 oracle oinstall 1544 Sep 1 11:04 hc_+ASM1.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 1536 Sep 10 16:01 orapw+ASM
[oracle@rac1 dbs]$ ll
total 40
-rw-rw---- 1 oracle oinstall 1746 Aug 16 16:33 ab_+ASM1.dat
-rw-rw---- 1 oracle oinstall 1544 Sep 1 11:04 hc_+ASM1.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 1536 Sep 10 16:13 orapw+ASM
segunda-feira, agosto 13, 2012
Outro post sobre podcast
segunda-feira, agosto 06, 2012
FK sem índices
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4530093713805#26568859366976
MEU
Eu criei uma versão baseada no original do Tom Kyte que além de mostrar o nome das tabelas, FKs e da colunas, ainda gera o comando de CREATE INDEX para as FKs.
# Execute no schema que deve ser avaliado
select table_name, constraint_name,columns , 'CREATE INDEX '||constraint_name||'_idx ON '||table_name||'('||columns||');' indice
from
(
select table_name, constraint_name,
cname1 || nvl2(cname2,','||cname2,null) ||
nvl2(cname3,','||cname3,null) || nvl2(cname4,','||cname4,null) ||
nvl2(cname5,','||cname5,null) || nvl2(cname6,','||cname6,null) ||
nvl2(cname7,','||cname7,null) || nvl2(cname8,','||cname8,null)
columns
from ( select b.table_name,
b.constraint_name,
max(decode( position, 1, column_name, null )) cname1,
max(decode( position, 2, column_name, null )) cname2,
max(decode( position, 3, column_name, null )) cname3,
max(decode( position, 4, column_name, null )) cname4,
max(decode( position, 5, column_name, null )) cname5,
max(decode( position, 6, column_name, null )) cname6,
max(decode( position, 7, column_name, null )) cname7,
max(decode( position, 8, column_name, null )) cname8,
count(*) col_cnt
from (select substr(table_name,1,30) table_name,
substr(constraint_name,1,30) constraint_name,
substr(column_name,1,30) column_name,
position
from user_cons_columns ) a,
user_constraints b
where a.constraint_name = b.constraint_name
and b.constraint_type = 'R'
group by b.table_name, b.constraint_name
) cons
where col_cnt > ALL
( select count(*)
from user_ind_columns i
where i.table_name = cons.table_name
and i.column_name in (cname1, cname2, cname3, cname4,
cname5, cname6, cname7, cname8 )
and i.column_position <= cons.col_cnt
group by i.index_name
)
)
segunda-feira, julho 23, 2012
Quando acaba o suporte para cada versão do banco de dados Oracle
Por isso é extremamente importante manter o seu banco de dados atualizado, dessa forma você garante que em um momento de necessidade será possível utilizar o suporte especializado do fabricante para ajudar a resolver os problemas.
A figura abaixo mostra detalhes sobre o suporte ao banco de dados Oracle:
Figura retirada do documento abaixo:
http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf
Para maiores detalhes acesse o site de suporte da Oracle https://support.oracle.com e veja o note abaixo:
Lifetime Support and Support Policies - Oracle Database Overview [ID 1351163.1]
quinta-feira, julho 12, 2012
Ativar e desabilitar events
Ativar
ALTER SYSTEM SET event='10195 trace name context forever, level 1' SCOPE=SPFILE;
Desativar
ALTER SYSTEM SET event='10195 trace name context off' SCOPE=SPFILE;
quarta-feira, julho 04, 2012
Ver o tamanho dos arquivos em Mega Bytes
terça-feira, junho 26, 2012
Percentual usado do Swap
segunda-feira, maio 28, 2012
Memória por processo no AIX
# svmon -Pt15 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'
--------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB
16264 IBM.ServiceRM 10075 3345 3064 13310 N Y N
17032 IBM.CSMAgentR 9791 3347 3167 12944 N Y N
21980 zsh 9457 3337 2710 12214 N N N
22522 zsh 9456 3337 2710 12213 N N N
13684 getty 9413 3337 2710 12150 N N N
26590 perl5.8.0 9147 3337 2710 12090 N N N
7514 sendmail 9390 3337 2878 12258 N N N
14968 rmcd 9299 3340 3224 12596 N Y N
18940 ksh 9275 3337 2710 12172 N N N
14424 ksh 9270 3337 2710 12169 N N N
4164 errdemon 9248 3337 2916 12255 N N N
3744 cron 9217 3337 2770 12125 N N N
11424 rpc.mountd 9212 3339 2960 12290 N Y N
21564 rlogind 9211 3337 2710 12181 N N N
26704 rlogind 9211 3337 2710 12181 N N N
terça-feira, maio 08, 2012
MyOra, ferramenta free e interessante
quarta-feira, maio 02, 2012
Share do Oracle
- Is #1 in worldwide RDBMS software revenue share
Holds more revenue share than its seven closest competitors combined
Grew at 18.0 percent, exceeding both the industry average (16.3 percent) and the growth rates of its closest competitors.
quinta-feira, abril 26, 2012
Oracle MySQL
segunda-feira, abril 23, 2012
Outros bancos para DBAs Oracle
SQL Server 2008 for Oracle DBA
Esse é um curso online, disponibilizado pela própria Microsoft, com conteúdo em vídeo e dividido em vários módulos.
http://technet.microsoft.com/en-us/sqlserver/dd548020
Leverage your Oracle 11g skills to learn DB2 9.7 for Linux, UNIX and Windows
Essa página, mantida pela IBM, fornece muitas informações para profissionais Oracle.
http://www.ibm.com/developerworks/data/library/techarticle/dm-0401gupta/
sexta-feira, abril 20, 2012
Frase do DIA
Em tradução Livre:
"Um bom DBA vai passar no exame de OCP, mas alguém que seja OCP não é necessariamente um bom DBA."
Original:
"A good DBA will pass the OCP, but someone who passes the OCP is not necessarily a good DBA."
http://www.oracledba.co.uk/ocp.htm
quinta-feira, abril 19, 2012
Como fazer o deploy de um Oracle Database Appliance
No post anterior eu falei sobre o Oracle Database Appliance. Agora vou mostrar alguma fotos de como se faz o deploy de um appliance desse. A ferramenta utilzada é o Oracle Appliance Manager.
Nessa primeira tela, são feitas algumas pergunta básicas. Nome do Sistema, Região, senha de root e etc.
Nessa outra tela conseguimos ver as informações de rede que precisam ser fornecidas. Aqui vão nome dos nós, os endereços IPs Públicos, VIPs e SCAN entre outra informações.
Disponilizar um Oracle RAC usando o Oracle Database Appliance parece ser uma tarefa bem simples.
Para mais informações acesses o post Original em:
https://blogs.oracle.com/dragonfly/entry/making_easy_easier
terça-feira, abril 17, 2012
Oracle Database Appliance
Fonte: http://www.oracle.com/us/products/database/database-appliance/resources/index.html
segunda-feira, abril 16, 2012
Oracle RDBMS Server 11gR2 Pre-Install RPM para Oracle Linux 6
O Oracle Linux tinha um pacote muito interessante chamado de oracle-validated que facilitava a vida de quem queria instalar produtos Oracle no Oracle Linux automatizando algumas das tarefas, tais como configurar parâmetros de Kernel e modificar limites. O novo pacote chama-se oracle-rdbms-server-11gR2-preinstall e está disponível para Oracle Linux 6.
Artigo original: https://blogs.oracle.com/linux/entry/oracle_rdbms_server_11gr2_pre
quinta-feira, abril 12, 2012
Existe uma App para isso
O aplicativo permite ver os update do Oracle Technology Network e ver informações como Notícias, Blogs, Eventos, Videos e etc.
Link do aplicativo: http://itunes.apple.com/br/app/oracle/id392079209?mt=8
Veja algumas Screenshots:
Fonte: https://blogs.oracle.com/otn/entry/otn_there_s_an_app
quarta-feira, abril 11, 2012
Oracle Database 11g certificado em Oracle Linux 6 e Red Hat Enterprise Linux 6
Boa notícia para quem está querendo fazer alguma implantação ou atualização no seu ambiente e gostaria de colocar as versões mais atualizadas do SO.
Fonte: http://www.oracle.com/us/corporate/press/1563775
Mais informações sobre o Oracle Linux 6 aqui.
Download do Oracle linux 6 aqui.
terça-feira, abril 10, 2012
Metalink volta a ter uma versão HTML
Felizmente temos novamente uma versão HTML, mais rápida e com praticamente a mesma interface de antes.
Acesso ao metalink HTML: supporthtml.oracle.com
Documentação da Oracle sobre a nova interface: Doc ID 1385682.1
Fonte: https://blogs.oracle.com/ebs/entry/the_new_my_oracle_support
Empresa de consultoria em tecnologias Oracle
terça-feira, janeiro 24, 2012
Uma rapidinha - Língua de uma data
Em português:
2 from dual;
TO_CHAR(SYSDATE,'DAY','NLS_DAT
------------------------------
Terça-Feira
SQL> select TO_CHAR(sysdate, 'Day', 'NLS_DATE_LANGUAGE= ''Dutch''')
2 from dual;
TO_CHAR(SYSDATE,'DAY','NLS_DAT
------------------------------
Dinsdag
segunda-feira, janeiro 09, 2012
Script para matar sessões inativas
STATUS is currently ACTIVE, then the value represents the elapsed time in seconds since the session has become active.STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive.terça-feira, janeiro 03, 2012
quarta-feira, novembro 30, 2011
Acompanhar andamento de jobs do RMAN
select sid,
serial#,
context,
sofar completado,
totalwork total,
round(sofar/totalwork*100,2) "% Completado"
from
v$session_longops
where
opname like 'RMAN%'
and opname not like '%aggregate%'
and totalwork != 0
and sofar <> totalwork;
terça-feira, setembro 06, 2011
Leitor de código de barra no iPhone
sexta-feira, agosto 12, 2011
Fazer Select no Alert Log
Crie um Directory apontando para onde está o seu alert log:
create directory BDUMP as '/u01/app/oracle/admin/desv/bdump';
Crie a external Table:
create table
alert_log ( msg varchar2(80) )
organization external (
type oracle_loader
default directory BDUMP
access parameters (
records delimited by newline
)
location('alert_desv1.log')
)
reject limit 1000;
Faça a consulta:
select * from alert_log where msg like 'ORA-%'
Resultado:
MSG
---------------------------------------------------------
ORA-00942: table or view does not exist
ORA-15064: communication failure with ASM instance
ORA-03113: end-of-file on communication channel
ORA-15064: communication failure with ASM instance
ORA-15064: communication failure with ASM instance
sexta-feira, julho 29, 2011
Mais uma ótima ferramenta: Swingbench
Imagine o seguinte cenário, Você acabou de instalar um Oracle RAC naquele servidor novo com muitos gigas de memória e super processadores. Agora você precisa saber se a configuração dessa novas estrutura está boa, quantas sessões e transações ela suporta, se dá pra melhorar alguma configuração e etc. É nesse momento que entra o Swingbench. Ferramenta desenvolvida em Java e por isso funciona em várias plataformas. Sua configuração é bem simples e para fazer a instalação siga os passos que estão aqui.
Uma screenshot tirada de um teste meu:

Gostou da ferramenta? Gostou do Post? Quer saber mais sobre um assunto específico? Então comente e deixe eu saber a sua opinião.
quarta-feira, junho 29, 2011
Mais uma ótima ferramenta: CPU Monitor

Para configurar simplesmente edite o arquivo chamado cpu.xml dentro da pasta bin e faça a configuração como mostrado abaixo:

Para mais informações acesse:
http://www.dominicgiles.com/cpumonitor.html
quinta-feira, maio 12, 2011
Essa é uma frase que eu gosto muito
Quem não sabe SQL talvez não entenda, mas eu gosto muito dessa frase porque passa a informação de forma clara e simples:
SELECT finger FROM hand WHERE id=3
Pode-se comprar uma camisa com ela aqui:
http://www.thinkgeek.com/tshirts-apparel/unisex/itdepartment/ccc0/
sexta-feira, abril 29, 2011
Trigger de logon para pegar informações da sessão do usuário
O script abaixo cria uma trigger que salva as informações dos
usuários que venham a se logar Oracle. Ela pode ser customizada
para incluir outras colunas da v$session.
CONNECT / AS SYSDBA
DROP TABLE user_login_audit;
CREATE TABLE user_login_audit (
login_time DATE,
username VARCHAR2(30),
machine VARCHAR2(30),
command VARCHAR2(128)
);
CREATE OR REPLACE TRIGGER user_login_trig
AFTER LOGON ON scott.SCHEMA
DECLARE
v_username sys.v_$session.username%TYPE;
v_machine sys.v_$session.machine%TYPE;
v_command sys.v_$session.command%TYPE;
BEGIN
SELECT username, machine, command
INTO v_username, v_machine, v_command
FROM sys.v_$session
WHERE audsid = USERENV('SESSIONID')
AND audsid != 0 -- Don't Check SYS Connections
AND ROWNUM = 1; -- Parallel processes will have the same AUDSID's
INSERT INTO sys.user_login_audit
VALUES (SYSDATE, v_username, v_machine, v_command);
IF UPPER(v_machine) LIKE '%PC1%' THEN -- Start SQL trace for users from PC1
DBMS_SESSION.set_sql_trace(TRUE);
END IF;
END;
/
SHOW ERRORS
CONNECT SCOTT/TIGER
CONNECT / AS SYSDBA
SELECT * FROM sys.user_login_audit;
O código acima foi retirado de:
http://psoug.org/snippet/Oracle-PL-SQL-Audit-User-Logins-User-Login-Trigger_517.htm
quarta-feira, abril 13, 2011
Podcasts
Podcast é o nome dado ao arquivo de áudio digital, geralmente em formato MP3 ou AAC (este último pode conter imagens estáticas e links), publicado através de podcasting na internet e atualizado via RSS. Também pode se referir a série de episódios de algum programa quanto à forma em que este é distribuído. A palavra é uma junção de iPod ou de "Personal On Demand" (numa tradução literal, algo pessoal e sob demanda) e broadcast (transmissão de rádio ou televisão). O podcast em vídeo chama-se "videocast", geralmente em arquivo formato MP4.
http://pt.wikipedia.org/wiki/Podcast
Podemos assinar podcasts e utilizar softwares para gerenciá-los e quando novos episódios são lançados eles são automaticamente baixado e dependendo do software inclusive sincronizado com um dispositivo.
Eu utilizo o iTunes para fazer o gerenciamento de podcasts além de baixar ele sincroniza automaticamente com meu iPod e iPhone. No Android eu utilizo o BeyondPod que baixa diretamente no celular e pode ser usado para ler RSS também.
A lista dos podcasts que eu assino hoje:
Podcast CBN
- Arnaldo Jabor
- Lucia Hippolito
- Miriam Leitão
- Fórmula 1
- CBN Tecnologia da Informação
- Carlos Alberto Sardenberg
- Autoesporte
- Sala de Música
- Dois na Web
Nerd
Esse é o que eu mais gosto.
Da revista info
Para quem gosta de assuntos Geeks
Comédia
sexta-feira, abril 01, 2011
Alterar a velocidade do rebalanceamento no ASM
ASM_POWER_LIMIT.Determinar o nível de rebalanceamento diretamente no comando SQL:
ALTER DISKGROUP dev_data ADD DISK
'/dev/rhdisk25',
'/dev/rhdisk26',
'/dev/rhdisk27',
'/dev/rhdisk28',
'/dev/rhdisk44'
REBALANCE POWER 11;
Alterar o valor em uma operação em andamento:
ALTER DISKGROUP dev_data REBALANCE POWER 8;
Calcular percentual completado de operação de rebalanceamento ASM
Podemos acompanhar o andamento do processo de balanceamento através de uma consulta simples:
SELECT group_number,
operation,
state,
power,
sofar,
est_work,
ROUND((sofar*100)/est_work)||'%' pct,
est_minutes
FROM v$asm_operation
e o resultado:
GROUP_NUMBER OPERA STAT POWER REALIZADO TOTAL PCT EST_MINUTES
------------ ----- ---- ---------- ---------- ---------- ----- -----------
1 REBAL RUN 4 88774 312637 28% 72
terça-feira, março 22, 2011
Signficado da palava CAPTCHA
CAPTCHA = Completely Automated Public Turing test to tell Computers and Humans Apart
quarta-feira, fevereiro 23, 2011
Problemas de performance na migração de single instance para RAC
Existem alguns problemas de performance que podem acontecer quando se migra uma aplicação de ambiente single instance para ambiente RAC
- Contenção em índices
Normalmente acontece com cargas e processamentos batch que inserem muitas informações em tabelas indexadas. Os eventos de espera que indicam esse problema são:
- · enq: TX - index contention
- · gc buffer busy
- · gc current block busy
- · gc current split
Para resolver esse problema podemos usar índices reversos ou mesmo usar uma chave natural (CPF por exemplo) ao invés de valores gerados por sequences.
2. Contenção na marca d’água
Acontece quando o Oracle precisa frequentemente alocar mais espaço para os seguimentos. É caracterizada pelo eventos:
- enq: HW –contention
- gc current grant
Para resolver o problema devemos usar extents maiores e de tamanho uniforme em tablespaces gerenciadas localmente e com espaço de segmento gerenciado automaticamente.
3. Contenção em índices que tem os valores de suas colunas gerados por sequencias
Valores chave de indices que são gerados por sequencia podem se tornar um gargalo, pois o bloco que contem a maior chave precisará ser modificado para cada valor inserido.
Para evitar esse problema podemos usar as opções CACHE NOORDER para as sequencias e com um valor de cache mais que o padrão de que é 20.
4. Contenção em blocos de Undo
Caracterizado pelo envio excessivo e contenção nos blocos de Undo e acontece quando blocos de índices que contem transações ativas de várias instancias são frequentemente lidos.
Pode ser evitados alterando-se o código da aplicação para que faça transações menores aumentado o cache das sequences.









