Emerson S. Gaudêncio

Emerson dos Santos Gaudêncio é Analista de Sistemas/ Banco de dados, atualmente trabalha como Analista de Sistemas/Desenvolvedor PL/SQL Oracle na Ábaco Tecnologia da Informação – Cuiabá-MT, Formado em Analise e Desenvolvimento de Sistemas – UNIRONDON-MT; Apaixonado por Tecnologia de banco de dados como o SGBD Oracle, MySQL , MS SQL Server e PostgreSQL. Gosto de musica e nunca dispenso tocar uma guitarra e violão com os Amigos. Blog pessoal: http://blog.gaudencio.net.br – Artigos sobre Banco de dados, Tecnologias de Redes e Servidores Linux e Windows.

[Oracle] – Verificando Queries mais demoradas

Bom pessoal, segue dica para verificar as queries mais demoras no seu Banco de dados Oracle.Através da consulta abaixo podemos ter as consultas que estão mais demoradas: select sql_text, elapsed_time/1000000 elapsed_sec, executions, disk_reads, buffer_getsfrom v$sqlareaorder by elapsed_time desc; Através da consulta abaixo podemos ter as 100 consultas que estão mais demoradas no banco de dados Oracle: select * from (select sql_text, elapsed_time/1000000 elapsed_sec, executions, disk_reads, buffer_gets from v$sqlarea order by elapsed_time desc) where rownum <= 100; Espero que essa dica possa ajudar. Que a Graça e Continue lendo

[ORACLE] – Identificando SQL problemático

A view V$SQL mostra as instruções SQL que estão no pool compartilhado juntamente com estatísticas sobre sua operação. Isso a torna essencial para examinar as instruções SQL. Este post será bem curto e objetivo, mostrando 3 exemplos de consultas utilizando essa view de forma bem prática e útil. Top 10 – SQL mais executados: SELECT sql_text, executions   FROM (SELECT sql_text, executions,         RANK() OVER (ORDER BY executions DESC) exec_rank         FROM v$sql)  WHERE exec_rank <= 10; Top 10 – SQL que mais exigiram leituras físicas: SELECT sql_text, disk_reads  FROM (SELECT sql_text, Continue lendo

[ORACLE] – Desabilitar expiração de senha no Oracle

Bom pessoal , aqui vai mais uma dica para DBA Oracle, para evitar problemas na manutenção de contas de usuário no Oracle, que em alguns casos é pré-requisito para implantação de sistemas ERP dentro do SGBD Oracle. — Desabilita expiração de senha no Oracle — ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED; — Seleciona usuário/ data_expiração / status_conta — select username,expiry_date,account_status from dba_users;   — Altera senha e desbloqueia a conta — alter user teste identified by “teste123” account unlock; Espero ajudar com essa Continue lendo

[Oracle] – Verificando sessões utilizadas e matando sessões

  Bom pessoal, esse post no ajudará a identificar as sessões utilizadas no nosso banco de dados Oracle, e através das consultas abaixo, poderemos gerar um script para matar as sessões do banco de dados, para uma eventual manutenção ou atualização de sistema. — Verifica usuários que estão conectados no Oracle SELECT S.SID, S.SERIAL#, S.USERNAME, S.MACHINE FROM V$SESSION S — Mata Sessões no Oracle select ‘ALTER SYSTEM KILL SESSION ”’||sid||’,’||serial#||”’ IMMEDIATE;’ as “MataUsuariosConectados” from v$session where username is not null and username not in (‘SYS’, Continue lendo

[Oracle] – Verificando os Cursores abertos no Banco de dados

Bom pessoal, segue uma dica para verificar os cursores abertos no banco de dados e na sessão do usuário Oracle.Verificando cursores abertos no Banco de dados: select max(a.value) as highest_open_cur, p.value as max_open_cur from gv$sesstat a, gv$statname b, gv$parameter p where a.statistic# = b.statistic# and b.name = ‘opened cursors current’ and p.name = ‘open_cursors’ group by p.value; Verificando cursores abertos na Sessão do Banco de dados: select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic# and s.sid = Continue lendo

[Oracle] – Identificar Locks em Sessões

Bom pessoal, segue dica rápida para identificar locks entre sessões no Oracle. select h.session_id Sessao_Travadora, ub.username Usuario_Travador ,w.session_id Sessao_Esperando, uw.username Usuario_Esperando, w.lock_type, h.mode_held, w.mode_requested, w.lock_id1, w.lock_id2 from dba_locks w, dba_locks h, v$session ub, v$session uw where h.blocking_others = ‘Blocking’ and h.mode_held!= ‘None’ and h.mode_held!= ‘Null’ and h.session_id = ub.sid and w.mode_requested != ‘None’ and w.lock_type = h.lock_type and w.lock_id1 = h.lock_id1 and w.lock_id2 = h.lock_id2 and w.session_id = uw.sid; Espero que essa dica possa ajudar a outros profissionais de Banco de dados que estejam precisando identificar problemas Continue lendo

[PostgreSQL] – Tamanho das Tabelas no Banco de Dados

Em muitos casos é preciso saber o espaço em que as tabelas do banco de dados estão utilizando em disco, para fins de monitoramento e decisão de estruturação de banco. Para tal tarefa no PostgreSQL o comando abaixo resolve o problema. SELECT esquema, tabela, pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho, pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total FROM (SELECT tablename AS tabela, schemaname AS esquema, schemaname||’.’||tablename AS esq_tab FROM pg_catalog.pg_tables WHERE schemaname NOT IN (‘pg_catalog’, ‘information_schema’, ‘pg_toast’) ) AS x ORDER BY pg_total_relation_size(esq_tab) DESC; A coluna tamanho mostra o tamanho que os registros (tuplas) Continue lendo

[PostgreSQL] – Consultando e eliminando sessões ativas

Bom pessoal vou mostrar como listar/matar as sessões ativas no PostgreSQL . O sql a seguir lista todas as sessões ativas. select datname, procpid, usename, application_name, client_addr, client_hostname, backend_start from pg_stat_activity Obs: A coluna procid foi renomeada para pid a partir da versão 9.2 do PostgreSQL Com a lista de usuário em mãos, podemos optar por “matar” a sessão de algum usuário ativo, para isto basta executar o comando abaixo, substituindo o “procpid’ pelo valor retornado da consulta anterior. select pg_terminate_backend(procpid); E para eliminar todas Continue lendo

[MySQL] – Migrando MySQL para PostgreSQL

Bom pessoal, segue abaixo instruções para migração de bancos de dados MySQL para PostgreSQL com a ferramenta da EnterpriseDB. Link para download da Ferramenta: https://www.dropbox.com/s/0en05h9goejgapz/EnterpriseDB-MigrationToolkit.zip?dl=0 Podemos também fazer o download pelo site da EnterpriseDB: http://www.enterprisedb.com/products-services-training/products-overview/postgres-plus-solution-pack/migration-toolkit Migra Somente estrutura do Banco de dados sem chaves estrangeiras cmd>runMTK.bat -schemaOnly -allTables -constraints -skipFKConst -sourcedbtype mysql employees Migra somente os dados através de lotes de dados cmd>runMTK.bat -dataOnly -fetchSize 1 -sourcedbtype mysql employees Migra todo banco de dados com constraints e dados cmd>runMTK.bat -fetchSize 1 -sourcedbtype mysql employees ——- Continue lendo

[PostgreSQL] – Alterando o encoding de um banco

Bem, essa dica não serve para converter um banco já existente de UTF-8 para LATIN1, para isso existem outras técnicas. A idéia apresentada aqui é para quando você tem um Dump LATIN1 e precisa restaurar em um novo servidor com o mesmo encoding, mas o Locale de seu Sistema Operacional não permite que você crie um banco LATIN1. O erro de Locale aparece quando você executa: # CREATE DATABASE xpto ENCODING ‘latin1’ TEMPLATE template0; ERROR: encoding “LATIN1″ does not match locale “pt_BR.UTF-8″ DETAIL: The chosen Continue lendo

[MS SQL Server] – Executando várias vezes um mesmo script

Em certas ocasiões, é necessário executar várias vezes uma mesma sequência de comandos no SQL Server (batch). Essa tarefa pode ser muito trabalhosa quando o número de repetições atinge grandes valores. Se os comandos forem sempre os mesmos e não houver mudança de parâmetros, pode-se utilizar o comando GO seguido pelo número de vezes que o comando será executado, respeitando a sintaxe abaixo: GO O comando GO não é um comando do SQL Server, mas sim uma instrução interpretada pelas interfaces de gerenciamento do SQL Continue lendo

[MS SQL Server] – UPDATE com incremento

O script abaixo realiza uma tarefa interessante. Através dele é possível atualizar as linhas de uma tabela (ou um conjunto de linhas, caso um filtro seja aplicado) com valores incrementais (o valor inicial e o incremento podem ser definidos). — Criando tabela temporária para testes CREATE TABLE #tmp (id int primary key identity(1,1), counter int default 0) GO — Inserindo dados na tabela INSERT INTO #tmp DEFAULT VALUES GO 10 — Veja como está a tabela SELECT * FROM #tmp — PREENCHENDO O CAMPO counter Continue lendo