Mostrando postagens com marcador Oracle. Mostrar todas as postagens
Mostrando postagens com marcador Oracle. Mostrar todas as postagens

quinta-feira, 24 de março de 2011

Objetos em Lock - Oracle

Aqui vai um script que para identificar os objetos que estão em lock no banco:

OBS.: Para executar este script é necessario estar logado com o usuario SYS.


– Busca objeto em lock
select
distinct to_name object_locked
from
v$object_dependency
where
to_address in
(
select
w.kgllkhdl address
from
dba_kgllock w,
dba_kgllock h,
v$session w1,
v$session h1
where
(((h.kgllkmod != 0) and (h.kgllkmod != 1)
and ((h.kgllkreq = 0) or (h.kgllkreq = 1)))
and
(((w.kgllkmod = 0) or (w.kgllkmod= 1))
and ((w.kgllkreq != 0) and (w.kgllkreq != 1))))
and w.kgllktype = h.kgllktype
and w.kgllkhdl = h.kgllkhdl
and w.kgllkuse = w1.saddr
and h.kgllkuse = h1.saddr
)
– Busca sessoes que estao esperando liberar tabela. Traz database, usuario, tabela de espera, status sessao, maquina, aplicativo, hora logon
SELECT LPAD(‘ ‘, (level-1)*2, ‘ ‘) || NVL(s.username, ‘(oracle)’) AS username,
s.osuser,
s.sid,
s.serial#,
s.lockwait,
s.status,
s.module,
s.machine,
s.program,
TO_CHAR(s.logon_Time,’DD-MON-YYYY HH24:MI:SS’) AS logon_time
FROM v$session s
CONNECT BY PRIOR s.sid = s.blocking_session
START WITH s.blocking_session IS NULL;
—- Busca Tabelas que estao em uso, traz sessao, usuario, terminal, tabela
select lc.sid, s.serial#, ob.owner, ob.object_name TABELA_LOCADA, s.USERNAME, s.OSUSER, s.terminal
from v$lock lc, dba_objects ob, v$session s
where lc.ID1 = ob.object_id and
lc.SID = s.SID
AND S.OSUSER<>'SYSTEM'


-- Autor: André Weber --

sexta-feira, 18 de fevereiro de 2011

Facilitador de Scripts – Oracle

Alguns scripts para facilitar a programação PL/SQL em Oracle:


 -- >>>>> Abre os campos sem alias <<<<<
   
 set pagesize 500;  
   
 select lower(RPAD(T.COLUMN_NAME,  
   
 20,  
   
 ' ') || ',-- ' || t.DATA_TYPE || '(' || case  
   
 when t.DATA_TYPE = 'NUMBER' then  
   
 T.DATA_PRECISION || ',' || T.DATA_SCALE  
   
 else  
   
 cast(T.DATA_LENGTH as varchar2(10))  
   
 end )|| ')' Coluna  
   
 from user_tab_columns t  
   
 where upper(t.TABLE_NAME) = upper('&NOME_TABELA')  
   
 order by t.COLUMN_ID  


   
 -- >>>> Abre os campos com alias <<<<
   
 set pagesize 500;  
   
 select '&alias'||'.'||lower(RPAD(T.COLUMN_NAME,  
   
 20,  
   
 ' ') || ',– ' || t.DATA_TYPE || '(' || case  
   
 when t.DATA_TYPE = 'NUMBER' then  
   
 T.DATA_PRECISION || ',' || T.DATA_SCALE  
   
 else  
   
 cast(T.DATA_LENGTH as varchar2(10))  
   
 end) || ')' Coluna  
   
 from user_tab_columns t  
   
 where upper(t.TABLE_NAME) = upper('&NOME_TABELA')  
   
 order by t.COLUMN_ID  
   


 -- >>>>> Faz a lista padrão para o insert <<<<<
   
 select RPAD(case T.DATA_TYPE  
   
 when 'VARCHAR2' then  
   
 CHR(39) || ' ' || CHR(39)  
   
 when ‘CHAR’ then  
   
 CHR(39) || ' ' || CHR(39)  
   
 when 'NUMBER' then  
   
 '0'  
   
 when 'DATE' then  
   
 'NULL'  
   
 else  
   
 ' NÃO DEFINIDO '  
   
 end || ',',  
   
 20,  
   
 ' ') || ' – ' || T.COLUMN_NAME || ' '||t.DATA_TYPE||'(' || case  
   
 when t.DATA_TYPE = 'NUMBER' then  
   
 T.DATA_PRECISION || ',' || T.DATA_SCALE  
   
 else  
   
 cast(T.DATA_LENGTH as varchar2(10))  
   
 end || ')' Coluna  
   
 from user_tab_columns t  
   
 where t.TABLE_NAME = upper('&NOME_TABELA')  
   
 order by t.COLUMN_ID  


   
 -- >>>>> Faz a lista para o insert com os proprios campos da tabela.  
 -- Utilizado quando se le um registro e se cria outro praticamente igual..  
 -- ai só se muda os campos desejados <<<<<  
   
 select lower( RPAD('&Alias'||'.'||T.COLUMN_NAME,25,' ')||', — ' || T.COLUMN_NAME || ' — '||t.DATA_TYPE||'(' || case  
   
 when t.DATA_TYPE = 'NUMBER' then  
   
 T.DATA_PRECISION || ',' || T.DATA_SCALE  
   
 else  
   
 cast(T.DATA_LENGTH as varchar2(10))  
   
 end || ')') Coluna  
   
 from user_tab_columns t  
   
 where t.TABLE_NAME = upper('&NOME_TABELA')  
   
 order by t.COLUMN_ID  
   
 -- Autor: Djeison Mickael --